iLogic 提供條件陳述式,可供您在「編輯規則」對話方塊中使用。
您可以將陳述式放置在您為模型定義的規則 (Visual Basic 小程式) 中。條件陳述式 (例如 If-Then-Else) 允許規則根據特定準則執行動作。
在 If-Then-Else 陳述式中,如果條件為 true,則執行一個動作集,如果條件為 false,則執行另一個動作集。
true、false陳述式執行後,程式控制將繼續執行下一個陳述式。
在 iLogic 中,您可以使用區塊或多行形式實施 If-Then-Else 結構。
例如:
If size = “small” Then length = 6.0 Else length = 12 End If
如果條件表示式為 true,將執行 Then 和 Else 關鍵字之間的陳述式,而略過 Else 和 End If 關鍵字之間的陳述式。如果條件表示式為 false,則將執行 Else 和 End If 關鍵字之間的陳述式,而略過 Then 和 Else 關鍵字之間的陳述式。在任何情況下,程式控制都會繼續執行 End If 陳述式之後的陳述式。
在 If-Then-Else 陳述式中,不論條件為 true 還是為 false,均會執行動作。但是,在某些情況下,只有當條件為 true 時才執行一個動作或動作集,而當條件為 false 時,則不執行任何動作。
您可以忽略區塊 If 結構的 Else 部分。例如:
If size = “small” Then length = 6.0 End If
在區塊形式的 If 陳述式中,您也可以使用 空動作集。例如,您可以指定「如果條件為 true,不執行任何動作,否則執行某些動作」,如以下區塊所示:
If length > 20 Then Else MessageBox.Show(" Invalid Size.Length must be at least 20 in. ", "Title") End If
使用空動作集時,可以在 true 陳述式通常會執行的位置添加註釋,以改善可讀性:
If length > 20 Then ’do nothing Else MessageBox.Show(" Invalid Size.Length must be at least 20 in ", "Title") End If
雖然區塊形式的 If 陳述式可以增強可讀性,但是您也可以將 If 陳述式寫為單行形式。在這種格式中,不使用 End If 陳述式。
例如:
If length < 20 Then MessageBox.Show("Length is Too Short", "Title") If mass < 1000 Then length =20 Else length =40
布林變數 (其值可以為 True 或 False) 可以在任何可以使用關係表示式的地方使用。
例如,以下兩個陳述式是等同的:
If Feature.IsActive("Fillet1") = true Then . . . If Feature.IsActive("Fillet1") Then . . .
在第二個陳述式中,True 值是暗含的。
同樣,以下兩個陳述式均可用來測試布林變數是否為 false:
If Feature.IsActive("Fillet1") = false Then . . . If Not Feature.IsActive("Fillet1") Then . . .
這些範例展示函數的結果。其他範例包括使用參數名稱做為布林變數,或使用本端變數包含布林值。
Case 結構讓您可以在兩個以上的替用項目之間進行選擇。
可以使用延伸區塊 If 結構或 Select Case 陳述式結構實施 Case 結構。
延伸區塊 If 陳述式使用一個或多個嵌套在第一個 If 子句和最後一個 Else 子句之間的 ElseIf 子句。關鍵字 ElseIf 是一個詞。
例如:
If material = "Steel" Then density = 0.284 ElseIf material = "Copper" Then density = 0.323 ElseIf material = "Aluminum" Then density = 0.098 End If
在這種格式中,程式執行與發現的第一個為 true 的條件表示式相關聯的陳述式。然後,程式跳轉到 End If 陳述式之後的陳述式執行。當遇到與之前的 If 或 ElseIf 條件不相符的非預期條件時,執行最後一個 Else 陳述式,以免發生錯誤。
使用 ElseIf 便無需在巢狀 If 結構中編碼多個 End If 陳述式。做為比較,上一個範例也可以編寫為:
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 是具有多個選項的強大陳述式。
例如:
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
在這種格式中,Select Case 陳述式指定要測試的表示式。每個後續 Case 子句指定一個或多個要與測試表示式進行比較的表示式。將執行第一個包含與測試表示式相符之表示式的 Case 子句的關聯動作。然後,程式控制將跳轉到 End Select 陳述式之後的陳述式執行。當測試表示式的非預期值與之前的任何一個 Case 子句中的表示式清單不相符時,執行最後一個 Case Else 子句,以免發生錯誤。
Select Case 之後的測試表示式可以是更複雜的表示式,例如:
Select Case radius +1 Select Case MinOfMany(x,y,z)
Case 子句中的表示式清單可以遵循以下任意一種格式:
格式 | 範例 |
---|---|
<表示式>[,表示式,...] |
Case 1, 10, 100
Case "Y", "y" |
<表示式> To <表示式> |
Case 1 To 9
Case "A" To "C" |
Is<關係運算子表示式> | Case Is >= 21 |
(上述各項的任意組合) | Case Is <= 5, 20 To 29, 43 |
例如:
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
Select Case 陳述式不需要與某個特定變數或表示式關聯。可以使用該陳述式演算任意數目的條件,需使用以下格式:
Select Case True Case length >= 10 width = length -1 thickness = length/5 Case length < 10 width = length - .75 thickness = length/6 End Select