扩展和自定义 iLogic 功能

在外部文件中存储规则

您可以不将 iLogic 规则存储在 Inventor 模型中,而将其放在外部文件中。这种存储方法可让您在多个不同的位置使用同一规则。

若要在外部文件中存储规则,需要先为新文件设定默认文件扩展名。应该根据文件的编辑方式选择默认扩展名。例如,如果您要在 Visual Studio 中编辑文件,则可以将默认扩展名设定为 .vb.txt 扩展名可让您使用文字编辑器(例如 Microsoft 记事本)编辑规则。或者,如果您的文件包含将被 iLogic 预处理的标准 iLogic 规则代码,则可以将默认扩展名设定为 .iLogicVB

iLogic 规则可以使用其他 .NET 部件中的代码。您可以指定这些 .NET 部件所在的目录。您可以使用编程工具(例如 Visual Studio 2008)开发 .NET 部件。请参见“高级规则编程”,以获取有关在规则中使用 .NET 部件的详细信息。

使用 Automation 界面访问参数和规则

iLogic 提供了一个自动化接口。您可以使用此接口从 Inventor VBA、VB6 或 .NET 代码访问参数和规则。

iLogicAutomation 可启用此功能。

在 VBA 或 VB 项目中,您可以将其作为后期绑定类型(声明为对象)使用,而无需添加参考。由于它不是完整的 .COM 对象,您无法浏览其方法。

DoubleForEquals 数据类型

iLogic 使用称为 DoubleForEquals 的自定义数据类型存储参数值。DoubleForEquals 支持简单的数值比较。此参数与标准的 VB.NET 类型 Double 相似。但在比较 DoubleForEquals 值时,会将其视为 Single 值(有 7 个而非 15 个小数位)。在默认情况下,规则中的参数将声明为 DoubleForEquals

利用 DoubleForEquals,在比较中忽略舍入错误更加容易。例如,假设您的零件使用英寸作为文档单位,而您有一个值为 13/16 英寸的参数。由于参数值在模型中以厘米存储,该零件在规则中不会准确地等于 13/16。然后,该值会被转换为英寸以在规则中使用。考虑以下比较:

if d0 = 13/16 then ... 

在此示例中,如果 d0 为 Double 类型,比较则会失败。但是,如果 d0 为 DoubleForEquals 类型,比较则会成功。

DoubleForEquals 将值存储为 Double 类型,并将值视为 Double 值执行所有计算。只有执行比较时,才将值视为 Single 值。

如果需要,您可以使用 CDbl 函数将参数值转换为 Double 值。

DoubleForEquals 在 VB.NET 中为 Structure(一种值类型)。

DoubleForEquals 将值与零进行比较

DoubleForEquals 将与零进行的比较视为特殊案例。如果测试相等的两个数值中有一个为零,则如果另一个数值小于 0.0000001(绝对值),测试会成功。

此比较使得忽略值中接近于零的舍去错误更加容易。例如,以下比较确定 x = 0:

angle = PI/2
x = cos(angle)
If (x = 0) Then
...
End If

何时禁用 DoubleForEquals

DoubleForEquals 是规则中使用的所有 Inventor 参数的默认类型。您可以出于以下原因禁用此设置: