peter.petrelli Posté(e) le 18 mai 2007 Posté(e) le 18 mai 2007 Salut J'ai besoin d'aide, donc je suis en train de faire une macro pour gerer la position et l'orientation d'un part dans un product.Donc j'ai 6 paramétres pour chaque part dans mon product, et j'aimerai savoir comment fais ton pour sans rouvrir la macro on remet à jour les paramètres inscrit dans la macroEn gros exécuter une macro sans aller la chercher dans le menu d'avance merci [Edité le 28/5/2007 par peter.petrelli]
naurel Posté(e) le 21 mai 2007 Posté(e) le 21 mai 2007 Salut, Bon j'ai pas trop compris quel est ton but precis mais dans l'atelier knowledge advisor (si tu l'as) il y a une fonction reaction que tu ajoutes a ton Product, comme son nom l'indique, cette fonction reagit à un changement dans ton Product et execute des actions, notament des lignes de code VBscript. J'espère que ça t'aidera Naurel
peter.petrelli Posté(e) le 28 mai 2007 Auteur Posté(e) le 28 mai 2007 J'ai besoin d'une correction sur cette macro. Language="VBSCRIPT" Sub CATMain(Posit_table_x,Posit_table_y,Posit_table_z,Orien_table_alpha,Orien_table_beta,Orien_table_gamma) Dim productDocument1 As DocumentSet productDocument1 = CATIA.ActiveDocument Dim product1 As ProductSet product1 = productDocument1.Product Dim products1 As ProductsSet products1 = product1.Products Dim product2 As ProductSet product2 = products1.Item("table.1") Dim parameters1 As ParametersSet parameters1 = product1.Parameters Dim length1 As ParameterSet length1 = parameters1.Item("Posit_table_x") length1.Value = Posit_table_x Dim parameters2 As ParametersSet parameters2 = product2.Parameters Dim length2 As ParameterSet length2 = parameters1.Item("Posit_table_y") length2.Value = Posit_table_y Dim parameters3 As ParametersSet parameters3 = product2.Parameters Dim length3 As ParameterSet length3 = parameters1.Item("Posit_table_z") length3.Value = Posit_table_z Dim parameters4 As ParametersSet parameters4 = product2.Parameters Dim length4 As ParameterSet length4 = parameters1.Item("Orien_table_alpha") length4.Value = Orien_table_alpha Dim parameters5 As ParametersSet parameters5 = product2.Parameters Dim length5 As ParameterSet length5 = parameters1.Item("Orien_table_beta") length5.Value = Orien_table_beta Dim parameters6 As ParametersSet parameters6 = product2.Parameters Dim length6 As ParameterSet length6 = parameters1.Item("Orien_table_gamma") length6.Value = Orien_table_gamma Dim oAxisComponentsArray ( 11 ) product2.Position.GetComponents oAxisComponentsArray Dim iAxisComponentsArray( 11 ) ' x axis components iAxisComponentsArray( 0 ) = cos(Orien_table_alpha)*cos(Orien_table_beta) iAxisComponentsArray( 1 ) = sin(Orien_table_alpha)*cos(Orien_table_beta)*cos(Orien_table_gamma)+sin(Orien_table_beta)*sin(Orien_table_gamma) iAxisComponentsArray( 2 ) = cos(Orien_table_beta)*sin(Orien_table_alpha)*sin(Orien_table_gamma)-sin(Orien_table_beta)*cos(Orien_table_gamma) ' y axis components iAxisComponentsArray( 3 ) = -sin(Orien_table_alpha) iAxisComponentsArray( 4 ) = cos(Orien_table_alpha)*cos(Orien_table_gamma) iAxisComponentsArray( 5 ) = cos(Orien_table_alpha)*sin(Orien_table_gamma) ' z axis components iAxisComponentsArray( 6 ) = cos(Orien_table_alpha)*sin(Orien_table_beta) iAxisComponentsArray( 7 ) = sin(Orien_table_alpha)*sin(Orien_table_beta)*cos(Orien_table_gamma)-sin(Orien_table_gamma)*cos(Orien_table_beta) iAxisComponentsArray( 8 ) = sin(Orien_table_alpha)*sin(Orien_table_beta)*sin(Orien_table_gamma)+cos(Orien_table_beta)*cos(Orien_table_alpha) ' origin point coordinates iAxisComponentsArray( 9 ) = Posit_table_x iAxisComponentsArray( 10 ) = Posit_table_y iAxisComponentsArray( 11 ) = Posit_table_zProduct2.Position.SetComponents iAxisComponentsArray End Sub[/code] Donc en gros lorsque je lance cette macro une fenetre apparait je tape mes valeurs, et la macro s'occupe de modifier les valeur des paramètres et de positionner l'objet.Mais j'ai une erreur à la ligne 24 "length1.Value = Posit_table_x" Je sais pas qu'elle est le problème es ce que quelqu'un pourrai m'aider j'ai plus que 15 jours avant de rendre se projet. merci d'avance
naurel Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 Salut, faudrait que tu détailles parceque posté comme ça, ça donne pas envie. cordialement, naurel
peter.petrelli Posté(e) le 30 mai 2007 Auteur Posté(e) le 30 mai 2007 C'est bon j'ai travailler de mon coté et trouver la solution, c'était un problème d'espace ;) Sinon j'utilise la macro suivante pour modifier la position de mon objet mais j'ai un problème de déformation quand je modifie plus d'un angle. Dim iAxisComponentsArray( 11 ) ' x axis components iAxisComponentsArray( 0 ) = cos(Orien_table_alpha)*cos(Orien_table_beta) iAxisComponentsArray( 1 ) = sin(Orien_table_alpha)*cos(Orien_table_beta)*cos(Orien_table_gamma)+sin(Orien_table_beta)*sin(Orien_table_gamma) iAxisComponentsArray( 2 ) = cos(Orien_table_beta)*sin(Orien_table_alpha)*sin(Orien_table_gamma)-sin(Orien_table_beta)*cos(Orien_table_gamma) ' y axis components iAxisComponentsArray( 3 ) = -sin(Orien_table_alpha) iAxisComponentsArray( 4 ) = cos(Orien_table_alpha)*cos(Orien_table_gamma) iAxisComponentsArray( 5 ) = cos(Orien_table_alpha)*sin(Orien_table_gamma) ' z axis components iAxisComponentsArray( 6 ) = cos(Orien_table_alpha)*sin(Orien_table_beta) iAxisComponentsArray( 7 ) = sin(Orien_table_alpha)*sin(Orien_table_beta)*cos(Orien_table_gamma)-sin(Orien_table_gamma)*cos(Orien_table_beta) iAxisComponentsArray( 8 ) = sin(Orien_table_alpha)*sin(Orien_table_beta)*sin(Orien_table_gamma)+cos(Orien_table_beta)*cos(Orien_table_alpha) ' origin point coordinates iAxisComponentsArray( 9 ) = Posit_table_x iAxisComponentsArray( 10 ) = Posit_table_y iAxisComponentsArray( 11 ) = Posit_table_z Product2.Position.SetComponents iAxisComponentsArray Quelqu'un sait pour quoi l'objet se déforme?
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