iLogic 提供了可在“编辑规则”对话框中使用的条件语句。
您可以在为模型定义的规则(Visual Basic 小程序)中放置语句。If-Then-Else 等条件语句可让规则根据特定的条件执行操作。
在 If-Then-Else 语句中,当条件为真时执行一组操作,当条件为假时执行另一组操作。
执行真或假语句后,程序控制将继续执行下一个语句。
在 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 语句中使用 null 操作集或 empty 操作集。例如,您可以通过以下代码段来说明“如果条件为真,则不执行任何操作;反之,则执行指定操作”:
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 值是暗指的。
相似地,使用以下两个语句都可以测试布尔变量是否为假:
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
在该格式中,程序将执行与找到的第一个真条件表达式关联的语句。然后,程序会退回到 End If 语句后面的语句。使用最后一个 Else 语句捕捉发生异常条件(与前面的 If 或 ElseIf 条件不匹配)时出现的错误。
使用 ElseIf,则无需将多个 End If 语句编码至嵌套的 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 Else 子句将捕捉当测试表达式的异常值与任何先前 Case 子句中的表达式列表都不匹配时发生的错误。
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