Catia : Répétition linéaire paramètrable

Catia : Répétition linéaire paramètrable - Infographie 3D - Graphisme

Marsh Posté le 09-01-2014 à 18:58:04    

Bonjour à tous,
Je viens vers vous car dans le cadre d'un projet étudiant, j'ai décider de paramétrer un ascenseur totalement paramétrable.
J'ai donc créer une structure dans laquelle l'ascenceur va se déplacer. or la dite structure représente la structure pour 1 étage d'un immeuble.
 
Or l'un des paramètres clé est le nombre d'étage de l’ascenseur. Je dois donc réussir à mettre en place une répétition linéaire de ma structure en fonction du nombre d'étage.
 
J'ai testé de réaliser une macro, en fixant une structure de base et en appelant une seconde pièce que je fixe à l'aide de la première. l'idée était de répéter cette opération à l'aide de la macro en empilant le nombre d'étage souhaitée. le problème est que la macro applique toujours les nouvelles contraintes à la première pièce appelée. est ce "réparable"? je vous joint le code :  
 

Code :
  1. Sub CATMain(NombreEtage As Integer)
  2. MsgBox "salut"
  3. For i = 1 To NombreEtage
  4. Dim productDocument1 As ProductDocument
  5. Set productDocument1 = CATIA.ActiveDocument
  6. Dim product1 As Product
  7. Set product1 = productDocument1.Product
  8. Dim products1 As Products
  9. Set products1 = product1.Products
  10. Dim arrayOfVariantOfBSTR1(0)
  11. arrayOfVariantOfBSTR1(0) = "\\uran01\blondela\NF15\Projet\cage d'ascenseur.CATProduct"
  12. Set products1Variant = products1
  13. products1Variant.AddComponentsFromFiles arrayOfVariantOfBSTR1, "All"
  14. Dim constraints1 As Constraints
  15. Set constraints1 = product1.Connections("CATIAConstraints" )
  16. Dim reference1 As Reference
  17. Set reference1 = product1.CreateReferenceFromName("Assemblage_etage/Produit1.1/pilier/!Selection_RSur:(Face:(Brp:(Pad.1;0:(Brp:(Sketch.3;7)));None:();Cf11:());Pad.1_ResultOUT;Z0;G2980)" )
  18. Dim reference2 As Reference
  19. Set reference2 = product1.CreateReferenceFromName("Assemblage_etage/Cage_ascenseur.1/pilier/!Selection_RSur:(Face:(Brp:(Pad.1;0:(Brp:(Sketch.3;7)));None:();Cf11:());Pad.1_ResultOUT;Z0;G2980)" )
  20. Dim constraint1 As Constraint
  21. Set constraint1 = constraints1.AddBiEltCst(catCstTypeDistance, reference1, reference2)
  22. Dim length1 As Length
  23. Set length1 = constraint1.Dimension
  24. length1.Value = 0#
  25. constraint1.Orientation = catCstOrientSame
  26. Set constraints1 = product1.Connections("CATIAConstraints" )
  27. Dim reference3 As Reference
  28. Set reference3 = product1.CreateReferenceFromName("Assemblage_etage/Cage_ascenseur.1/pilier/!Selection_RSur:(Face:(Brp:(Pad.1;0:(Brp:(Sketch.3;8)));None:();Cf11:());Pad.1_ResultOUT;Z0;G2980)" )
  29. Dim reference4 As Reference
  30. Set reference4 = product1.CreateReferenceFromName("Assemblage_etage/Produit1.1/pilier/!Selection_RSur:(Face:(Brp:(Pad.1;0:(Brp:(Sketch.3;8)));None:();Cf11:());Pad.1_ResultOUT;Z0;G2980)" )
  31. Dim constraint2 As Constraint
  32. Set constraint2 = constraints1.AddBiEltCst(catCstTypeDistance, reference3, reference4)
  33. Dim length2 As Length
  34. Set length2 = constraint2.Dimension
  35. length2.Value = 0#
  36. constraint2.Orientation = catCstOrientSame
  37. Set constraints1 = product1.Connections("CATIAConstraints" )
  38. Dim reference5 As Reference
  39. Set reference5 = product1.CreateReferenceFromName("Assemblage_etage/Cage_ascenseur.1/barre/!Selection_RSur:(Face:(Brp:(MultiPad.1;1:(Brp:(MultiPad.1_GeometricalElement3D.3;0)));None:();Cf11:());MultiPad.2_ResultOUT;Z0;G2980)" )
  40. Dim reference6 As Reference
  41. Set reference6 = product1.CreateReferenceFromName("Assemblage_etage/Produit1.1/barre/!Selection_RSur:(Face:(Brp:(MultiPad.1;1:(Brp:(MultiPad.1_GeometricalElement3D.3;0)));None:();Cf11:());MultiPad.2_ResultOUT;Z0;G2980)" )
  42. Dim constraint3 As Constraint
  43. Set constraint3 = constraints1.AddBiEltCst(catCstTypeDistance, reference5, reference6)
  44. Dim length3 As Length
  45. Set length3 = constraint3.Dimension
  46. length3.Value = i * 3300#
  47. constraint3.Orientation = catCstOrientSame
  48. Next
  49. End Sub


 
La seconde idée fut d'utiliser la multi instanciation. Mais dans ce cas, je ne retrouve pas dans les paramètre la valeur que j'ai appliqué pour le nombre d'instance. Est-ce possible?
 
J'ai également entendu parlé de la possibilité d'appelé une pièce à des points placé précédemment? effectivement possible?
 
merci d'avance pour votre aide!

Message cité 1 fois
Message édité par Tatoo911 le 09-01-2014 à 19:02:57
Reply

Marsh Posté le 09-01-2014 à 18:58:04   

Reply

Marsh Posté le 24-04-2014 à 10:34:28    

Tatoo911 a écrit :


La seconde idée fut d'utiliser la multi instanciation. Mais dans ce cas, je ne retrouve pas dans les paramètre la valeur que j'ai appliqué pour le nombre d'instance. Est-ce possible?
 
J'ai également entendu parlé de la possibilité d'appelé une pièce à des points placé précédemment? effectivement possible?
 
merci d'avance pour votre aide!


 
Bonjour,
 
Ce sont les création de références qui pointent toujours vers les même B-REP. Globalement, je suis assez réservé sur l'utilisation de B-Rep dans les macros, c'est vraiment pas simple à gérer.
 
Ton cas me semble assez bien approprié pour utiliser la fonction Reuse PAttern dans le workbench Assembly Design. Tu crées une part paramétrique où tu contrôles le nombre d'étage. En gros tu crées un point pour définir le rez de chaussée. Ensuite tu utilises l'outil Rectangular Pattern pour dupliquer des points et définir la position des étages supplémentaire.
Dans le produit, tu fixes ce squelette et tu inséres une fois ton bloc "étage" (Part ou produit) sur ton premier point (Rez de chaussée) avec les bonnes contraintes.
Ensuite, avec l'outil Reuse Pattern, CATIA va automatiquement insérer le bon nombre de blocs "étage" en suivant le pattern de ton squelette. Voir la doc pour le fonctionnement.

Reply

Sujets relatifs:

Leave a Replay

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