iLogic bietet Bedingungsanweisungen, die Sie im Dialogfeld Regel bearbeiten verwenden können.
Fügen Sie die Anweisungen in Regeln (kleine Visual Basic-Programme) ein, die Sie für Ihr Modell definieren. Mithilfe von Bedingungsanweisungen wie If-Then-Else können Regeln zum Durchführen von Aktionen anhand bestimmter Kriterien eingesetzt werden.
Bei einer If-Then-Else-Anweisung wird ein Satz von Befehlen ausgeführt, wenn eine Bedingung wahr ist. Wenn die Bedingung falsch ist, wird ein anderer Satz von Befehlen ausgeführt.
Nachdem die Wahr- oder Falsch-Anweisungen ausgeführt wurden, wird die Programmsteuerung der nächsten Anweisung aufgenommen.
In iLogic können Sie zur Implementierung der If-Then-Else-Struktur ein Blockstruktur oder eine mehrzeilige Struktur verwenden.
Beispiel:
If size = “small” Then length = 6.0 Else length = 12 End If
Wenn der bedingte Ausdruck wahr ist, werden die Anweisungen zwischen den Schlüsselwörtern Then und Else ausgeführt. Die Anweisungen zwischen den Schlüsselwörtern Else und End If werden umgangen. Wenn der bedingte Ausdruck false lautet, werden die Anweisungen zwischen den Schlüsselwörtern Else und End If ausgeführt. Die Anweisungen zwischen den Schlüsselwörtern Then und Else werden umgangen. In jedem Fall wird die Programmsteuerung mit der Anweisung nach der End If-Anweisung fortgesetzt.
Bei einer If-Then-Else-Anweisung werden Befehle ausgeführt, unabhängig davon, ob die Bedingung true oder false ist. Manchmal aber sollen ein oder mehrere Befehle nur dann ausgeführt werden, wenn eine Bedingung true ist. Wenn die Bedingung false ist, soll jedoch kein Befehl ausgeführt werden.
Sie können den Else-Teil aus der If-Struktur auslassen. Beispiel:
If size = “small” Then length = 6.0 End If
Sie können auch Nullsätze oder leere Sätze von Befehlen in einer Blockstruktur einer If-Anweisung verwenden. Sie können beispielsweise festlegen, dass eine Aktion nur unter bestimmten Bedingungen ausgeführt wird. Dies wird in folgendem Block veranschaulicht:
If length > 20 Then Else MessageBox.Show(" Invalid Size.Length must be at least 20 in. ", "Title") End If
Wenn Sie einen leeren Satz von Befehlen verwenden, können Sie die Lesbarkeit verbessern, indem Sie einen Kommentar an Stelle der true-Anweisungen einfügen:
If length > 20 Then ’do nothing Else MessageBox.Show(" Invalid Size.Length must be at least 20 in ", "Title") End If
Obwohl die Blockstruktur der If-Anweisung die Lesbarkeit verbessert, lässt sich die If-Anweisung auch in nur eine Zeile schreiben. Dieses Format wird nicht für die End If-Anweisung verwendet.
Beispiele:
If length < 20 Then MessageBox.Show("Length is Too Short", "Title") If mass < 1000 Then length =20 Else length =40
Eine Boolesche Variable kann den Wert True oder False annehmen und in Verbindung mit einem beliebigen relationalen Ausdruck verwendet werden.
Die folgenden zwei Anweisungen sind z. B. identisch:
If Feature.IsActive("Fillet1") = true Then . . . If Feature.IsActive("Fillet1") Then . . .
Der True-Wert ist in der zweiten Anweisung enthalten.
Analog können die folgenden zwei Anweisungen gegeneinander ausgetauscht werden, um zu testen, ob die Boolesche Variable falsch ist:
If Feature.IsActive("Fillet1") = false Then . . . If Not Feature.IsActive("Fillet1") Then . . .
Diese Beispiele sind das Ergebnis einer Funktion. Weitere Beispiele beinhalten die Verwendung eines Parameternamens als Boolesche Variable, oder die Verwendung einer lokalen Variable, die einen Booleschen Wert annimmt.
Bei einer Fallunterscheidung kann zwischen mehr als zwei Möglichkeiten gewählt werden.
Eine Fallunterscheidung kann durch Verwendung einer erweiterten If-Blockstruktur oder einer Select Case-Anweisung implementiert werden.
Die erweiterte If-Blockanweisung enthält einen oder mehrere ElseIf-Abschnitte, die verschachtelt zwischen der ersten If-Anweisung und der letzten Else-Anweisung integriert sind. Das Schlüsselwort ElseIf besteht aus einem Wort.
Beispiel:
If material = "Steel" Then density = 0.284 ElseIf material = "Copper" Then density = 0.323 ElseIf material = "Aluminum" Then density = 0.098 End If
In diesem Format führt das Programm die Anweisungen für den ersten bedingten Ausdruck aus, der zutrifft. Das Programm wird dann mit der Anweisung beendet, die nach der End If-Anweisung folgt. Verwenden Sie die endgültige Else-Anweisung, um Fehler zu erfassen, die bei unerwarteten Bedingungen auftreten, die nicht mit den vorherigen If- oder ElseIf-Bedingungen übereinstimmen.
Mit ElseIf entfällt die Kodierung mehrerer End If-Anweisungen in einer verschachtelten If-Struktur. Zum Vergleich: Das vorherige Beispiel kann auch wie folgt geschrieben werden:
If material = "Steel" Then density = 0.284 Else If material = "Copper" Then density = 0.323 Else If material = "Aluminum" Then density = 0.098 End If End If End If
Select Case ist eine wirksame Anweisung mit mehreren Optionen.
Beispiel:
Select Case material Case “Steel” density =0.284 Case “ Copper” density = 0.323 Case “Aluminum” density = 0.098 Case Else density = 0 MessageBox.Show("not a valid material" , "Warning") End Select
In diesem Format gibt die Select Case-Anweisung einen zu testenden Ausdruck an. Jeder nachfolgende Case-Abschnitt gibt einen oder mehrere Ausdrücke an, die mit dem Testausdruck verglichen werden sollen. Es werden die Befehle ausgeführt, die mit dem ersten Case-Abschnitt verbunden sind, dessen Ausdruck mit dem Testausdruck übereinstimmt. Die Programmsteuerung wird dann mit der Anweisung fortgesetzt, die der End Select-Anweisung folgt. Im endgültigen Case Else-Abschnitt werden die Fehler erfasst, die auftreten, wenn ein unerwarteter Wert des Testausdrucks nicht mit den Ausdrücken aus den vorherigen Case-Abschnitten übereinstimmt.
Der Testausdruck nach Select Case kann ein komplexerer Ausdruck sein, z. B.:
Select Case radius +1 Select Case MinOfMany(x,y,z)
Die Ausdrücke in einem Case-Abschnitt können eines der folgenden Formate annehmen:
Format | Beispiele |
---|---|
<Ausdruck> [, Ausdruck...] |
Case 1, 10, 100
Case "Y", "y" |
<Ausdruck> To <Ausdruck> |
Case 1 To 9
Case "A" To "C" |
Is <relationaler Operatorausdruck> | Case Is >= 21 |
(Kombination aus den vorherigen) | Case Is <= 5, 20 To 29, 43 |
Beispiel:
Select Case width Case 1,2,3,4,5 MessageBox.Show("Small Plate", "Size") Case 6 to 15 MessageBox.Show("Medium Plate", "Size") Case Is > 15 MessageBox.Show("Large Plate", "Size") End Select
Die Select Case-Anweisung muss nicht mit einer bestimmten Variable oder einem Ausdruck verbunden sein. Sie kann mithilfe des folgenden Formats zur Auswertung einer beliebigen Anzahl von Bedingungen verwendet werden:
Select Case True Case length >= 10 width = length -1 thickness = length/5 Case length < 10 width = length - .75 thickness = length/6 End Select