参数函数参考 (iLogic)

若要访问参数函数,请展开 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
注: 使用 Parameter.ValueForEquals(而不是参数本身)查明数字参数的值是否等于 6 个小数位内的其他值。

有关其他背景信息,请参考关于 iLogic 扩展和自定义中的 DoubleForEquals 数据类型部分。

您可以使用以下其中一个语句的语法来读取参数的当前值。

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”)

获取当前值列表,其中变量 values 是 VB.NET 类型 ArrayList 的对象。

MultiValue.SetValueOptions(True, DefaultIndex := 0)

强制参数使用其多值列表中的值。如果您稍后更改了该多值列表,它还会将该参数的当前值设定为列表中的一个值。如果在新列表中找到了该参数值,该函数将不更改该值。

DefaultIndex := 0

此选项仅应用于文本参数。如果当前参数值不在新列表中,该参数将设定为列表中的第一个值 (Index 0)。 可以选择一个非 0 值。这不会影响数字型参数。对于数字型参数,从该列表中选择的值将是最接近当前值的值。

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”类似,该语法导致在通过 MultiValue.List 或 MultiValue.SetList 函数对参数值进行更改后,Inventor 模型会进行更新。

True 将导致在更改参数后,模型(文档)会进行更新。只有使用参数函数更改参数时,才会生效:

若要在规则的中间(更改某些参数之后)更新模型,请同时使用以下两个语句:
  • 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)

您可以测试该情况。