Inventor (2016): Parameter innerhalb einer iLogic-Regel aktualisieren

Inventor (2016): Parameter innerhalb einer iLogic-Regel aktualisieren

fullevent
Advisor Advisor
1.364Aufrufe
2Antworten
Nachricht 1 von 3

Inventor (2016): Parameter innerhalb einer iLogic-Regel aktualisieren

fullevent
Advisor
Advisor

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.


Aleksandar Krstic
Produkt- und Projektmanager

0 „Gefällt mir“-Angaben
Akzeptierte Lösungen (1)
1.365Aufrufe
2Antworten
Antworten (2)
Nachricht 2 von 3

Juergen_Wagner
Advisor
Advisor
Akzeptierte 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.

 

https://knowledge.autodesk.com/support/inventor-products/learn-explore/caas/CloudHelp/cloudhelp/2015...

 

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

 

Nachricht 3 von 3

fullevent
Advisor
Advisor

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 Verlegener Smiley

Sprich die Werte wurden nicht mehr neu in die Varnamen geschrieben.. 

 

Tausend Dank Jürgen!!

 


Aleksandar Krstic
Produkt- und Projektmanager