iLogic 提供用於驅動組合約束的抑制狀態的規則函數。這些函數在使用 iLogic 規則定義組合層級規劃時十分實用。
例如,假設您要為組合中的元件定義備選位置。您可以定義將元件約束在每個位置所需的所有貼合。然後,您可以使用規則依需要抑制和取消抑制這些貼合來移動每個規劃中的元件。
Autodesk Inventor 不支援相衝突的約束。為元件的某個位置建立約束,然後手動抑制這些約束,然後再為備選元件位置建立其他約束集。建立為每個規劃定位元件所需的所有約束後,您可以編寫在約束之間進行選擇的規則。
若要存取約束函數,請展開「片段」區域中的「系統」頁籤下的「約束」節點。
設定或讀取頂層組合約束的抑制狀態。
為規則中參考的每個約束指定一個唯一的自訂名稱:
如果手動變更約束的抑制狀態,將不會導致參考該約束的規則自動觸發。
語法
Constraint.IsActive("Mate:1")
Constraint.IsActive("SubAssem.iam", "Mate:1")
範例
設定抑制狀態:
If ConfigStyle = “A” Then Constraint.IsActive("MateLeftSide:1") = true Constraint.IsActive("MateRightSide:2") = false ElseIf ConfigStyle = “B” Then Constraint.IsActive("MateLeftSide:1") = false Constraint.IsActive("MateRightSide:2") = true End If
讀取抑制狀態:
If Constraint.IsActive("MateLeftSide:1") Then (Do something)
設定或讀取次組合中的約束的抑制狀態 (指定次組合檔名及約束名稱):
Constraint.IsActiveInDoc("SubAssem.iam", "Mate:1")
若要複製和更名組合中的所有檔案,同時保持所有規則不變,請使用 Constraint.IsActiveInComponent 並指定次組合名稱來代替檔名。
使用次組合名稱進行設定:
If ConfigStyle = “A” Then Constraint.IsActiveInDoc("SubAssem.iam", “LeftMate”) = true Constraint.IsActiveInDoc("SubAssem.iam", “RightMate”) = false ElseIf ConfigStyle = “B” Then Constraint.IsActiveInDoc("SubAssem.iam", “LeftMate”) = false Constraint.IsActiveInDoc("SubAssem.iam", “RightMate”) = true End If
使用次組合名稱進行讀取:
Constraint.IsActiveInDoc("SubAssem.iam",”LeftMate”) = true then (Do something)
抑制或取消抑制 iMate 定義。
Constraint.iMateDefIsActive(“iMate:1”) = False
抑制目前規則文件中名為 iMate:1 的 iMate 定義。其結果與在使用者介面中使用關聯式功能表抑制它相同。抑制後,該 iMate 定義將無法用於進行貼合。
Constraint.iMateDefIsActive(“SubAssem:1”,“iMate:1) = False
抑制元件 SubAssem:1 中名為 iMate:1 的 iMate 定義。
Constraint.iMateDefIsActive(PartA:1”,“iMate:1”) = True
取消抑制元件零件 PartA:1 中名為 iMate:1 的 iMate 定義。