Obtenir positions pieces dans CatiaV5R18 VB

Obtenir positions pieces dans CatiaV5R18 VB - VB/VBA/VBS - Programmation

Marsh Posté le 15-06-2009 à 11:21:35    

Bonjour à tous,
 
Je vous explique mon problème, j'ai créé un assemblage sur CATIA et je cherche à récupérer de manière automatique sous forme de fichier texte les positions des centres de gravité de toutes les pièces.
C'est à dire automatiser la commande "measure inertia" pour toutes les pièces.
J'ai essayé de faire une macro moi même sur VBA mais malheureusement elle ne fonctionne pas, la voici... :bounce:  
 
Sub CATMain()
 
Dim pDoc As ProductDocument
Set pDoc = CATIA.ActiveDocument
 
Dim p As Product
Dim Values(2)
Dim n As Integer
 
n = pDoc.Product.Products.Count
 
Open "C:\Documents and Settings\rgenest\Desktop\CATData.txt" For Output As #1
 
For i = 1 To n
 
 Print #1, pDoc.Product.Products.Item(i).Name
 Print #1, "Masse (en kg)"
 Print #1, pDoc.Product.Products.Item(i).Analyze.Mass
 
pDoc.Product.Products.Item(i).Analyze.GetGravityCenter Values
 
 Print #1, FormatNumber(Values(0))
 Print #1, FormatNumber(Values(1))
 Print #1, FormatNumber(Values(2))
 
Next
 
Close #1
 
End Sub

 
J'obtint alors une missive d'erreur : "Function or interface marked as restricted, or the function uses an automation not supported in Visual Basic"
Damned!! :fou:  
 
Merci d'avance pour vos réponses les plus promptes  :jap: !

Reply

Marsh Posté le 15-06-2009 à 11:21:35   

Reply

Marsh Posté le 15-06-2009 à 14:00:22    

Bonjour,
 
ça c'est une question technique !!
A quel moment apparaît l'erreur: à la compilation (c'est à dire quand le curseur arrive sur la "sub" ) ou sur une ligne bien précise (je suppose lorsqu'on fait Set pDoc = Catia.activedocument?
 
Pro du VBA

Reply

Marsh Posté le 15-06-2009 à 14:29:27    

Merci de répondre aussi promptement!
 
En fait, l'erreur apparait sur une ligne bien précise (cf la suite) et sélectionne "GetGravityCenter".
 
pDoc.Product.Products.Item(i).Analyze.GetGravityCenter Values

Reply

Marsh Posté le 15-06-2009 à 14:45:32    

Re-bonjour,
 
Alors là j'avoue que je ne sais quoi suggérer. Sinon que quelque chose m'étonne: pDoc est un objet Catia, je ne connais pas les méthodes / propriétés associées. Ce que je ferais à ta place c'est
* vérifier si GetGravityCenter est bien une méthode (ce qui semble d'après la syntaxe indiquée)
* ensuite de vérifier les arguments.
* J'évite habituellement les noms de variables tels que Value / Values etc qui peuvent faire confusion avec des mots-clés de VBA ou des propriétés...
C'est tout ce que je peux faire !
Désolé,

Reply

Marsh Posté le 15-06-2009 à 15:03:48    

Yep, je vais suivre tes conseils.
Merci encore.
 
PS: Si jamais il te vient en tete une autre maniere d'obtenir les coordonnées, je suis preneur!  :bounce:

Reply

Marsh Posté le 19-06-2009 à 16:40:49    

J'ai eu la réponse pour ceux que ca interesse, voila le code qui fonctionne :
 
Dim nb_intances As Integer
nb_instances = pDoc.Product.Products.Count
 
Dim instance As Product
Dim position_instance
Dim analyse_instance
 
Open "C:\Texte.txt" For Output As #1
 
Set instance = pDoc.Product.Products.Item(i)
Set analyse_instance = instance.Analyze
Set position_instance = instance.position
 
analyse_instance.GetGravityCenter GC
 
position_instance.GetComponents Ori
 
Print #1, "Position"
Print #1, FormatNumber(Ori(0))
Print #1, FormatNumber(Ori(1))
Print #1, FormatNumber(Ori(2))
Print #1, FormatNumber(Ori(3))
Print #1, FormatNumber(Ori(4))
Print #1, FormatNumber(Ori(5))
Print #1, FormatNumber(Ori(6))
Print #1, FormatNumber(Ori(7))
Print #1, FormatNumber(Ori(8))
Print #1, FormatNumber(Ori(9))
Print #1, FormatNumber(Ori(10))
Print #1, FormatNumber(Ori(11))
 
Print #1, "Centre de gravité"
Print #1, FormatNumber(GC(0))
Print #1, FormatNumber(GC(1))
Print #1, FormatNumber(GC(2))
 
Next
 
Print #1, "</scene>"
 
Close #1
 
End Sub

 
Ori fournit la matrice d'orientation du repère de la pièce exprimé dans celui de l'assemblage ainsi que la position du centre du repère pièce.
GC fournit la position du centre de gravité de la pièce dans le repère de l'assemblage.

Reply

Marsh Posté le 26-04-2017 à 09:43:13    

bonjours
 
je fait aussi une macro pour obtenir le centre de gravité de toute les pièce d'un assemblage. mais j'ai un problème avec la fonction "GetGravityCenter"
 
a tu ue le message d'erreur : "function or interface marked as restricted, or the function uses an automation type not supported in visyal basic" ?
si oui, comment la tu corrigé ?
 
merci d'avance

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed