若要访问参数函数,请展开 iLogic“编辑规则”对话框“代码段”区域中“系统”选项卡上的“参数”节点。
Parameter("parameterName")
该函数可以直接更改参数值。
在部件中,您可以访问受抑制零部件中的参数。但是,如果零部件受抑制,则无法使用指定的语句直接访问零部件参数,如下所示:
PartA.ipt.d12 = 6.3
而可以使用:
Parameter("PartA:1", "d12") = 6.3
请注意,指定的是零部件名称,而不是文件名称。尽管您为该函数指定了特定的零部件编号,但是参数更改会影响该零部件的所有引用。零部件名称只是函数用来识别文件的一种方式。
如果替换了零部件,请手动重命名零部件以保留它的名称。
您还可以针对零部件名称使用 MakePath 函数:
Parameter(MakePath("SubAssem1:1", "Part1:1"), "d12") = 6.3
有关其他背景信息,请参考关于 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 将导致在更改参数后,模型(文档)会进行更新。只有使用参数函数更改参数时,才会生效:
Parameter.UpdateAfterChange = True
True 将导致在通过参数函数更改参数值后,模型(文档)会进行更新。只有使用参数函数更改参数时,才会生效。例如:
这将更新模型。
如果您不需要在规则的中间更新模型,可以告诉系统在运行完规则后更新。使用此语句: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)
您可以测试该情况。