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 :
- Sub CATMain(NombreEtage As Integer)
- MsgBox "salut"
- For i = 1 To NombreEtage
- Dim productDocument1 As ProductDocument
- Set productDocument1 = CATIA.ActiveDocument
- Dim product1 As Product
- Set product1 = productDocument1.Product
- Dim products1 As Products
- Set products1 = product1.Products
- Dim arrayOfVariantOfBSTR1(0)
- arrayOfVariantOfBSTR1(0) = "\\uran01\blondela\NF15\Projet\cage d'ascenseur.CATProduct"
- Set products1Variant = products1
- products1Variant.AddComponentsFromFiles arrayOfVariantOfBSTR1, "All"
- Dim constraints1 As Constraints
- Set constraints1 = product1.Connections("CATIAConstraints" )
- Dim reference1 As Reference
- 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)" )
- Dim reference2 As Reference
- 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)" )
- Dim constraint1 As Constraint
- Set constraint1 = constraints1.AddBiEltCst(catCstTypeDistance, reference1, reference2)
- Dim length1 As Length
- Set length1 = constraint1.Dimension
- length1.Value = 0#
- constraint1.Orientation = catCstOrientSame
- Set constraints1 = product1.Connections("CATIAConstraints" )
- Dim reference3 As Reference
- 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)" )
- Dim reference4 As Reference
- 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)" )
- Dim constraint2 As Constraint
- Set constraint2 = constraints1.AddBiEltCst(catCstTypeDistance, reference3, reference4)
- Dim length2 As Length
- Set length2 = constraint2.Dimension
- length2.Value = 0#
- constraint2.Orientation = catCstOrientSame
- Set constraints1 = product1.Connections("CATIAConstraints" )
- Dim reference5 As Reference
- 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)" )
- Dim reference6 As Reference
- 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)" )
- Dim constraint3 As Constraint
- Set constraint3 = constraints1.AddBiEltCst(catCstTypeDistance, reference5, reference6)
- Dim length3 As Length
- Set length3 = constraint3.Dimension
- length3.Value = i * 3300#
- constraint3.Orientation = catCstOrientSame
- Next
- 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!