iLogic 中的元件函數

iLogic 提供用於設定或讀取元件抑制狀態和顏色的規則函數,以及用於進行元件相互取代的函數。這些函數對於驅動零件或組合的不同規劃十分實用。

您可以建立包含代表產品所有可能的有效規劃所需元件的模型 (零件或組合)。這種方法稱為「超級塑型」。當零件或組合元件太複雜或者太多時,將無法使用超級塑型,在這種情況下請使用 Component.Replace 函數。

若要存取元件函數,請展開「片段」區域中的「系統」頁籤下的「元件」節點。

元件命名

參考規則中的名稱之前,請先自訂所有元件命名。當變更由 Autodesk Inventor 指定的預設元件名稱時,應確保當所參考的 .ipt 或 .iam 檔案發生變更時,名稱不會變更。

您可以將元件變回其原始名稱,並仍舊保持其穩定性。若要變更元件,請對名稱進行些許變更,然後再將其變回原始名稱。

對於資源中心元件,使用 Component.IsActive 函數及 Component.Replace 函數均需要變更名稱。

Component.IsActive

設定或讀取組合元件的抑制狀態和材料表結構。使用此函數可在組合規劃中包括或排除元件。

此函數適用於單個元件或元件陣列。對於陣列,請使用陣列名稱。陣列必須與規則在同一個組合層級,並且不能在次組合中。

請勿抑制子元件。一個更好的替用方法是從元件內部的規則執行抑制。

例如,名為 TopAssembly 的組合包含 SubAssembly:1,此次組合包含 SamplePart:1。

使用次組合內部的規則抑制 SamplePart:1。此規則可以包含驅動抑制狀態的參數,而您可以使用 TopAssembly 中的規則驅動該參數。

如果您使用 iLogic 抑制元件,則會將該元件的材料表結構設定為「參考」。此動作會阻止該元件顯示在材料表中。該元件會顯示在「模型資料」視圖中,但不會顯示在「結構化」視圖或「僅限零件」視圖中。如果元件沒有被抑制,在進行抑制之前,iLogic 會還原元件的狀態 (「一般」、「不可分離」、「市購」或「虛擬」)。

在您使用 iLogic 規則變更組合元件的抑制狀態之前,請先建立並啟用新自訂詳細等級。

語法

Component.IsActive("ComponentName")

範例

您可以使用 1 代替 true,使用 0 代替 false

設定抑制狀態和材料表結構的步驟:

Component.IsActive("PartA:1") = false
Component.IsActive("PartB:1") = 0
Component.IsActive("PartC:1") = false
Component.IsActive("PartD:1") = 0

讀取抑制狀態和材料表結構的步驟:

MyBooleanParam = Component.IsActive("ComponentName:1)
If Component.IsActive("PartE") Then
' do something
End If

Component.iComponentIsActive

Component.IsActive 函數的變體,此函數可以設定或讀取 iPart 或 iAssembly 元件的抑制狀態。如果不手動變更元件名稱,則針對 iPart 和 iAssembly,需要使用此專用語法。

建議您變更元件名稱。如果變更元件名稱,則可以使用 Component.IsActive 代替此函數。

語法

Component.iComponentIsActive("iPartParentName:1")

iPartParentName

不帶 .ipt 副檔名的工廠零件名稱。

Component.Color

設定或讀取元件顏色。

語法

Component.Color("iPartA:1")

範例

設定顏色:

Component.Color("iPartA:1") = "Green"
Component.Color("iPartA:2") = "Aluminum (Cast)"
Component.Color("iPartA:3") = "As Material"

讀取顏色:

MyStringParameter = Component.Color("iPartA:1")

Component.Visible

設定或讀取元件的可見性。此函數不會變更元件的材料表結構。

語法

Component.Visible("componentName")

範例

設定可見性:

Component.Visible("Plate") = true
Component.Visible("Bearing") = false

讀取可見性:

parameter = Component.Visible("Plate")
parameter = Component.Visible("Bearing")
If Component.Visible("PartE") Then
do something
End If

Component.SkipDocumentSave

指定如果元件文件發生變更並且之後由規則對其進行了抑制是否儲存元件文件。

語法

Component.SkipDocumentSave = True

如果將該函數設定為 True,則不會儲存元件文件。

預設值為 False (Component.SkipDocumentSave = False),會儲存元件文件。

Component.Replace

使用其他零件或次組合取代某個零件或次組合。也可以將此函數用於取代元件陣列。

使用要置換的元件中的 iMate,以保持組合約束有效您可以使用零件置換零件、使用零件置換組合、或者使用組合置換零件。

該函數會在多個資料夾中搜尋要做為取代項使用的檔案:

檔名可以是相對路徑 (相對於上述任何搜尋位置)。

註: 在使用此函數之前,請先「固定」元件的名稱,以防在進行置換時該名稱發生變更。若要固定元件名稱,請將其變更為其他名稱。您甚至可以透過將名稱變更一次,然後再將其變回原始名稱的方式來固定名稱。如果無法固定名稱,取代作業會變更元件以符合不同的名稱。然後,當規則再次執行時,其將無法找到該元件。

語法

Component.Replace("ComponentToReplaceName", "OtherPartfilename.ipt", <replaceAll>)

ComponentToReplaceName

要取代的零件或次組合的名稱。

OtherPartfilename

要做為取代項使用的零件或次組合。

<replaceAll>

將此布林值設定為 True 將取代此元件的所有例證。將該值設定為 False 將僅取代單一具名例證。

範例

If PartType = "Type A" Then
Component.Replace("Widget","PartA.ipt", True)
ElseIf PartType = "Type B" Then
Component.Replace("Widget","PartB.ipt", True)
End If

Component.Replace (帶指定的詳細等級)

Component.Replace 函數的此變異會使用處於特定詳細等級的其他元件取代組合中的元件。

語法

Component.Replace("SubAssem:1", "OtherAssemFilename.iam<Level of Detail>", <replaceAll>)

在此函數中,<replaceAll> 引數與為更一般的 Component.Replace 函數描述的這種引數相同。

您也可以使用處於不同詳細等級的相同次組合取代次組合。

Component.ReplaceiPart

除針對帶有自訂參數的 iPart 需要使用此函數外,還建議您針對標準 iPart 使用此函數。當元件為 iPart 時,請使用此函數代替 Component.Replace。取代作業完成後,您可以使用 iPart.ChangeRowiPart.FindRow 變更特定的 iPart 規劃。

對於帶有自訂參數的 iPart,請在 rowNumber 後面列示自訂參數的值。必須按照這些值在表格中的顯示順序進行列示。

語法

Component.ReplaceiPart("iPart1:1", "OtherPartfilename.ipt", True, rowNumber)

使用 rowNumber 取代元件,同時選擇 iPart 列。

範例

若要設定自訂參數,請在規則中的 Component.ReplaceiPart 中重複這些自訂值,然後再在 iPart.ChangeRowiPart.FindRow 中重複這些自訂值。

對於 ChangeRow

Component.ReplaceiPart("iPart1:1", "OtherPartfilename.ipt", True, rowNumber, customParam1, customParam2)
iPart.ChangeRow("iPart1:1", rowNumber, customParam1, customParam2)

對於 FindRow

Component.ReplaceiPart("iPart1:1", "OtherPartfilename.ipt", True, rowNumber, customParam1, customParam2)
i = iPart.FindRow("iPart1:1", "Dia", ">=", 3.0, "r;|", customParam1, customParam2)

MakePath

定義至次組合中的元件名稱的路徑。若要指定該路徑,請按照次組合層級在樹中的顯示順序列示所有次組合層級。如果您要指定的元件名稱已在組合的其他地方使用,則需要使用此函數。

語法

MakePath("SubassemblyComponentName","PartComponentName")

範例

Component.Color(MakePath("SubAssem1:1", "Part2:1")) = “Green”
Component.IsActive(MakePath("SubAssem1:1", "SubSubAssem2:1", "Part2:1")) = “Yellow”