Aller au contenu

Messages recommandés

Posté(e)

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 macro

En gros exécuter une macro sans aller la chercher dans le menu

 

d'avance merci

 

[Edité le 28/5/2007 par peter.petrelli]

Posté(e)

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

Posté(e)

 

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 Document

Set productDocument1 = CATIA.ActiveDocument

 

Dim product1 As Product

Set product1 = productDocument1.Product

 

Dim products1 As Products

Set products1 = product1.Products

 

Dim product2 As Product

Set product2 = products1.Item("table.1")

 

Dim parameters1 As Parameters

Set parameters1 = product1.Parameters

 

Dim length1 As Parameter

Set length1 = parameters1.Item("Posit_table_x")

 

length1.Value = Posit_table_x

 

Dim parameters2 As Parameters

Set parameters2 = product2.Parameters

 

Dim length2 As Parameter

Set length2 = parameters1.Item("Posit_table_y")

 

length2.Value = Posit_table_y

 

Dim parameters3 As Parameters

Set parameters3 = product2.Parameters

 

Dim length3 As Parameter

Set length3 = parameters1.Item("Posit_table_z")

 

length3.Value = Posit_table_z

 

Dim parameters4 As Parameters

Set parameters4 = product2.Parameters

 

Dim length4 As Parameter

Set length4 = parameters1.Item("Orien_table_alpha")

 

length4.Value = Orien_table_alpha

 

Dim parameters5 As Parameters

Set parameters5 = product2.Parameters

 

Dim length5 As Parameter

Set length5 = parameters1.Item("Orien_table_beta")

 

length5.Value = Orien_table_beta

 

Dim parameters6 As Parameters

Set parameters6 = product2.Parameters

 

Dim length6 As Parameter

Set 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_z

Product2.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

 

Posté(e)

 

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?

 

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é