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Если условное выражение принимает истинное значение, выполняются операторы между ключевыми словами Then и Else. Операторы между ключевыми словами Else и End If пропускаются. Если условное выражение принимает значение false, выполняются операторы между ключевыми словами Else и End If. Операторы между ключевыми словами Then и Else пропускаются. В любом случае далее программа переходит к выполнению оператора, стоящего после оператора End If.
В операторе If-Then-Else действие выполняется независимо от того, выполняется ли условие (true или false). Однако иногда действие или набор действий выполняются, только если условие принимает значение true, а если условие имеет значение false, то действие не выполняется.
Можно опустить часть Else структуры If блока. Например:
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 . . .В этих примерах показан результат выполнения функции. Кроме того, в качестве примера можно привести использование имени параметра в качестве логической переменной или присвоение локальной переменной логического значения.
Структура выбора позволяет выбрать один из нескольких вариантов.
Структуру выбора можно реализовать с помощью расширенной блоковой структуры If или структуры оператора Select Case.
В расширенном блоковом операторе If используется один или несколько операторов ElseIf, расположенных между первым оператором If и последним оператором Else. Ключевое слово 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 IfSelect 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 можно создавать, используя один из следующих форматов.
Например:
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