标题是需要在“编辑规则”对话框中的规则代码前面输入的语句。可以直接在标题编辑器中输入标题语句,也可以在主编辑器中输入,iLogic 会将其移至标题编辑器。 注: 大多数规则不需要标题。
若要访问标题编辑器,请执行以下操作之一: - 单击“标题”。
- 在规则编辑器窗口中键入有效标题语句(例如 Imports):标题编辑器将自动作为激活编辑器打开。
标题编辑器支持以下语句: Option Explicit On Option Strict On Option Infer Off AddReference "filename.dll" Imports ... AddVbRule "Other Rule" AddVbFile "filename.vb" AddResources "filename.resources" Option 和 Imports 是标准的 VB.NET 语句。 Option Explicit Off 是默认值。它可让您在不进行声明的情况下使用局部变量。 Option Strict Off 是默认值。Option Strict On 也适用于大多数规则。 Option Infer On 是默认值。 主规则代码是“隐含”子例程。若要添加更多子例程、函数、特性或类,请按照如下方式声明 Sub Main(): Sub Main()' your main rule code hereEnd Sub 不论规则是否包含其他代码,Sub Main() 均可在任意规则中使用。若要了解有关明确声明规则类的更多详细信息,请参见“如何处理规则?”。
AddReference使用特殊的 iLogic 语法。将 DLL 名称添加至 AddReference 语句与在 Visual Studio 或 Visual Basic Express 中使用 AddReference 命令并浏览 DLL 作用相同。 仅支持 .NET 部件。DLL 可以为标准 Microsoft 部件,与在 Microsoft.NET\Framework 文件夹中相同。 例如,考虑以下语句: AddReference "System.Drawing.dll"在此语句中,.dll 扩展名是可选的。 您也可以指定用户创建的类库或第三方类库作为参考。用户创建的 DLL 或第三方 DLL 必须全部位于一个文件夹中。默认情况下,这些 DLL 位于 Inventor 安装文件夹下的 iLogicAdd 子文件夹中,例如: C:\Program Files\Autodesk\Inventor [版本]\Bin\iLogicAdd 您可以使用“iLogic 配置”命令更改此位置。您也可以在 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。
AddVbRule将指定规则中的代码作为与主规则一起编译的 VB 代码包括在规则中。指定规则不能为标准规则。必须在“编辑规则”对话框的“选项”面板中为该代码启用“直接 VB 代码”选项。iLogic 不会预处理此类规则中的代码。该规则包含可以从其他规则中调用的类或模块。使用此语句可在规则间共享代码,或者保留代码模块化。 示例 AddVbRule "Other Rule"
AddVbFile该语句执行的操作与 AddVbRule 相似,但 VB 代码却存储在外部文件(而非规则)中。与使用 AddVbRule 相同,必须为代码启用“直接 VB 代码”选项。此语句对于在模型间共享相同的代码十分实用。文件规格必须为相对路径名称。iLogic 使用搜索外部规则所采用的相同搜索顺序在当前 Inventor 文档及其他文件夹中搜索文件夹。 示例 AddVbFile "fileName.vb"
AddResources添加字符串或位图等资源。这些资源必须使用 Visual Studio 进行编译。 示例 AddResources "fileName.resources"
导入不允许重复使用导入语句。可以在所有规则中隐含使用以下默认导入语句: - Imports System
- Imports System.Math
- Imports System.Collections
- Imports Microsoft.VisualBasic
- Imports Autodesk.iLogic.Interfaces
- Imports Autodesk.iLogic.Runtime
如果在规则中使用 MessageBox,则 iLogic 会自动添加以下语句: Imports System.Windows.Forms如果使用 ThisApplication 或其他 Inventor 对象,则 iLogic 会自动添加以下语句: Imports Inventor
规则参数iLogic 提供的高级功能允许您将上下文信息以规则参数形式传递给运行的规则。可使用该信息修改规则的行为,而不必创建重复的规则。 您可以使用 IiLogicAutomation 界面(用于外部客户端)和 iLogicVB(用于其他规则代码和内部客户端)中可用的函数来传递参数。这些参数可通过 RuleArguments 特性在规则中使用。 对于 IiLogicAutomation,可用的函数包括: 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 对于 iLogicVB,可用的函数包括: 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...使用 RunRule 将该组参数传递给其他规则 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 MainEnd 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 中衍生。
外部 DLL您可以使用 .NET 编写自己的外部 DLL,然后从规则中调用它们。若要对 DLL 进行调试,请在“项目特性”“编译为 iLogicAdd”下面设定构建输出路径(在 Inventor Bin 文件夹下面)。然后,在 Visual Studio 中,为项目特性中的“启动外部程序”选择“Inventor.exe”。此方法可让您利用调试环境的一切优势功能,包括“编辑”和“继续”。 当使用规则显示可让用户进行输入的对话框时,外部 DLL 十分实用。
Inventor API若要从规则中访问 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。
在外部 DLL 中使用 iLogic 接口所有 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 接口。 |