iLogic 中的规则和表单

iLogic 浏览器将列出 iLogic 规则、表单、全局表单和外部规则。

在 iLogic 浏览器中,规则排列在两个选项卡下面:

表单将排列在两个选项卡下面:

iLogic 中的规则

规则是可以监视并控制其他 Inventor 参数、特征或零部件的 Visual Basic (VB.NET) 小程序。

iLogic 将规则作为对象直接嵌入到零件、部件和工程图文档中。规则可确定并驱动设计参数和属性值。通过控制这些值,您可以定义模型属性、特征及零部件的行为。

知识内容可以直接保存在文档中,就像存储几何设计元素一样。

规则中的参数

在规则中,您可以将标准 Inventor 参数名称作为 Visual Basic 变量使用。当运行规则时,会将此类参数的值指定给此类变量。对于数值参数,该值是以“工具”“文档设置”中指定的文档单位表示的实数。在规则中,文本参数会变成字符串变量。真/假参数会变成布尔变量。

参数的出现方式有两种:

  • 链接至数值或非数值参数的 VB.NET 变量。这些变量会以蓝色亮显:

    当规则开始运行时,iLogic 会将这些参数的值从模型读取到规则中。规则运行完毕后,iLogic 会将更改后的值保存回模型。

    若要在规则运行完毕之前保存这些值,请使用 RuleParametersOutput 函数。如果您要立即更改模型,该函数非常有用。

  • 使用 Parameter 函数访问的参数。例如:

    如果使用这种方法指定值,这些值会立即保存至模型,即在规则中的下一行语句执行之前保存。如果您使用 Parameter 函数读取值,则会立即从 Inventor 模型中读取该值。

规则中的默认实体名称

在规则中使用以下某一个 Autodesk Inventor 实体名称之前,如果该实体在创建时指定了默认名称,请更改其名称:

  • 特征
  • 草图
  • 定位特征
  • 阵列
  • 约束
  • iMate

使用有意义的名称。名称更改更便于了解规则的作用。

更改默认名称的另一个目的是为了使名称更容易移植。在本地化之后的 Autodesk Inventor 版本中,默认项目名称已被翻译成该版本对应的语言。这些名称在模型浏览器中会自动更改,但在 iLogic 规则中不会自动更改。因此,规则可能会找不到使用默认名称的项目。如果其他人在其他语言版本的 Inventor 中使用模型,则必须更改默认名称。此建议仅适用于在规则中通过名称调用的项目。例如,测量函数可以使用定位特征名称。如果您有定位特征,但不在测量函数中使用它们,则您无需对其进行重命名。此建议的一个例外是嵌入式 Excel 工作表。请勿对其进行重命名。

在非英文版的 Autodesk Inventor 中,请在规则中使用英文名称。例如:

"3rd Party:Embedding 1"
注: 某些实体(例如 iMate)允许在创建时为其指定名称。

当规则运行时

如果在规则中将参数直接用作变量,则通常情况下当参数值发生更改时,规则会为响应更改而自动运行。也可以通过事件触发规则。

除非规则被抑制,否则在您编辑规则后,规则会立即运行。当规则运行时,参数中的更改直到规则运行完毕后才更新模型。如果需要,您可以使用以下任一函数强制参数更改立即生效:

  • Parameter 函数
  • 规则中的 RuleParametersOutput() 函数

规则顺序

  • 除非通过包含 iLogicVb.RunRule("ruleName") 函数另行指定了顺序,否则规则会按照在浏览器中出现的顺序运行。
  • 如果多个规则参考了发生更改的参数,则在列表中最先出现的规则将最先运行。不论参数如何更改,规则均会按照此顺序执行。
  • 不论主 iLogic 浏览器列表如何显示,均可使用“事件触发器”命令更改与文档事件相关联的列表中的规则顺序。

如何处理规则

当您创建或编辑规则时,规则文本会被转换为有效的 VB.NET 代码,然后进行编译。某些 Inventor 参数名称不是有效的 VB.NET 变量名称。为允许您使用所有 Inventor 参数名称,iLogic 会在内部为 Inventor 参数替换新变量名称。

用作参数名称的关键字

尽管您可以将 Visual Basic 关键字用作参数名称,但不建议对新文档这样做。但是,当您将规则添加至现有文档时,通常不需要更改任何参数名称。如果存在与关键字相同的名称,而您又需要在规则中使用该关键字,则可以:

  • 在可能的情况下更改 Inventor 参数名称(建议)。
  • 在规则中使用该关键字,但大写不同的字母。例如,如果 Inventor 参数命名为 class,则将使用 Class。Inventor 参数名称区分大小写,但 VB 不区分。在示例中,在 VB 看到代码之前,class 会被其他名称替换,但 Class 会保持不变。

规则的内部转换

规则文本会在内部转换为有效的 VB.NET 代码,此代码是不可见的,并且会随规则一起储存。这种类型的储存使得无论何时运行规则都无需为 iLogic 生成代码。代码仅在您编辑规则时才会发生更改。

VB 编译器错误消息实际参考此中间代码。在极少数使用复杂代码的情况下,您会收到错误“与规则代码不相符”。如果发生这种情况,请简化代码。如果需要,请验证您是否具有 Sub Main()End Sub 语句。

当 iLogic 将规则转换为有效的 VB.NET 代码进行编译时,它会使用转换系数替换单位。

规则中的单位

您可以在规则中使用 Inventor 单位,方式与在标准 Inventor 参数表达式中一样。

  • 规则不需要单位。例如,假设将数值指定给带有单位的参数,但没有在表达式中指定单位。在这种情况下,iLogic 会假设该数值使用与该参数一致的文档单位。这种类型的假设同样适用于复合单位,例如 mi/hr。文档单位在“工具”“文档设置”“Inventor 中的单位”中进行设定。
  • 在规则文本中,单位名称只能直接用在数值之后,而不能用在参数、变量或表示式之后。

示例 - 文档单位

在该示例中,零件文件使用英寸作为文档单位:

d0 = 4.5 in
d18 = 7.2 in
sum = d0 + d18MessageBox.Show(sum,”Document Units - Inches”)

除非另行指定,否则 iLogic 会假设数值单位被定义为文档单位。在此案例中,sum = 11.7。系统会在消息框中显示该值并指示文档单位为英寸。

若要将值 7.2 mm(而非值 7.2 in)指定给参数 d18,请指定以毫米来表示 d18

d0 = 4.5 in
d18 = 7.2 mm
sum = d0 + d18
MessageBox.Show(sum,”Document Units - Inches”)

在此案例中,sum = 4.78346456692913。系统会在消息框中显示该值并指示文档单位为英寸。

若要对文档单位为毫米的零件文件执行前一个计算,请为所有以英寸表示的参数添加英寸单位(例如 d0 = 4.5 in)。

最后,如果在语句中忽略长度单位,iLogic 会使用文档单位值。

示例 - 混合文档单位

在该示例中,零件文件使用英寸作为文档单位。在“iLogic 参数编辑器”中:

  • 将参数 x 设置为 1 in
  • 将参数 y 设置为 12.5 mm

已将规则编写为:

result = x + y
MessageBox.Show(result,“Mixed Units Defined in Parameter Editor”)

执行添加操作时,iLogic 会将参数 y 的值从 12.5 mm 转换为 .4921 英寸。系统会在消息框中显示值 1.49212598425197 并指示已在参数编辑器中定义混合单位。

相反,如果文档单位被定义为毫米,则 iLogic 会将参数 x 的值从 1 in 转换为 25.4 mm。系统会在消息框中显示值 37.9 并指示已在参数编辑器中定义混合单位。

单位名称

单位规格会在执行任何其他数学运算之前进行应用,其优先级高于其他所有运算符。单位名称:

  • 在规则文本中,只能直接用在数值之后。
  • 不能用在参数、变量或表达式之后。
  • 在数值和单位之间必须包括一个空格。

以下是有效使用单位名称的示例:

12 in
144 in
144 in^2
125.2 mm
60 mi/hr

您可以在规则中使用复合单位规格。复合单位规格遵循 Inventor 格式。若要在规则中包含复杂的单位规格,请在“参数”对话框中为该规格创建表达式。然后,在“规则编辑器”中对该参数使用“捕获当前状态”

外部规则

外部规则可以用作 iLogic 规则或者手动运行的小程序(如 VBA 宏)。它们单独储存在文本文件或 VB 文件中,独立于任何 Inventor 文档(零件、部件或工程图)。您可以手动运行它们,也可以从其他规则中运行它们。

当您在 iLogic 浏览器中查看外部规则列表时,无论您打开何种文档,该列表均相同。该列表不与各个文档相关联。

您也可以将外部规则作为事件驱动的规则运行。

向导

iLogic 提供了若干可用于为特定任务创建复杂规则的向导。这些向导可在“编辑规则”对话框的“向导”选项卡上找到:

  • 为对话框创建规则 - 使用自定义对话框驱动参数值。
  • 捕获当前视图 - 捕获视图方向并缩放显示值。
  • 消息框 - 创建显示 Windows 消息框的规则。
  • 参数极限值 - 设定参数的最小值和最大值。

表单

创建自定义用户界面并将其与 Inventor 零件、部件或工程图文档的参数、特性和规则关联起来。

通过拖放方式设计用户界面,而无需进行编程。使用控件驱动对现有设计的更改。表单定义可以是特定于文档的,可将其保存在设计文档中,也可以存储起来以用于多个文档。

注: 创建表单不一定要用到规则。