Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1894 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Obtenir positions pieces dans CatiaV5R18 VB

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Obtenir positions pieces dans CatiaV5R18 VB

n°1895093
PeterSteve​n
Posté le 15-06-2009 à 11:21:35  profilanswer
 

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: !

mood
Publicité
Posté le 15-06-2009 à 11:21:35  profilanswer
 

n°1895153
produvba
Posté le 15-06-2009 à 14:00:22  profilanswer
 

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

n°1895174
PeterSteve​n
Posté le 15-06-2009 à 14:29:27  profilanswer
 

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

n°1895184
produvba
Posté le 15-06-2009 à 14:45:32  profilanswer
 

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é,

n°1895195
PeterSteve​n
Posté le 15-06-2009 à 15:03:48  profilanswer
 

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:

n°1897028
PeterSteve​n
Posté le 19-06-2009 à 16:40:49  profilanswer
 

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.

n°2299815
eyefighter
Posté le 26-04-2017 à 09:43:13  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Obtenir positions pieces dans CatiaV5R18 VB

 

Sujets relatifs
Puissance 4 VB.net[VB] Afficher un fichier CSV
[VB] accès base SQL via "class Linq to SQL"Connexion SqlPlus via VB
[VB.Net Express 2008] Problème debuggerAffichage résultat requête Select depuis code VB
Recherche V en VBCréation de feuille en masse à renomer sous VB
licence VB 6.0 proInterfacage C/Fortran sous VB .Net
Plus de sujets relatifs à : Obtenir positions pieces dans CatiaV5R18 VB



Copyright © 1997-2016 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR