Communauté
Inventor - Français
Bienvenue sur les forums Inventor d’Autodesk. Partagez vos connaissances, posez des questions, collaborez sur des idées, et explorez les sujets Inventor populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

Problème EventTrigger et rule

12 RÉPONSES 12
Répondre
Message 1 sur 13
MKE_Howard
155 Visites, 12 Réponses

Problème EventTrigger et rule

Bonjour, désolé d'avance si certains termes sont en anglais (mon IV n'est pas en français). Voici la situation :

 

J'ai un assemblage avec une règle "Update" qui me permet d'ajuster et de mettre à jour les dimensions de toutes mes pièces. J'ai placé cette règle dans l'Event Trigger "Any Model/User Parameter Change". Le problème est que le changement de paramètre se fait dans cette même règle, ce qui empêche l'Event Trigger de fonctionner correctement (je crois).

 

Pour résoudre cela, j'ai créé une autre règle qui contient un code permettant de lancer ma règle "Update". Ensuite, j'ai placé cette nouvelle règle dans mon Event Trigger et tout fonctionne. Ce workflow me semble un peu étrange, et je me demandais s'il n'existait pas une solution plus logique. Merci.

 

 

12 RÉPONSES 12
Message 2 sur 13
Fabian_perree
en réponse à: MKE_Howard

Bonjour @MKE_Howard,

 

Sans la régle ni le modéle c'est difficile de répondre.

 

Par contre tu n'as pas vraiment besoin de mettre ta régle Update dans un trigger.

En effet elle va se lancer seule à chaque changemetn de paramétre si elle n'est pas configurée différement, mais une nouvelle fois sans plus d'information c'est difficile de répondre précisément.

Fabian Perrée
Giùp.fr | LinkedIn

Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton Accepter la solution.

EESignature

Cliquez ici pour accéder à toutes mes formations en ligne
Inventor 2022 : Modélisation et documentation de systèmes mécaniques
Message 3 sur 13
MKE_Howard
en réponse à: Fabian_perree

Bonjour, oui désolé je ne peux rien partager 3D ou image, mais mon code je peux.

Parameter("LDP1200 PARAM:1", "LG_BANDE") = BT
Parameter("LDP1200 PARAM:1", "ANGLE_ST") = Angle
Parameter("LDP1200 PARAM:1", "LARG_FRAME_EXT") = Frame_Larg_Ext
Parameter("LDP1200 PARAM:1", "LARG_FRAME_INT") = Frame_Larg_Int
If Frame_Type = ("Channel") Then
	Feature.IsActive("LDP1200 PARAM:1", "Ex_Channel") = True
	Feature.IsActive("LDP1200 PARAM:1", "Ex_Inv_Channel") = False
	Feature.IsActive("LDP1200 PARAM:1", "Ex_FerAngle") = False
	Feature.IsActive("LDP1200 PARAM:1", "Ex_Inv_FerAngle") = False
	
ElseIf Frame_Type = ("Inv_Channel") Then
	Feature.IsActive("LDP1200 PARAM:1", "Ex_Channel") = False
	Feature.IsActive("LDP1200 PARAM:1", "Ex_Inv_Channel") = True
	Feature.IsActive("LDP1200 PARAM:1", "Ex_FerAngle") = False
	Feature.IsActive("LDP1200 PARAM:1", "Ex_Inv_FerAngle") = False
	
ElseIf Frame_Type = ("Ferangle") Then
	Feature.IsActive("LDP1200 PARAM:1", "Ex_Channel") = False
	Feature.IsActive("LDP1200 PARAM:1", "Ex_Inv_Channel") = False
	Feature.IsActive("LDP1200 PARAM:1", "Ex_FerAngle") = True
	Feature.IsActive("LDP1200 PARAM:1", "Ex_Inv_FerAngle") = False
	
Else
	Feature.IsActive("LDP1200 PARAM:1", "Ex_Channel") = False
	Feature.IsActive("LDP1200 PARAM:1", "Ex_Inv_Channel") = False
	Feature.IsActive("LDP1200 PARAM:1", "Ex_FerAngle") = False
	Feature.IsActive("LDP1200 PARAM:1", "Ex_Inv_FerAngle") = True

End If

En gros LDP1200 PARAM:1 est une pièce dans mon assemblage qui agit de réference. Je viens modifier les dimensions de cette pièce directement de mon assemblage et tout fonctionne. Mon problème réside dans le 3D. J'ai des contraintes qui sont liés à ces paramètres et ils ne sont pas mis à jour. Je suis obligé de "Re Run" la règle pour que toutes mes pièces se replace au bon endroit. En gros, mon bouton update, c'est ma rule. J'espère avoir été clair. Merci   

Message 4 sur 13
Fabian_perree
en réponse à: MKE_Howard

Malheureusement sans modèle pour tester on ne peut pas faire beaucoup mieux, essaye de nous envoyer un modèle simplifier.

 

Essaye de mettre

 

ThisApplication.ActiveDocument.Update()

 

A la fin de ta règle 

 

Jette un œil au select case aussi ça peut faciliter tes codes à l'avenir

Fabian Perrée
Giùp.fr | LinkedIn

Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton Accepter la solution.

EESignature

Cliquez ici pour accéder à toutes mes formations en ligne
Inventor 2022 : Modélisation et documentation de systèmes mécaniques
Message 5 sur 13
MKE_Howard
en réponse à: Fabian_perree

Salut, ouin j'ai essayé de reproduire la situation avec un modèle simplifié, mais j'y arrive pas... J'ai aussi essayé "ThisApplication.ActiveDocument.Update()" sans succès, mais pour l'instant, mon workaround fonctionne donc pas de stress. J'ai une petite demi heure cette après midi je vais essayer de reproduire un petit modèle encore, mais sinon merci quand même.

Message 6 sur 13
vpeuvion
en réponse à: MKE_Howard

Bonjour, est-ce que tu as essayé :

ilogicvb.UpdateWhenDone = True

 Vincent.

Message 7 sur 13
MKE_Howard
en réponse à: vpeuvion

Bonjour, oui j'ai essayer sans succès, mais merci.

 

Je crois avoir trouvé une partie du problème donc voici un peu plus de détail pour mieux comprendre : 

 

J'ai un sketch avec des dimensions références dans ma sous-pièce "LDP1200 PARAM". Lorsque je change certaines informations comme "Angle", les dimensions références de mes sketchs changent, passe de 10 à 20 par exemple. Cette mesure "10" est utilisé comme contrainte (Mate: 10 in).

Quand je vais changer "Angle", mon sketch affiche une dimensions de 20, mais la contrainte dans mon assemblage reste à 10. C'est la que je suis obligé de ReRun ma règle. Quelqu'un aurait une idée de comment régler ca?

 

Merci bien

Message 8 sur 13
MKE_Howard
en réponse à: Fabian_perree

Fabian, Voici une vidéo dans laquelle jai reproduis le problème.

On voit 2 blocs contraint avec un User Parameter "Test" ainsi qu'une pièce avec un sketch réference ayant 2 dimensions: 7in qui est Driven et 8in. Dans ma règle:

Test = Parameter("REF:1", "d7")
Parameter("REF:1", "d8") = BT

iLogicVb.UpdateWhenDone = True

d7 est lié à "11" 

d8 est lié à "12"

Quand je modifie d8, d7 bouge aussi, car c'est Driven. Du même coup, la contrainte entre mes 2 blocs devrait donc suivre d7 ce qui n'arrive pas. Je dois donc ReRun ma rule. J'espère que c'est plus clair. Merci

 

Message 9 sur 13
Fabian_perree
en réponse à: MKE_Howard

Tu peux transmettre les fichiers stp ?

Fabian Perrée
Giùp.fr | LinkedIn

Ce post vous a été utile ? N'hésitez pas à aimer ce post.
Ce post a-t-il répondu à votre question ? Cliquez sur le bouton Accepter la solution.

EESignature

Cliquez ici pour accéder à toutes mes formations en ligne
Inventor 2022 : Modélisation et documentation de systèmes mécaniques
Message 10 sur 13
MKE_Howard
en réponse à: Fabian_perree

Voila

Message 11 sur 13
vpeuvion
en réponse à: MKE_Howard

Bonjour, j'ai manipulé tes fichiers et pour moi le comportement que tu as est normal.

Dans la règle, tu modifies le paramètre Test de l'assemblage qui devient égal à d7 de la pièce.

Ensuite, tu modifies le paramètre d8 de la pièce qui devient égal au paramètre BT de l'assemblage.

Le paramètre d7 est lié à d8.

Tu modifies un paramètre de l'assemblage par rapport à celui d'une pièce, ensuite tu modifies un paramètre de la pièce par rapport à celui de l'assemblage, les deux paramètres de la pièce étant dépendants et tout ça déclenché par la modification d'un paramètre de l'assemblage.

Je ne sais pas si c'est lié à l'exemple, mais ça me parait très compliqué.

Essaye de remplacer la règle par celle-ci et tu verras mieux ce qui se passe pour les paramètres quand tu executes la règle manuellement une deuxième fois.

MessageBox.Show("Test :" & Test)
Test = Parameter("REF:1", "d7")
MessageBox.Show("Test :" & Test)
MessageBox.Show("d8 :" & Parameter("REF:1", "d8"))
Parameter("REF:1", "d8") = BT
MessageBox.Show("d8 :" & Parameter("REF:1", "d8"))

J'espère avoir pu t'aider.

Vincent. 

Message 12 sur 13
manon_puel
en réponse à: MKE_Howard

Bonjour @MKE_Howard 

Si une des réponses résout votre problème ou vous a permis de mieux le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton  APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Cela facilitera la navigation de nos utilisateurs qui pourront directement atteindre la solution

Sachez qui si vous avez marqué une réponse comme solution par erreur, vous pouvez annuler ce marquage en cliquant sur le menu du fil (les trois points verticaux) et choisir "pas la solution"
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.


Manon Puel animatrice de la communauté francophone
Message 13 sur 13
manon_puel
en réponse à: MKE_Howard

Bonjour @MKE_Howard, votre problème est-il toujours d'actualité ? N'hésitez pas à nous tenir au courant! Merci et bonnes fêtes


Manon Puel animatrice de la communauté francophone

Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums  

Autodesk Design & Make Report