パラメータ関数のリファレンス(iLogic)

パラメータ関数にアクセスするには、iLogic の[ルールを編集]ダイアログの[スニペット]領域にある[システム]タブで、[パラメータ]ノードを展開します。

Parameter

Parameter("parameterName")

この関数は、パラメータ値を直接変更します。

アセンブリでは、省略されたコンポーネントのパラメータにアクセスできます。ただし、コンポーネントが省略されている場合は、次のような代入ステートメントで直接パラメータにアクセスすることはできません。

PartA.ipt.d12 = 6.3

代わりに、次の式を使用することができます。

Parameter("PartA:1", "d12") = 6.3

ファイルの名ではなく、コンポーネント名が指定されていることに注意してください。ただし、関数に特定のコンポーネントの番号を指定しても、パラメータの変更はすべてのコンポーネントのインスタンスに反映されます。関数でのファイルの識別には、コンポーネント名を指定する方法しかありません。

コンポーネントが置換される場合にも、コンポーネントの名前が変更されないように、手動で名前を変更してください。

コンポーネント名には、MakePath 関数を使用することもできます。

Parameter(MakePath("SubAssem1:1", "Part1:1"), "d12") = 6.3
注: (パラメータ自体の代わりに)Parameter.ValueForEquals を使用して、数値パラメータの値が 6 桁以内の別の値に等しいかどうかを確認します。

その他の背景情報については、「iLogic の拡張とカスタマイズの概要」の「DoubleForEquals のデータ タイプ」のセクションを参照してください。

パラメータの現在の値は、次のいずれかのステートメントの構文を使用して読み取ることができます。

param_val = Parameter("d0")

param_val = Parameter("PartA:1", "d0")

これらの例のとおり、現在のドキュメント内にパラメータが存在する場合でも可能です。ルールからアクセス可能な任意のパラメータの名前を使用できます。

省略されていないコンポーネントの場合は、コンポーネント名の代わりにファイル名を指定できます。この方法を使用することで、アセンブリにコンポーネントとして表示されない基本パーツのパラメータを変更できます。

Parameter("PartA.ipt", "d12") = 6.3

パラメータが見つからない場合は、パラメータ関数によってエラー メッセージが生成されます。エラー メッセージは次の記述によって抑止できます。

Parameter.Quiet = True

パラメータが存在しないことが明らかな場合に、このテクニックを使用することで未検出の状況に対応できます。

基本パーツのパラメータへのアクセス

基本パーツのパラメータには、派生パーツまたはアセンブリからアクセスできます。また、基本パーツから派生されたパーツを含んでいるアセンブリからもアクセスできます。

特定の状況で、アセンブリ内のルールから、基本パーツのパラメータを派生すると便利な場合があります。この技法は、トップダウン モデリングと呼びます。基本パラメータを変更すると、すべての派生パーツのリンクされたパラメータも変更されます。

パーツとパラメータは、[ルールを編集]ダイアログ ボックス内のモデル ツリーで常に表示されているわけではありません。これらには、Parameter 関数を使用してアクセスできます。たとえば、基本パーツでパラメータを使用するには次のように記述します。

Parameter("BaseShaft.ipt”, ”Diameter") = 0.125 in

多くの場合、基本パーツからパラメータ値を読み取る必要はありません。パラメータは、作業中のパーツまたはアセンブリと既にリンクされています。

高度なパラメータ関数

Parameter.Param 関数は、Inventor パラメータへ直接アクセスするために使用します。Autodesk Inventor API から返されるオブジェクトは Parameter 型です。

param = Parameter.Param("parameterName")
If (param IsNot Nothing) Then
param.Expression = "5.0 in"
param.Tolerance.SetToDeviation(0.002 * 2.54, -0.004 * 2.54)
param.Comment = "Equation and Tolerance set by a rule"
End If

これは次のように 1 行で記述することもできます。

Parameter.Param("foo").Comment = "Comment set by a rule"

Autodesk Inventor パラメータに次のように記述することで、さらに多くのプロパティにアクセスできます。

param = Parameter.Param("parameterName")
param = Parameter.Param("componentName", "parameterName")

これらの関数は、Inventor.Parameter クラスのオブジェクトとして提供されています。このクラスの詳細については Inventor プログラミング用ヘルプを参照してください。

マルチバリュー関数

マルチバリュー関数は、マルチバリュー パラメータによって格納されている値のリストにアクセスしたり変更したりするために使用します。次に、この関数の使用例を示します。

MultiValue.SetList(“d0”, 0.5, 0.75, 1.0, 1.25)

パラメータ d0 に使用可能な値のリストを設定します。

MultiValue.SetList(“d0”, “3/8”, “d1 * 2”, “d1 * 3”)

値ではなく式を設定します。リスト内では式と値を混在使用できます。

MultiValue.SetList(“filename.ipt.str0”, “Value1”, “Value2”)

パーツ内のテキスト パラメータに値のリストを設定します。

MultiValue.SetList(“Part1:1”, “d0”, 0.5, 0.75, 1.0, 1.25)

コンポーネントのパラメータに値のリストを設定します。

values = MultiValue.List(“d0”)

変数値が values のオブジェクトの ArrayList 型である現在の値のリストを取得します。

MultiValue.SetValueOptions(True, DefaultIndex := 0, NumericCompare := “=”)

パラメータに、マルチバリュー リスト内の値を強制的に渡します。次に、マルチバリュー リストを変更すると、パラメータの現在の値をリスト内の値の 1 つに設定します。この関数は、新しいリストに値がある場合にはその値を変更しません。

MultiValue.SetValueOptions(False)

パラメータのマルチバリュー リストを変更するときは、パラメータの実際の値は変更されません。これが MultiValue の既定の動作です。

MultiValue.List(“MyStringParam”) = iProperties.Materials

テキスト パラメータを現在のアクティブな規格で使用可能な材料のリストに設定します。

MultiValue.List(“d0”) = New Double() {0.5, 0.75, 1.0, 1.25}

他の方法を使用して、値のリストを設定します。

GoExcel.CellValues について説明するセクションでは、Microsoft® Excel の値を使用する例を参照できます。

MultiValue.UpdateAfterChange = True

Parameter.UpdateAfterChange を true に設定するのと同様に、このステートメントでは、MultiValue.List または MultiValue.SetList 関数によってパラメータ値が変更されると、Inventor モデルが更新されます。

True の場合は、パラメータが変更された後、モデル(ドキュメント)が更新されます。これは、Parameter 関数を使用して、パラメータを変更したときにのみ適用されます。

ルールの途中で(いくつかのパラメータの変更後)、モデルを更新するには、これらの 2 つのステートメントを一緒に使用します。
  • RuleParametersOutput()
    注: これにより、パラメータのローカル変数の現在値がモデルに割り当てられます。
  • InventorVb.DocumentUpdate()
  • ルールの途中でモデルを更新する必要がない場合は、ルールの実行が終了したら、システムが更新するように設定できます。次のステートメントを使用します iLogicVb.UpdateWhenDone = True:。

MultiValue.Quiet = True

パラメータが検出されないとき、エラー メッセージの表示を省略します。パラメータが存在しないことが明らかな場合に、この関数を使用することで未検出の状況に対応できます。たとえば、パラメータがルールを適用したいずれのパーツにも存在しない可能性もあります。

foundVal = MultiValue.FindValue(aList, "<=", 4.0)

リスト内で条件に最も近い値を検出します。aList には、ArrayList または Array 型を指定できます。比較の引数には、"<=""="、または ">=" を指定できます。

次の例は、4.0 以下の値を検出します。複数の値が存在する場合は、4.0 に最も近い値が返されます。一致する値が存在しない場合には、VB の定数の "Nothing" が返されます。

foundVal = MultiValue.FindValue(MultiValue.List("d0"), "<=", 4.0)

この条件を評価することができます。