iLogic の iPart および iAssembly 関数

iPart および iAssembly 関数は、アセンブリ内で iPart および iAssembly 関数を駆動するために使用します。iPart および iAssembly の現在の設定は、ルールを使用して定義した条件および論理に従って変更できます。

これらの関数は、iAssembly でも iPart と同様に機能しますが、カスタム パラメータは iPart のみで使用できます。iAssembly に対して関数を使用する場合は、関数の使用時にオプションで iPartiAssembly に置き換えます。

iPart および iAssembly 関数にアクセスするには、[スニペット]領域の[システム]タブで[iPart]ノードを展開します。

iFeature 用の関数と同じような関数を使用することができます。詳細については「iFeature 関数」を参照してください。

iPart.ChangeRow

iPart または iAssembly テーブル内のアクティブな行を変更します。

構文

iPart.ChangeRow("iChangedComponentName:1", "memberName")

“iChangedComponentName:1”

Autodesk Inventor アセンブリ ブラウザ内に表示されるコンポーネントの名前です。Inventor に割り当てられた既定のコンポーネント名は変更して、テーブル内の別の行を選択したときに変更されないようにします。

“memberName”

テーブルの[メンバ]列の行に割り当てられる名前です。

カスタム パラメータを持つ iPart の場合、この構文を使用して "memberName" の後にカスタム パラメータのリストを記述します。テーブル内に表示される順序で指定します。

iPart.ChangeRow("iChangedComponentName:1", "memberName", customParam1,customParam2)

メンバ名ではなく、行番号を指定するには、この構文を使用します。行番号は整数で、最初の行が 1 から始まります(標準の iPart のみの場合)。

iPart.ChangeRow("iChangedComponentName:1", rowNumber)

この例では、Inventor ユーザ パラメータ Port_1_Size を評価する条件ステートメントに従って現在の iPart 設定が変更されます。この関数は、iPart のコンポーネント名 port_1_Flange_screw と iPart テーブルのメンバ名 Screw-01 のみを要求して、アクティブな iPart 設定を駆動します。

If Port_1_Size = .50 Then
iPart.ChangeRow("port_1_flange_screw", "Screw-01")
ElseIf Port_1_Size = .75 Then
iPart.ChangeRow("port_1_flange_screw", "Screw-02")
ElseIf Port_1_Size = 1.00 Then
iPart.ChangeRow("port_1_flange_screw", "Screw-03")
End If

iPart.FindRow

iPart または iAssembly テーブルの特定の値または値の範囲を含む行を列単位で検索し、検出された行にアクティブな設定を指定します。

構文

i=iPart.FindRow("iChangedComponentName:1", "columnName","<=",0.2,"columnName","<=", 4.1,"|",customParam1,customParam2)

i=iPart.FindRow("iChangedComponentName:1","columnName", "<=",d1,"columnName","<=",d2)

“i”

有効な行番号が検出されたかどうかを評価するために使用するローカル変数です。

“iChangedComponentName:1”

Inventor アセンブリ ブラウザ内に表示されるコンポーネントの名前です。Inventor に割り当てられた既定のコンポーネント名は変更して、テーブル内の別の行を選択したときに変更されないようにします。

“columnName”

iPart テーブルで検索する列です。iPart テーブルに表示される正確な列ヘッダ名を使用してください。

この例では、iPart テーブルで指定された値以上の列値を持つ行が検索されます。現在の iPart の設定は、検出された行の値に変更されます。

iPart.FindRow("port_1_flange_screw", "Thread_Diameter", ">=", 0.45, "Thread_Length", ">=", 2.0)

iPart.CurrentRowValue

iPart.FindRow を使用して行が検出されると、この関数は関連付けられた列値をその行から読み取ります。この関数は数値のみを読み取ります。iPart.CurrentRowStringValue を使用して、テキスト値を含む列を読み取ります。

構文

d0 = iPart.CurrentRowValue("columnName")

次の関数はすべて現在の行を設定します。

iPart.FindRow または iPart.ChangeRow

“columnName”

対象の iPart テーブル列の名前です。

この例では、port_1_flare_flange iPart テーブルの Port_Size 列で、Inventor パラメータ Port_1_Size の値と完全に一致する値を検索します。行が検出されると、iPart.CurrentRowValue を使用して、テーブルの A_dim および B_dim 列から寸法を取得します。次に、Port_1_screw_A_dim および Port_1_screw_B_dim という名前の Inventor パラメータに、この値を指定します。

i = iPart.FindRow("port_1_flare_flange", "Port_Size", "=", Port_1_Size)
Port_1_screw_A_dim = iPart.CurrentRowValue("A_dim")
Port_1_screw_B_dim = iPart.CurrentRowValue("B_dim")

iPart.CurrentRowStringValue

iPart.FindRow を使用して行が検出されたら、この関数を使用してその行から関連付けられた列値を読み取ります。この関数は、テキスト値のみを読み取る点を除いて、iPart.CurrentRowValue と類似しています。iPart.CurrentRowValue を使用して、数値を含む列を読み取ります。

構文

iPart.CurrentRowStringValue("PartNumber")

別のコンポーネント名の構文

iPart の行が変わったときに、変更されないコンポーネント名を指定するには、次のように記述します。

iPart.ChangeRow("iParentFileName:1", "memberName")

iPart.FindRow("iParentFileName:1","columnName","<=",d1,"columnName","<=",d2)

“iParentFileName:1”

iPart の親ファイル名です。":1" は、通常の .ipt または .iam 拡張子の代わりとなります。":1" は、作業するコンポーネントの番号に変えます。

この構文はサポートされていますが、できるだけ使用しないでください。一般的には、コンポーネント名を変更して、書き換えられないようにします。

iPart.RowName

iPart または iAssembly コンポーネント インスタンス内のアクティブな行のメンバ名を取得します。この関数は、iPart または iAssembly のコンポーネント変更イベントによってトリガされるルールの場合に役に立ちます。ルールから自動的に行を選択するには、iPart.ChangeRow または iPart.FindRow を使用します。ユーザが行を手動で選択できるようにするには、コンポーネント変更イベントと、この関数を結合して、変更に応答するようにします。

注: この関数の使用後、iPart.CurrentRowValue または iPart.CurrentRowStringValue を使用して、アクティブな行内の他のセルの値を取得できます。

構文

iPart.RowName("iChangedComponentName:1")

memberName = iPart.RowName("port_1_flange_screw:1")

iPart.RowNumber

iPart または iAssembly コンポーネント インスタンス内のアクティブな行の行番号を取得します。

注: この関数の使用後、iPart.CurrentRowValue または iPart.CurrentRowStringValue を使用して、アクティブな行内の他のセルの値を取得できます。

構文

iPart.RowNumber("iChangedComponentName:1")

rowNumber = iPart.RowNumber("port_1_flange_screw:1")

iPart.Tolerance

iPart.FindRow 関数と併用することで、厳密な値ではなく範囲内の値を検索できます。この検索では、常に許容差が存在します。既定の許容差は 0.0000001 で、ドキュメントの単位には影響されません。

構文

iPart.Tolerance = <値>

大きな許容差を設定すると、許容可能な値の範囲が広くなります。

次のステートメントを使用していると仮定します。

iPart.Tolerance = 0.001
i = iPart.FindRow("Block:1","length", "=", 2.3)

これらのステートメントの併用は、許容差を使用しない次の検索と同等になります。

i = iPart.FindRow("Block:1", "length", ">=", 2.299, "length","<=", 2.301)

iPart メンバを別のファクトリのメンバと置き換えるには Component.ReplaceiPart を使用します。