Chyps Posté(e) le 8 août 2012 Posté(e) le 8 août 2012 Bonjour,je suis en train d'écrire une macro qui renomme toutes les instances dans un CATProduct. J 'arrive très bien à le faire pour les instances sous le niveau le plus haut (c'est à dire les pièces, composants ou produits directement sous la tête d'arboressance) mais pas pour les niveaux inférieurs (exemple: une pièce d'un composant du produit de tête). Est-ce que quelqu'un a une idée, une piste? Plus concrètement, voici un exemple d'arboressance avec le code que j'utilise:Format D 'affichage de l'arbre ci-dessous: PartNumber [instance] Product1|-Part1 [instancePiece1]|-Part2 [instancePiece2]|-Product2 [instanceAsy2] => CATProdut ou Composant, c'est pareil.| |-Part3 [instancePiece3]| |-Part4 [instancePiece4]|-Part5 [instancePiece5] Dim prodProduitATraiter As Product Sub CATMain() 'Travailler avec le document actif dans CATIA, ici le produit "Product1" Set prodProduitATraiter = CATIA.ActiveDocument.Product 'Renommer l'instance "InstancePiece1" de la pièce "Part1" en "Part1.1" prodProduitATraiter.Products.Item(1).Name = "Part1.1" 'Fonctionne très bien 'Renommer l'instance d'un niveau inférieur, l'instance "InstancePiece3" de la pièce "Part3" en "Part3.1" prodProduitATraiter.Products.Item(3).Products.Item(1).Name = "Part3.1" 'Ne fonctionne pas du tout, comme si rien ne se passé. 'alors que le renommer en "InstancePiece4" (chose interdit par CATIA d'avoir deux instances indentiques sous le même niveau) génère bien une erreur. prodProduitATraiter.Products.Item(3).Products.Item(1).Name = "InstancePiece4" '(L'erreur se produit sur la R20 et pas sur la R17). 'Erreur: Run-time error '-2147467259 (80004005)': ' La méthode Name a échoué End Sub Pour info:prodProduitATraiter.Name = "Product1"prodProduitATraiter.Products.Item(1).Name = "InstancePiece1"prodProduitATraiter.Products.Item(1).PartNumber = "Part1"prodProduitATraiter.Products.Item(2).Name = "InstancePiece2"prodProduitATraiter.Products.Item(2).PartNumber = "Part2"prodProduitATraiter.Products.Item(3).Name = "InstanceAsy2"prodProduitATraiter.Products.Item(3).PartNumber = "Product2"prodProduitATraiter.Products.Item(3).Products.Item(1).Name = "InstancePiece3"prodProduitATraiter.Products.Item(3).Products.Item(1).PartNumber = "Part3"prodProduitATraiter.Products.Item(3).Products.Item(2).Name = "InstancePiece4"prodProduitATraiter.Products.Item(3).Products.Item(2).PartNumber = "Part4"prodProduitATraiter.Products.Item(4).Name = "InstancePiece5"prodProduitATraiter.Products.Item(4).PartNumber = "Part5" Comment renommer une instance d'un niveau inférieur? Merci davance,Chyps
alexiisc Posté(e) le 3 septembre 2012 Posté(e) le 3 septembre 2012 Bonjour, Je souhaiterais créer une macro permettant de renommer le début de chaque part de mes assemblage et gardant le rest deriere. Exemple:"BRIDE" ===> "PIECE_VALEO_DATE_BRIDE" Quelqu'un pourait m'aider? Merci
droopySCAT Posté(e) le 8 octobre 2012 Posté(e) le 8 octobre 2012 Bonjour Chyps, Pour renommer une arbo complète et descendre dans tous les niveaux enfants, il faut utiliser une procédure récursive (qui s'appelle elle-meme). @+ Pour Alexiisc : pourquoi postes-tu une question qui n'a rien à voir avec la première ? il faut ouvrir un autre post. 1
Chyps Posté(e) le 15 décembre 2012 Auteur Posté(e) le 15 décembre 2012 Bonjour, merci droopySCAT de ta réponse mais ce n'est pas la solution à mon problème mais effectivement j'ai utilisé ce type de procédé pour créer cette macro.Comme c'est un type de procédure récursive, ce sont les mêmes lignes de code qui sont lues mais elles ne fonctionnent pas dans les niveaux inférieurs du produit. Dans mon premier post, j'ai sorti la ligne qui pose problème et créé un exemple d'assemblage afin de mettre cette ligne en situation. Je vais essayer de reformuler mon problème en ciblant exactement ce qui m'intéresse: Pour cela, je vais décrire le CATProduct travaillé:- Démarrer CATIA V5- Fichier => Nouveau...- Choisir "Product" puis "OK"(Le CATProduct "Produit1" a été créé)- Sélectionner "Produit1" dans le graph- Insertion => Nouveau composant(Le composant "Produit2" a été créé dans "Produit1")- Sélectionner "Produit2" dans le graph- Insertion => Nouvelle pièce(La pièce "Pièce1" a été créé dans le composant "Produit2") Maintenant la question est :Comment renommer l'instance de la pièce "Pièce1" par VBA?(Pour info: l'instance de pièce "Pièce1" est actuellement "Pièce1.1") J'ai essayé de répondre avec ce code mais il ne fonctionne pas: Sub CATMain() Dim prodProduitActif As ProductDocument Set prodProduitActif = CATIA.ActiveDocument prodProduitActif.Product.Products.Item(1).Products.Item(1).Name = "Instance_de_piece1_renommee" End Sub L'instance est toujours égal à "Pièce1.1" est non à "Instance_de_piece1_renommee"
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant