iLogic 中的 iPart 和 iAssembly 函數

使用 iPart 和 iAssembly 函數驅動組合中的 iPart 和 iAssembly 規劃。您可以使用規則根據您定義的條件和邏輯變更 iPart 或 iAssembly 的目前規劃。

這些函數以作用於 iPart 的方式作用於 iAssembly,自訂參數只能用於 iPart 的情況例外。若要對 iAssembly 使用該函數,在指定函數時,您可以選擇性地使用 iAssembly 取代 iPart

若要存取 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)

範例

在此範例中,目前的 iPart 規劃會根據演算 Inventor 使用者參數 Port_1_Size 的條件陳述式變更。該函數只需要 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 表格,以尋找欄值大於或等於指定值的列。iLogic 會將目前的 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.FindRowiPart.ChangeRow

"columnName"

您所需要的 iPart 表格欄名稱。

範例

在此範例中,我們搜尋 port_1_flare_flange iPart 表格的 Port_Size 欄,以尋找與 Inventor 參數 Port_1_Size 的值完全相符的值。找到該列後,我們使用 iPart.CurrentRowValue 從表格的 A_dimB_dim 欄中擷取標註。然後,我們將這些標註值指定給名為 Port_1_screw_A_dimPort_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.CurrentRowValueiPart.CurrentRowStringValue 擷取作用中列中的其他儲存格的值。

語法

iPart.RowName("iChangedComponentName:1")

範例

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

iPart.RowNumber

取得 iPart 或 iAssembly 元件例證中的作用中列的列號碼。

註: 使用此函數後,您可以使用 iPart.CurrentRowValueiPart.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