Aller au contenu

Macro enregistrement catia


Messages recommandés

Posté(e)

Bonjour,

 

Je suis néophyte dans la programmation catia.

Je cherche actuellement à créer une macro catia capable d'enregistrer un product et tous ses composants (part et product) à un endroit précis.

 

Mon but est d'automatiser la création de plusieurs puis l'instanciation de composants issus d'un même modèle mais paramétrés différemment (en l'occurence des postes d'assemblage sur une ligne de production).

 

Je bloque actuellement sur l'enregistrement des catpart et catproduct.

Voici où j'en suis:

 

Sub CATMain()

 

Dim productDocument1 As ProductDocument

Set productDocument1 = CATIA.ActiveDocument

 

nomrep = "E:\bibliotheque\" & productDocument1.Product.PartNumber

MkDir nomrep

 

For Each ProductDocument In CATIA.Documents

Dim produit As Product

Set produit = ProductDocument.Product

On Error Resume Next

produit.saveas "E:\bibliotheque\" & produit.PartNumber & ".catproduct"

Next

 

End Sub

 

Le problème est que d'une part cette macro ne marche pas et de l'autre qu'elle ne prend pas en compte les catpart.

J'ai entendu parler de la fonction exportdata, cela marcherait-il?

 

Merci de votre aide.

 

Paul

Posté(e)

La méthode SaveAs prend en paramètre un objet de type Document et non un objet de type Product.

Essayez avec un truc du style :

ProductDocument.saveas "C:\tmp\test\" & ProductDocument.Name

L'extension étant incluse dans le ProductDocument.Name, cette métode marchera à la fois pour les CATPart et CATProduct.

Vous pouvez aussi récupérer l'extension du fichier sur le ProductDocument.Name à l'aide des fonctions de manipulations de chaines de VBScript et construire le nom de fichier avec le PartNumber + extension.

 

Vous devrez alors faire

ProductDocument.saveas "C:\tmp\test\" & NomDeFichier

 

La méthode ExportData est plutôt à utiliser dans le cas où vous voudiez enregister un CATPart en tant que wrl par exemple.

 

Bonne continuation,

 

 

Posté(e)

Merci beaucoup pour l'astuce.

J'avais déjà avancé sur le sujet, avec des boucles du type:

 

For Each PartDocument In CATIA.Documents

On Error Resume Next

PartDocument.ExportData nomrep & "\" & PartDocument.Product.PartNumber & ".CATPart", "CATPart"

Next

 

For Each ProductDocument In CATIA.Documents

On Error Resume Next

ProductDocument.ExportData nomrep & "\" & ProductDocument.Product.PartNumber & ".CATProduct", "CATProduct"

Next

 

Cette boucle permétait de sauter les erreurs d'enregistrements des products en part et inversement, même si, en soit elle n'était pas très belle...

 

Ce que tu m'as dit semble fonctionner, à un détail près:

je n'arrive pas à changer le "productdocument.name", qui ne semble pas correspondre au product.partnumber. En effet, effectuant plusieurs changements de partnumber et plusieurs enregistrements à la suite, dans une boucle, les product.name sont similaires aux noms de fichier du départ

 

Cela doit provenir des multiples confusions que je fais entre les productdocument, les product, les products....c'est pas trop clair dans ma tête...

 

Sinon, au cas où, pour récupérer l'extension d'un product ou part:

ext = ProductDocument.Name

ext = StrReverse(ext)

o = InStr(1, ext, ".")

ext = Left(ext, o - 1)

ext = StrReverse(ext)

 

Merci pour l'aide!

 

Posté(e)

bonjour !

 

Ne peux-tu pas utiliser InStrRev au lieu de InStr ? Il te donnera la position du point en partant de la fin, ce qui évite de retourner deux fois ext avec StrReverse, tu utilise ensuite Right a la place de Left.

 

Bon ça change rien mais tu gagnes deux lignes et c'est plus facile à comprendre comme ça peut être :)

 

Bonne continuation

Posté(e)

Le but n'est pas de changer le "productdocument.name" mais de construire le nom du document sur le disque à partir de productdocument.name (pour l'extension) et de produit.PartNumber

Exemple ici avec l'extension "en dur", juste à remplacer ".CATProduct" par ext

 

For Each ProductDocument In CATIA.Documents

Dim produit As Product

Dim NomDeFichier

Set produit = ProductDocument.Product

NomDeFichier = produit.PartNumber & ".CATProduct"

ProductDocument.saveas "C:\tmp\test\" & NomDeFichier

 

Vous allez obtenir le fichier "C:\tmp\test\PartNumber.CATProduct"

 

A noter que "For Each PartDocument In CATIA.Documents" et "For Each ProductDocument In CATIA.Documents" sont équivalents, ce qui signifie qu'un CATPart est un ProductDocument et un CATProduct est un PartDocument !!! (je sais, c'est pas logique mais c'est comme ça...) Vous parcourez donc votre assemblage deux fois pour rien....

 

 

 

 

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité