Guten Morgen zusammen,
ich habe folgendes Problem.
Innerhalb einer Regel A werden nach und nach einige andere Regeln ausgeführt.
Zu beginn stehen dabei zwei wichtige Parameter "x" und "y" 0.
Regel A führt Regel B durch -> Regel B schreibt Werte in die beiden Parameter
Danach prüft Regel A ob sich die Werte geändert haben.
.. und genau hier komme ich nicht weiter. Die Prüfung verläuft immer negativ obwohl die Parameter ungleich 0 sind.
Ich habe die Formen
x = 10
y = 10
und
Parameter("x") = 10
Parameter("y") = 10
getestet.
Ebenfalls "iLogicVb.UpdateWhenDone = True" in Regel B und "Parameter.UpdateAfterChange = True" in beiden Regeln..
Lasse ich mir die beiden Parameter nach der Regel B ausgeben steht bei beiden 0 drin und Regel A wird abgebrochen. Schaue ich im Parameter-Fenster nach sind diese aber ungleich 0.
In einem Post vom Timon habe ich etwas dazu gelesen, aber diesen finde ich nicht mehr.. 😕
Eigentlich möchte ich nur Abfragen ob Regel B ohne Probleme durchlaufen ist also ohne "Inventor-Fehlermeldungen" und nur dann soll Regel A weiter durchlaufen werden. Vielleicht gibt es auch eine bessere Möglichkeit als die beiden Parameter abzufragen.
Gelöst! Gehe zur Lösung
Gelöst von Juergen_Wagner. Gehe zur Lösung
So wie ich das lesen, wird ein Parameter beim Regelstart gelesen und nach dem Regelende geschrieben. Bei Paramter("xxx") werden die Parameter wohl erst beim Aufruf gelesen.
VB.NET variables that are linked to numeric or non-numeric parameters. The variables are highlighted in blue:
When a rule starts running, iLogic reads the values for these parameters from the model into the rule. When the rule has finished running, iLogic saves the changed values back to the model.
Parameters accessed using the Parameter function. For example:
When you assign values using this method, the values are saved to the model immediately, before the next line in the rule runs. When you read a value using the Parameter function, it is immediately read from the Inventor model.
So wie ich das sehen, musst du in der Regel A die AKTUELLEN (durch Regel B geänderten) Parameter mittels Parameter("xxx") lesen (varA= Parameter("x") ) und nicht mittels VarA = x, weil iLogic die Parameterwerte VOR dem Regelstart in die Varnamen = Parameternamen schreibt und auch nicht mehr neu liest. Wohl aber bei Parameter("x"), wo der aktuelle Wert des Parameters ermittelt wird.
Funktioniert bei mir: D.h., msgbox 2 gibt die geänderte Werte aus Regel B aus
Regel A
x = Parameter("P1") y = Parameter("P2") MsgBox(x & "," & y) iLogicVb.RunRule("B") x = Parameter("P1") y = Parameter("P2") MsgBox(x & "," & y)
Regel B
Parameter("P1") =5 Parameter("P2") = 10
Juergen_Wagner schrieb:
...
So wie ich das sehen, musst du in der Regel A die AKTUELLEN (durch Regel B geänderten) Parameter mittels Parameter("xxx") lesen (varA= Parameter("x") ) und nicht mittels VarA = x, weil iLogic die Parameterwerte VOR dem Regelstart in die Varnamen = Parameternamen schreibt und auch nicht mehr neu liest..
Genau das.. ich habe die Parameter mittels varA = Parameter("x") geschrieben aber übersehen sie später in Regel A in der Form abzufragen
Sprich die Werte wurden nicht mehr neu in die Varnamen geschrieben..
Tausend Dank Jürgen!!
Sie finden nicht, was Sie suchen? Fragen Sie die Community oder teilen Sie Ihr Wissen mit anderen.