使用 iPart 和 iAssembly 函數驅動組合中的 iPart 和 iAssembly 規劃。您可以使用規則根據您定義的條件和邏輯變更 iPart 或 iAssembly 的目前規劃。
這些函數以作用於 iPart 的方式作用於 iAssembly,自訂參數只能用於 iPart 的情況例外。若要對 iAssembly 使用該函數,在指定函數時,您可以選擇性地使用 iAssembly 取代 iPart。
若要存取 iPart 和 iAssembly 函數,請展開「片段」區域中的「系統」頁籤下的「iPart」節點。
為 iFeature 提供了類似的函數。請參閱〈iFeature 函數〉以取得更多資訊。
變更 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 或 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.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.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 或 iAssembly 元件例證中的作用中列的成員名稱。此函數在由「iPart 或 iAssembly 變更元件」事件觸發的規則中十分實用。使用 iPart.ChangeRow 或 iPart.FindRow 可自動從規則中選取列。如果您想讓使用者手動選取列,您可以將該事件與此函數相結合以對變更做出反應。
語法
iPart.RowName("iChangedComponentName:1")
範例
memberName = iPart.RowName("port_1_flange_screw:1")
取得 iPart 或 iAssembly 元件例證中的作用中列的列號碼。
語法
iPart.RowNumber("iChangedComponentName:1")
範例
rowNumber = iPart.RowNumber("port_1_flange_screw:1")
與 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。