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
の場合にのみ 1 つまたは一連のアクションが実行され、条件が 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
ステートメントのブロック書式は判読が容易ですが、1 行で 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
の値を保持することができ、関係式を記述可能な任意の位置で使用できます。
たとえば、次の 2 つのステートメントは等価です。
If Feature.IsActive("Fillet1") = true Then . . .
If Feature.IsActive("Fillet1") Then . . .
2 番目のステートメントは、True
値を暗示しています。
同様に、次の 2 つのステートメントは、ブール変数が偽であるかどうかを評価するために両方を使用することができます。
If Feature.IsActive("Fillet1") = false Then . . .
If Not Feature.IsActive("Fillet1") Then . . .
これらの例では、関数の結果を示しました。また、パラメータ名をブール変数として使用しているものや、ローカル変数にブール値を格納しているものがありました。
ケース構造では、複数の候補からの選択が可能です。
ケース構造は、If
構造を拡張したブロックや Select Case
ステートメント構造を使用して実装できます。
If
ステートメントの拡張ブロックでは、1 つまたは複数の ElseIf
句を使用して、最初の If
句と最後の Else
句の間にネスト構造を作ります。ElseIf
キーワードは 1 語です。
たとえば、次のいずれかを入力します。
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
は、ネストされた If
構造で複数の End If
ステートメントを記述する手間を省くために使用します。比較のために、前の例のもう 1 つの記述例を示します。
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
句では 1 つまたは複数の式を指定して、評価式と比較します。最初の 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
ステートメントは、1 つの特定の変数または式と関連付ける必要がありません。次の形式で任意の数の条件を評価するために使用できます。
Select Case True
Case length >= 10
width = length -1
thickness = length/5
Case length < 10
width = length - .75
thickness = length/6
End Select