iLogic 中的參數函數

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

Parameter

Parameter("parameterName")

此函數直接變更參數值。

在組合中,您可以存取已抑制元件中的參數。但是,如果元件被抑制,您將無法使用如下指定陳述式直接存取其參數:

PartA.ipt.d12 = 6.3

而您可以使用:

Parameter("PartA:1", "d12") = 6.3

請注意,應該指定元件名稱而非檔名。即使您為該函數指定特定的元件號碼,參數變更也會影響元件的所有例證。元件名稱只是函數識別檔案的一種途徑。

如果元件被取代,請手動更名元件,以保留其名稱。

您也可以使用 MakePath 函數做為元件名稱。

Parameter(MakePath("SubAssem1:1", "Part1:1"), "d12") = 6.3

您可以使用下面一個陳述式的語法讀取參數的目前值:

param_val = Parameter("d0")

param_val = Parameter("PartA:1", "d0")

如這些範例中所示,參數可以在目前文件中。您可以使用任何可以從規則存取的參數的名稱。

在沒有被抑制的元件中,您可以指定檔名代替元件名稱:您可以使用這種方法變更組合中不會顯示為元件的基準零件中的參數。

Parameter("PartA.ipt", "d12") = 6.3

如果找不到參數,Parameter 函數會產生錯誤訊息。您可以使用以下陳述式抑制錯誤訊息:

Parameter.Quiet = True

如果您知道缺少參數,並且已有所準備,便可以使用此技術。

存取基準零件中的參數

您可以從導出零件或組合存取基準零件中的參數。也可以從包含自基準零件導出之零件的組合存取這些參數。

在某些情況下,可以使用這種技術從組合中的規則驅動基準零件中的參數。這種技術稱為由上而下塑型。變更基準參數時,所有導出零件中的連結參數也會變更。

零件及其參數不會永遠在「編輯規則」對話方塊內的「模型」樹中可見。您可以使用 Parameter 函數存取它們。例如,若要變更基準零件中的參數,請使用:

Parameter("BaseShaft.ipt”, ”Diameter") = 0.125 in

通常,您不必從基準零件中讀取參數值。這些參數已連結到您所處理的零件或組合中。

進階參數函數

使用 Parameter.Param 函數可以直接存取 Inventor 參數。從 Autodesk Inventor API 傳回的物件為 Parameter 類型:

param = Parameter.Param("parameterName")
If (param IsNot Nothing) Then
param.Expression = "5.0 in"
param.Tolerance.SetToDeviation(0.002 * 2.54, -0.004 * 2.54)
param.Comment = "Equation and Tolerance set by a rule"
End If

或者,您也可以使用單行:

Parameter.Param("foo").Comment = "Comment set by a rule"

您可以使用以下函數存取 Autodesk Inventor 參數的更多性質:

param = Parameter.Param("parameterName")
param = Parameter.Param("componentName", "parameterName")

這些函數為您提供 Inventor.Parameter 類別的物件。請參閱《Inventor 程式設計說明》,以取得有關此類別的更多資訊。

多值函數

使用多值函數存取和變更使用多值參數儲存的值清單。以下範例演示了這些函數的用法:

MultiValue.SetList(“d0”, 0.5, 0.75, 1.0, 1.25)

設定 d0 參數可用值的清單。

MultiValue.SetList(“d0”, “3/8”, “d1 * 2”, “d1 * 3”)

設定方程式代替值。您可以在清單中混合使用方程式和值。

MultiValue.SetList(“filename.ipt.str0”, “Value1”, “Value2”)

為零件中的文字參數設定值清單。

MultiValue.SetList(“Part1:1”, “d0”, 0.5, 0.75, 1.0, 1.25)

為元件中的參數設定值清單。

values = MultiValue.List(“d0”)

取得目前值清單,其中變數 valuesArrayList VB.NET 類型物件。

MultiValue.SetValueOptions(True, DefaultIndex := 0, NumericCompare := “=”)

為參數強制指定其多值清單中的某個值。如果您隨後變更多值清單,該函數同樣會將參數的目前值設定為清單中的某個值。如果此函數在新清單中找到了該值,則不會變更該值。

MultiValue.SetValueOptions(False)

如果變更參數的多值清單,參數的實際值不會變更。此行為是 MultiValue 的預設行為。

MultiValue.List(“MyStringParam”) = iProperties.Materials

將文字參數設定為與目前的作用中標準提供的材料清單相同的值清單。

MultiValue.List(“d0”) = New Double() {0.5, 0.75, 1.0, 1.25}

使用替用方法設定值清單。

在描述 GoExcel.CellValues 的小節中,可找到有關使用 Microsoft® Excel 值的範例。

MultiValue.UpdateAfterChange = True

類似於將 Parameter.UpdateAfterChange 設定為 True,此陳述式會導致 Inventor 模型在 MultiValue.List 或 MultiValue.SetList 函數變更參數值後更新。

True 將導致模型 (文件) 在參數變更後更新。這僅會在您使用 Parameter 函數變更參數時起作用:

若要在規則執行過程中更新模型 (變更某些參數後),請將這兩個陳述式一起使用:
  • RuleParametersOutput()
    註: - 此陳述式會將參數本端變數的目前值指定給模型。
  • InventorVb.DocumentUpdate()
  • 如果您不需要在規則執行過程中更新模型,您可以告訴系統在規則執行完成後進行更新。使用此陳述式: iLogicVb.UpdateWhenDone = True。

MultiValue.Quiet = True

抑制當找不到參數時顯示的錯誤訊息。如果您知道缺少參數,並且已有所準備,便可以使用此函數。例如,有可能並非規則適用的所有零件中都存在該參數。

foundVal = MultiValue.FindValue(aList, "<=", 4.0)

在清單中尋找最符合條件的值。aList 可以為 ArrayList 或 Array。用於比較的引數可以為 "<=""="">="

以下範例尋找小於或等於 4.0 的值。如果有多個值符合此條件,則傳回其中最接近 4.0 的值。如果沒有相符值,此範例會傳回 VB 常量 "Nothing"

foundVal = MultiValue.FindValue(MultiValue.List("d0"), "<=", 4.0)

您可以測試此條件。