关于 iLogic 中的条件语句

iLogic 提供了可在“编辑规则”对话框中使用的条件语句。

您可以在为模型定义的规则(Visual Basic 小程序)中放置语句。If-Then-Else 等条件语句可让规则根据特定的条件执行操作。

iLogic 中的 If-Then-Else 语句

If-Then-Else 语句中,当条件为真时执行一组操作,当条件为假时执行另一组操作。

执行真或假语句后,程序控制将继续执行下一个语句。

在 iLogic 中,您可以使用代码段或多行代码形式来实现 If-Then-Else 结构。

例如:

If size = “small” Then
length = 6.0
Else
length = 12
End If

如果条件表达式为 true,则将执行关键字 ThenElse 之间的语句,而忽略关键字 ElseEnd If 之间的语句。如果条件表达式为 false,则将执行关键字 ElseEnd If 之间的语句,而忽略关键字 ThenElse 之间的语句。在任何情况下,程序控制都会继续执行 End If 语句后面的语句。

iLogic 中的 If-Then 语句

If-Then-Else 语句中,无论条件为 true 还是 false,都将执行操作。但是,有时仅当条件为 true 时才执行一个或一组操作,条件为 false 时则不执行任何操作。

您可以忽略代码段 If 结构的 Else 部分。例如:

If size = “small” Then
length = 6.0
End If

iLogic 中的 null 或 empty 操作集

您还可以在代码段形式的 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 语句可提高可读性,但您还可以将 If 语句编写为单行形式。在该格式中,未使用 End If 语句。

例如:

If length < 20 Then MessageBox.Show("Length is Too Short", "Title")
If mass < 1000 Then length =20 Else length =40

在条件表达式中使用布尔变量

布尔变量(可具有 TrueFalse 值)可用在关系表达式适用的任何地方。

例如,以下两个语句等效:

If Feature.IsActive("Fillet1") = true Then . . .
If Feature.IsActive("Fillet1") Then . . .

在第二个语句中,True 值是暗指的。

相似地,使用以下两个语句都可以测试布尔变量是否为假:

If Feature.IsActive("Fillet1") = false Then . . .
If Not Feature.IsActive("Fillet1") Then . . .

这些示例可以显示函数的结果。其他示例包括:将参数名称用作布尔变量,或使用局部变量保存布尔值。

iLogic 中的条件语句 Case 结构

Case 结构让您可以在两个以上的情况之间进行选择。

可以使用扩展的代码段 If 结构或 Select Case 语句结构来实现 Case 结构。

iLogic 中的扩展的代码段 If 语句 (If-Then-ElseIf)

扩展的代码段 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 语句捕捉发生异常条件(与前面的 IfElseIf 条件不匹配)时出现的错误。

使用 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

iLogic 中的 Select Case 语句

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