如何添加您的知识

扩展和自定义 iLogic 功能

    内容表格
    No headers

    将规则存储在外部文件中

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

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

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

    使用自动化接口

    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 参数的默认类型。您可以出于以下原因禁用此设置:

    • 使用库函数或使用需要 Double 类型的自定义代码。已进行所有尝试以启用“透明转换为 Double”。但是,如果函数需要 Object 类型的参数,则不会执行任何转换。如果传递了 DoubleForEquals 对象,则函数可能需要 Double 类型。您可以使用 CDbl 或禁用 DoubleForEquals
    • 您需要更多地控制规则中的相等测试或比较。例如,您要自己指定公差。
    • 您的规则不包括任何相等测试,而您想要通过直接使用 DoubleForEquals 来避免使用 Double
    • 您的规则包括一些相等测试,但参数超出了 Single 值的动态范围(约为 1.4e-45 到 3.4e38)。虽然这种情况不太可能在 Inventor 模型中出现,但是,如果使用非长度单位,则有可能会出现这种情况。

    配置 iLogic 选项

    为外部规则和 DLL 文件配置位置

    1. 在功能区上,单击 “工具”选项卡 “选项”面板 “iLogic 配置”
    2. 单击“外部规则目录”旁边的 以将目录添加至列表,然后使用向上和向下箭头定义搜索顺序。
    3. 在“外部规则文件的默认扩展名”字段中选择文件扩展名。
    4. 在“iLogic 附加模块 DLL 目录”字段中选择包含其他 .NET 部件中的代码的目录。
    5. 单击“确定”。

    访问自动化对象

    若要从 iLogic 规则访问自动化对象,请使用 iLogicVb.Automation 特性。

    自动化对象可实现接口 Autodesk.iLogic.Interfaces.iLogicAutomation。在 Autodesk.iLogic.Interfaces.xml 中提供了此接口的文档。

    禁用 DoubleForEquals

    DoubleForEquals 是在规则中使用的所有 Inventor 参数的默认类型。在规则的开头使用以下语句可禁用此设置:

    iLogicOption DoubleForEquals Off

    此语句与标准 Visual Basic Option 语句相似。

    显示 iLogic 版本详细信息

    若要显示一个对话框,以显示 iLogic 版本信息,在功能区上单击 “管理”选项卡 “iLogic”面板 “关于 iLogic”

    高级 iLogic 配置

    为外部规则和 DLL 文件配置高级位置设置。

    访问:

    功能区:“工具”选项卡 “选项”面板 “iLogic 配置”

    外部规则目录

    列出 iLogic 在其中搜索包含规则的外部文件的目录。加号图标 + 用于将目录添加至列表。向上和向下箭头用于排列目录以按该顺序搜索。

    外部规则文件的默认扩展名

    为新外部规则文件设定默认文件扩展名。

    • .vb 文件可以在 Visual Studio 中进行编辑。
    • .txt 文件可以使用文本编辑器(例如 Microsoft 记事本)进行编辑。
    • .iLogicVB 指示文件包含要由 iLogic 预处理的标准 iLogic 规则代码。

    iLogic 附加模块 DLL 目录

    对于使用其他 .NET 部件中的代码的规则,此字段指定包含 .NET 部件的目录。“浏览”按钮用于选择目录。

    确定

    保存高级位置设置。

    取消

    取消操作,并关闭对话框。

    其他 VB 学习资源

    使用 Web 浏览器联机搜索 VB 教程和信息。

    自动化接口的示例代码

    可以在以下位置找到用于访问 iLogic 的示例 VBA 宏:

    • Windows XP

      Program Files\Autodesk\Inventor [版本]\Samples\iLogic Samples\API\iLogicAutoTest.ivb

    • Windows Vista 或(可能)Windows 7

      Users\Public\Documents\Autodesk\Inventor [版本]\Samples\ iLogic Samples\API\iLogicAutoTest.ivb

    在以下示例代码中,GetiLogicAddin 函数演示如何在 VBA 或 VB 中访问 iLogic Automation 对象。

    在 Inventor VBA 中编写的以下示例代码将驱动文本参数的值。它要求在当前的 Inventor 模型中存在名为 text0 的参数。它也会列出模型中的所有规则。

    使用 iLogicAuto.ParamValue 获取或设定参数值。它在内部使用 iLogic Parameter 特性。

    请参考扩展和自定义 iLogic 功能以获取有关自动化接口的详细信息。

    关于 iLogic

    显示 iLogic 版本信息。

    访问:

    功能区:单击“管理”选项卡 “iLogic”面板 “关于 iLogic”
    版本显示 iLogic 版本。
    内部版本号显示所使用的软件内部版本号。
    日期显示创建版本的日期。
    支持包含 iLogic 的支持链接。
    确定关闭对话框。