iLogic 浏览器将列出 iLogic 规则、表单、全局表单和外部规则。
在 iLogic 浏览器中还可以使用项目的关联菜单。该菜单中包含的命令随选择的项目而不同。
iLogic 浏览器显示后将保持显示状态,直至您手动关闭它。此设置可以跨任务保持。
通过启用或禁用“iLogic 浏览器”复选框,可以显示和隐藏 iLogic 浏览器。此复选框可以在“视图”选项卡的“窗口”面板上的“用户界面”下拉列表中找到。
iLogic 将规则作为对象直接嵌入到零件、部件和工程图文档中。规则可确定并驱动设计参数和属性值。通过控制这些值,您可以定义模型属性、特征及零部件的行为。知识内容可以直接保存在文档中,就像存储几何设计元素一样。
在规则中,您可以将标准 Inventor 参数名称作为 Visual Basic 变量使用。当运行规则时,会将此类参数的值指定给此类变量。对于数值参数,该值是以“工具”
“文档设置”中指定的文档单位表示的实数。在规则中,文本参数会变成字符串变量。真/假参数会变成布尔变量。
在规则中使用以下某一个 Autodesk Inventor 实体名称之前,如果该实体在创建时指定了默认名称,请更改其名称:
使用有意义的名称。名称更改可以让您或模型的其他用户更容易了解规则的作用。
更改默认名称的另一个目的是为了使名称更容易移植。在本地化之后的 Autodesk Inventor 版本中,默认项目名称已被翻译成该版本对应的语言。这些名称在模型浏览器中会自动更改,但在 iLogic 规则中不会自动更改。因此,规则可能会找不到使用默认名称的项目。如果其他人在其他语言版本的 Inventor 中使用模型,则必须更改默认名称。此建议仅适用于在规则中通过名称调用的项目。例如,测量函数可以使用定位特征名称。如果您有定位特征,但不在测量函数中使用它们,则您无需对其进行重命名。此建议的一个例外是嵌入式 Excel 工作表。请勿对其进行重命名。
在非英文版的 Autodesk Inventor 中,请在规则中使用英文名称。例如:
"3rd Party:Embedding 1"
如果在规则中将参数直接用作变量,则通常情况下当参数值发生更改时,规则会为响应更改而自动运行。也可以通过事件触发规则。
除非规则被抑制,否则在您编辑规则后,规则会立即运行。当规则运行时,参数中的更改直到规则运行完毕后才更新模型。如果需要,您可以使用以下任一函数强制参数更改立即生效:
当您创建或编辑规则时,规则文本会被转换为有效的 VB.NET 代码,然后进行编译。某些 Inventor 参数名称不是有效的 VB.NET 变量名称。为允许您使用所有 Inventor 参数名称,iLogic 会在内部为 Inventor 参数替换新变量名称。
尽管您可以将 Visual Basic 关键字用作参数名称,但不建议对新文档这样做。但是,当您将规则添加至现有文档时,通常不需要更改任何参数名称。如果存在与关键字相同的名称,而您又需要在规则中使用该关键字,则可以:
您可以在规则中使用 Inventor 单位,方式与在标准 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。系统会在消息框中显示该值并指示文档单位为英寸。
在该示例中,零件文件使用英寸作为文档单位。在“iLogic 参数编辑器”中:
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 并指示已在参数编辑器中定义混合单位。
外部规则可以用作 iLogic 规则或者手动运行的小程序(如 VBA 宏)。它们单独储存在文本文件或 VB 文件中,独立于任何 Inventor 文档(零件、部件或工程图)。您可以手动运行它们,也可以从其他规则中运行它们。
在部件文档中,选择“三维模型”选项卡以显示零部件,或选择“文件树”选项卡以显示子部件和零件文件。展开零件文件项目以显示该文件内的参数和特征。
例如,捕获参数的当前状态以插入该参数及其当前值,例如 d0 = 4.0 in。
捕获参数时始终同时捕获其单位,但在编写新表达式时不需要使用单位。您可以在参数组上单击鼠标右键,以捕获特定类型的所有参数的状态。也可以在特征或零部件上单击鼠标右键,以捕获其当前的 IsActive 状态(抑制或未抑制)。
使用“编辑规则”对话框中规则文本区域上方的工具栏上的下拉列表,将语法字符串插入到规则中,而不是手动输入语法。插入后,您可以根据需要自定义这些字符串。提供适用于以下各项的选项:
使用“编辑规则”对话框的“代码段”区域中的选项将代码段插入到规则中。然后,您可以根据需要修改插入的代码段。
iLogic 不会预处理规则中标识为直接 VB 代码的代码,因此,Inventor 参数名称在规则中无法识别。规则应该包含可以从其他规则中调用的类别或模块。使用此选项可在规则间共享代码,或者作为保留代码模块化的方法。但是,请注意,共享代码更难编写。
“iLogic 浏览器”包含一个外部规则选项卡。通过此选项卡,您可以加载外部规则或创建新外部规则。
将外部规则另存为 .iLogicVb 文件(建议使用此扩展名),或者另存为 .vb 或 .txt 文件。将外部规则保存到从其他规则中运行这些外部规则时能够找到的文件夹中。iLogic 会按照所列顺序在以下文件夹中查找外部规则文件:
您可以为“iLogic 浏览器”中显示的外部规则加入图标。在规则文件所在的文件夹中创建一个与规则文件同名的 .bmp 文件(建议大小为 16 x 16)。
例如,如果外部规则名为 Custom Checks Rule.iLogicVb,则将该图标文件命名为 Custom Checks Rule.bmp。
创建位图图像后,重新启动 Autodesk Inventor 即可显示该图标。Autodesk Inventor 运行时,您无法编辑该图标。
若要编辑外部规则,请打开“编辑规则”对话框,然后双击树中的规则以进行编辑。
也可以使用外部程序(例如“记事本”)来编辑规则。保存规则后,在树中使用关联菜单中的“从文件重新加载”可将更改带入 Inventor 中。
您可以使用规则显示让用户进行输入的对话框。对话框可以包含在规则中;但是,将其包含在外部 DLL(类库)中会更加简单、灵活。
使用 Visual Studio 版本 2005 或 2008。Visual Basic Express 可以从 Microsoft 免费下载。
系统将在 Windows Form Designer 中显示对话框的图形视图。您可以使用此界面将控件添加至对话框。
屏幕左侧的“工具箱”列出了您可以添加至对话框的控件。对于此项目,请添加文本框以显示 Inventor 参数的值,并且可让您编辑该参数。

Public Class Dialog1
Public d0 As Double
d0 = TextBox1.Text

现在,您基本可以构建项目了。当您执行构建操作时,Visual Basic 会创建 DLL 文件。您可以通过修改构建操作的输出路径指定 Visual Basic 创建此文件的位置。
AddReference "ClassLibrary1" Sub Main() dim dlg as new ClassLibrary1.Dialog1 dlg.d0 = d0 i = dlg.ShowDialog() if (i = vbOK)then d0 = dlg.d0 end if End Sub
此规则会将 Inventor 参数 d0 的当前值发送给对话框,然后显示该对话框。使用对话框的用户可以在对话框中编辑该值。如果该用户单击“确定”,则会将对话框中的值重新指定给该参数。
TextBox1.Text = d0
Public Class Dialog1
Public d0 As Double
d0 = TextBox1.Text
Imports System.Windows.Forms Public Class Dialog1 Public d0 As Double Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click Me.DialogResult = System.Windows.Forms.DialogResult.OK Me.Close() End Sub Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click Me.DialogResult = System.Windows.Forms.DialogResult.Cancel Me.Close() End Sub Private Sub Dialog1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TextBox1.Text = d0 End Sub End Class
AddReference "ClassLibrary1" Sub Main() dim dlg as new ClassLibrary1.Dialog1 dlg.d0 = d0 i = dlg.ShowDialog() if (i = vbOK) then d0= dlg.d0 end if End Sub
此规则会将 Inventor 参数 d0 的当前值发送给对话框,然后显示该对话框。使用对话框的用户可以在对话框中编辑该值。如果该用户单击“确定”,则会将对话框中的值重新指定给该参数。
在 iLogic 浏览器中的规则或参数上单击鼠标右键可显示该项目的关联菜单。
运行规则。使用此命令可测试规则或确保模型是最新的。也可以使用此命令运行不会自动运行的规则。
运行文档中的所有规则。如果文档为部件,此命令还会运行所有子部件和零件中的所有规则。您可以使用此命令确保模型是最新的。一旦遇到错误,该命令即停止运行。如果收到错误,请编辑引起问题的规则,然后重新运行此命令。
如果您对由规则驱动的模型进行了更改,也可以使用此命令。规则仅会为响应参数更改而运行。可由规则设定的任何其他项目(例如特征或零部件抑制、iPart 配置、手动更改或 iProperty)均可独立更改。
除非通过包含 iLogicVb.RunRule("ruleName") 函数另行指定了顺序,否则规则会按照在浏览器中出现的顺序运行。
将规则重新连接至 Inventor 参数,重新编译规则,然后运行规则。与“运行所有规则”相似,此命令会处理子部件和零件中的规则。
您只能使用 Autodesk Inventor 参数指定语句、预先定义的 iLogic 函数及简单的 VB.NET 代码编写 iLogic 规则。但是,您可以随意使用这些技术。您可以在规则中使用更高级的 VB.NET 功能。Visual Basic 2005 或 2008 可用于创建可从规则中调用的外部 DLL 文件。您也可以调用使用 C# 或 C++ 编写的 DLL 文件。
在规则代码中支持 Visual Basic 2008 (.NET Framework 3.5) 语法。
AddResources "filename.resources"
Option 和 Imports 是标准的 VB.NET 语句。
Option Explicit Off 是默认值。它可让您在不进行声明的情况下使用局部变量。
Option Strict Off 是默认值。Option Strict On 也适用于大多数规则。
主规则代码是“隐含”子例程。若要添加更多子例程、函数、特性或类,请按照如下方式声明 Sub Main():
不论规则是否包含其他代码,Sub Main() 均可在任意规则中使用。若要了解有关明确声明规则类的更多详细信息,请参见“如何处理规则?”。
使用特殊的 iLogic 语法。将 DLL 名称添加至 AddReference 语句与在 Visual Studio 或 Visual Basic Express 中使用 AddReference 命令并浏览 DLL 作用相同。仅支持 .NET 部件。DLL 可以为标准 Microsoft 部件,与在 Microsoft.NET\Framework 目录中相同。
AddReference "System.Drawing.dll"
您也可以指定用户创建的类库或第三方类库作为参考。用户创建的 DLL 或第三方 DLL 必须全部位于一个目录中。默认情况下,这些 DLL 位于 Autodesk Inventor 安装目录下的 iLogicAdd 子目录中,例如:
C:\Program Files\Autodesk\Inventor [版本]\Bin\iLogicAdd
您可以使用“iLogic 配置”命令更改此位置。您也可以在 Autodesk Inventor Bin 主目录(例如 C:\Program Files\Autodesk\Inventor [版本]\Bin)中添加对 DLL 的参考。
AddReference 语句不支持完整路径指定。您只能指定文件名。使用如下合格名称添加对 Global Assembly Cache (GAC) 中的部件的参考:
AddReference "VsWebSite.Interop, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”
您也可以在规则中使用 CreateObject 或 GetActiveObject 来创建或访问已注册的 COM 对象。不必针对 COM DLL 使用 AddReference。
将指定规则中的代码作为与主规则一起编译的 VB 代码包括在规则中。指定规则不能为标准规则。必须在“编辑规则”对话框的“选项”面板中为该代码启用“直接 VB 代码”选项。iLogic 不会预处理此类规则中的代码。该规则包含可以从其他规则中调用的类或模块。使用此语句可在规则间共享代码,或者保留代码模块化。
AddVbRule "Other Rule"
该语句执行的操作与 AddVbRule 相似,但 VB 代码却存储在外部文件(而非规则)中。与使用 AddVbRule 相同,必须为代码启用“直接 VB 代码”选项。此语句对于在模型间共享相同的代码十分实用。文件规格必须为相对路径名称。iLogic 使用搜索外部规则所采用的相同搜索顺序在当前 Autodesk Inventor 文档目录及其他目录中进行搜索。
AddVbFile "fileName.vb"
不允许重复使用导入语句。可以在所有规则中隐含使用以下默认导入语句:
如果在规则中使用 MessageBox,则 iLogic 会自动添加以下语句:
Imports System.Windows.Forms
如果使用 ThisApplication 或其他 Autodesk Inventor 对象,则 iLogic 会自动添加以下语句:
Imports Inventor
iLogic 提供的高级功能允许您将上下文信息以规则参数形式传递给运行的规则。可使用该信息修改规则的行为,而不必创建重复的规则。
您可以使用 IiLogicAutomation 界面(用于外部客户端)和 iLogicVB(用于其他规则代码和内部客户端)中可用的函数来传递参数。这些参数可通过 RuleArguments 特性在规则中使用。
Function RunRuleWithArguments(ByVal doc As Inventor.Document, ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Function RunExternalRuleWithArguments(ByVal doc As Inventor.Document, ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Function RunRuleDirectWithArguments(ByVal rule As iLogicRule, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Function RunRule(ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Function RunRule(ByVal compoOrDocName As Object, ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Function RunExternalRule(ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
若要创建规则参数,请使用 Inventor API 创建新的 NameValueMap 对象。然后,该对象将在运行该规则时传递给某个函数。
x = RuleArguments(“myArg”)
If RuleArguments.Exists(“myArg”) Then...
iLogicVB.RunRule(“someOtherRule”, RuleArguments.Arguments)
如果使用 Sub Main(),规则会遵循类的标准 VB.NET 格式,但 Class... 和 End Class 语句将不可见,且 Sub Main() 前面的语句在该类外部。因此,需要将所有指定语句放到 Sub、Function 或 Property 内部。您可以在子例程或函数外部包括类成员变量的声明语句(例如 Private temp As Double = 4.5)。
您可以将 Sub、Function、Property 和 Class 定义添加到 Sub Main()... End Sub 的后面。添加的任何 Class 均嵌套在该规则的主规则 Class 中,无法从其他规则进行使用。若要添加独立的 Class 或 Module,使用以下内容明确地声明该规则 Class:
Class ThisRule ' ... Sub Main End Sub ' ... End Class
然后可以在该代码外添加另一个 Class 或 Module(也可添加多个)。Class ThisRule 成为主规则 Class,iLogic 将调用 Sub Main(在其内部)以运行规则。
若要包含对于多个规则可见的 Module 或 Class,请将其放在外部部件 (DLL) 中。可以在一个 DLL 中放置多个模块或类。您也可以使用 AddVbRule 将它们放在 Inventor 文档 () 内标识为“直接 VB 代码”的规则中。或者,使用 AddVbFile 将它们放在外部 VB 文件中。
当您开发高级 VB.NET 代码时,请使用 Visual Studio 或 Visual Basic Express,而不要直接在规则中进行编码。然后,您可以从 Visual Studio 中剪切相对较小的代码段,然后将其粘贴到规则中。您甚至可以粘贴到整个对话框 Class 中(虽然资源不容易支持)。或者在需要的地方,为更大的代码单元创建部件,然后将其作为外部 DLL 从规则进行使用。
您可以使用 iLogic 规则共享变量函数来存储用户定义的 Class 实例对象。若要存储这些对象,请序列化 Class,否则必须将其从 MarshalByRefObject 中衍生。
您可以使用 .NET 编写自己的外部 DLL,然后从规则中调用它们。若要对 DLL 进行调试,请在“项目特性”
“编译为 iLogicAdd”下面设定构建输出路径(在 Inventor Bin 目录下面)。然后,在 Visual Studio 中,为项目特性中的“启动外部程序”选择“Inventor.exe”。此方法可让您利用调试环境的一切优势功能,包括“编辑”和“继续”。
若要从规则中访问 Inventor API,请使用 ThisApplication 特性访问 Inventor 应用程序。使用 ThisDoc.Document 访问包含当前规则的文档。您可以创建和修改特征。使用 Parameter.Param 直接访问 Inventor.Parameter。
若要从您自己的 DLL 中使用 Inventor API,请在您的 Visual Basic 项目中添加对 Autodesk.Inventor.Interop.dll 的参考。它将显示在“添加参考”对话框上的“.NET”选项卡上。对于 Inventor 2011,该版本为 15.0.0.0。
所有 iLogic 函数都分组在诸如 Parameter、iProperty、iPart 等接口对象下。您可以将 iLogic 接口对象作为参数传递给外部 DLL 中的函数。若要在项目中使用这些对象,请添加对 Autodesk.iLogic.Interfaces.dll 的参考。选择“添加参考”对话框中的“浏览”选项卡,浏览至 Inventor Bin 目录下的 iLogicBin 目录(通常位于 C:\Program Files\Autodesk\Inventor [版本]\Bin\iLogicBin)。
在 Autodesk.iLogic.Interfaces.xml 中提供了 iLogic 接口的文档。在 Visual Studio 中,您可以使用“对象浏览器”读取接口描述。这些描述包括在规则中实现接口的对象的名称。例如,规则中的 Feature 对象实现 ICadFeature 接口。

为表单设计树中亮显的项目定义特性。特性会因选定的项目而不同。
允许调整控件大小 | 如果设置为“真”,则启用表单上的快捷菜单选项“调整控件大小”。此选项允许您调整控件和组的大小。 |
编辑控件类型 | 定义要使用的控件类型以编辑此参数。 |
启用参数名称 | 定义 Inventor 真/假参数的名称。将此参数设置为“真”可启用该控件。 |
字体 | 定义该控件的字体。 |
内容的字体 | 定义此表单或组内控件的字体。 |
图像 | 定义要显示在该控件内的图像文件。 |
标签 | 定义表单中此元素的显示文本。 |
最大宽度 | 定义该控件的最大宽度。该数字指示以指定字体显示的字符数。 |
最小宽度 | 定义该控件的最小宽度。该数字指示以指定字体显示的字符数。 |
模态 | 如果设置为“假”,则可以在表单处于激活状态时与模型交互,并使用其他功能。 |
图片参数名称 | 定义基于参数值更改的图片控件。为图片控件指定参数,而不是指定图像。配合使用包含图片的“图片文件夹”,其中的图像均指定了参数值。 请参见“在表单中使用图像”。 |
预定义的按钮 | 定义显示在表单底部的按钮。从预定义集合列表中进行选择。 |
只读 | 如果设置为“真”,则将参数设置为不可从表单中编辑。 |
显示项目边框 | 如果设置为“真”,将显示控件周围的所有边框。 |
装入零部件时显示 | 如果设置为“真”,则将该模型作为零部件装入部件时,会显示表单。此设置会影响“装入零部件”和“装入 iLogic 零部件”。如果模板文件包含表单,则该设置也会影响“创建在位零部件”。 |
内容的文本位置 | 定义此表单或组内控件的文本位置。 |
工具提示 | 定义鼠标悬停在控件上方时显示的工具提示文本。 |
视觉样式 | 定义表单的视觉样式或皮肤。从选项列表中进行选择。 |
使用此对话框可添加或编辑用于从 iLogic 浏览器启动表单和触发规则的控件。

| | 表单 | 添加空白用户界面表单。使用“表单编辑器”对话框自定义表单。 |
| | 分组 | 对 iLogic 浏览器上的项目进行分组。各组周围都有边框,并且可收拢。 |
| | 选项卡组 | 在 iLogic 浏览器内创建选项卡式组。 |
| | 行 | 创建行使您可以横向组织控件。默认情况下,控件是纵向组织的。 |
| | 空白空间 | 在“iLogic 浏览器”选项卡上添加空白空间。 |
| | 标签 | 在“iLogic 浏览器”选项卡上添加文字标签。 |
| | 拆分条 | 在“iLogic 浏览器”选项卡上添加可调整尺寸的拆分条。 |
为表单设计树中的亮显项目定义特性。特性会因选定的项目而不同。