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.
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.
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
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.
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.
Bonjour, est-ce que tu as essayé :
ilogicvb.UpdateWhenDone = True
Vincent.
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
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 = Trued7 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
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.
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.
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.
Bonjour @MKE_Howard, votre problème est-il toujours d'actualité ? N'hésitez pas à nous tenir au courant! Merci et bonnes fêtes
Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.