CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD大学

相关分类

Inventor iLogic 成功的最佳实践和基础知识

2023-1-13 07:22| 发布者: admin| 查看: 69| 评论: 0|来自: AutoCAD

摘要: 了解如何使用行业最佳实践编写 Inventor iLogic 代码,以提高设计的性能、质量和一致性。

什么是 iLogic?

在大多数情况下,使用任何类型的桌面应用程序的人都了解什么是自动化。如果您使用过Microsoft Excel,您可能听说过宏,这是在Excel中开发和设计的工具,用于完成特定任务。发明家从某种意义上说,自动化是非常相同的,虽然自动化可以采取许多不同的事物的形式,但本质上,它是一个工具或一系列工具,用于自动完成特定任务、流程或功能。iLogic 是 Inventor Automation 的一种形式。

iLogic 是 Inventor 的一项功能,允许用户和管理员以 VB.net 的形式创建逻辑来完成任务。规则是使用代码片段和其他代码编写语句开发和组织的,以便在给定时间运行,以一致地完成工程师和设计人员需要完成的一些工作。

您可以开发一系列 iLogic 规则来执行一些操作,例如基于不同的模型标准更新 iProperties 或根据在 iLogic 表单中所做的选择替换装配体中的元件,甚至更新关联图形中的文本块。关于iLogic可以做什么,这个列表很长。问题是,你想让它为你做什么?

我为什么要接受 iLogic?

现在我们已经了解了 iLogic 是什么,让我们来看看您可能希望将 iLogic 纳入工程流程的原因

首先,根据我与世界各地大大小小的制造公司合作的经验,制造和制造许多不同类型的产品,有一件事总是正确的:在每个环境中都有模式和可重复的重头戏。关键是要找到iLogic可以提供帮助的那些。这项简单的任务需要深入了解 Inventor 在您的流程中发挥作用的所有方面。

例如,假设您有一个特定的格式来描述您的3D模型或任何iProperties。如果格式是可预测的,如果它是标准化的,那么在这种情况下,iLogic可以提供帮助。您可以开发逻辑来从模型中收集信息,转换该信息,然后使用正确的新格式信息覆盖 iProperties。它总是正确的,它总是一致的,它从不要求喝咖啡休息。

相关将其提升到一个新的水平:与Thomas Fitzgerald一起使用Autodesk Inventor进行绘图自动化

配置 Inventor 以使用 iLogic

我需要对 Inventor 执行哪些操作才能有效地使用 iLogic?

尽管 iLogic 包含在 Inventor 中,并且您可以立即开始创建和使用 iLogic,但了解一些设置需要解决才能充分利用 iLogic 是很有帮助的。“iLogic 配置”按钮允许用户配置不同的设置,以定义 Inventor 在何处可以找到支持信息。

config

用户和管理员需要修改这些设置,以控制 Inventor 查找外部规则目录的位置以及这些目录的顺序优先级。用户还可以定义 Inventor 将找到任何 DLL 或动态链接库的目录位置。DLL 是 Microsoft Visual Studio 的输出,用于开发自定义用户界面以驱动和触发 iLogic 规则和其他逻辑。

设置对话框使用户有机会设置将保存为的文件扩展名外部规则以及可以生成调试信息的默认日志记录级别。还有一些“安全选项”设置可以保护计算机和网络系统免受在 Inventor 环境中运行的潜在危险代码的影响。本文档后面将提供有关外部规则和调试的详细信息。

内部规则与外部规则

我应该使用哪一个以及何时使用?

iLogic 规则有两种形式:内部规则和外部规则。这两种类型的规则都是在 iLogic 浏览器中的 Inventor 上下文中创建的。

browser

内部规则是在文件上下文中创建和存储的规则。零件、装配体和工程图文件都能够存储、编译和运行规则,以不同的方式影响每个文件。外部规则几乎完全相同,但是,它们不存储在 Inventor 文件中。由于内部规则存储在文件中,因此对这些文件具有权限的用户可以访问它们。外部规则存储在用户系统上本地或服务器上的中央目录中,与地理位置无关。

由于外部规则存储在文件外部的文件夹中,因此这些规则的安全性级别更高。是的,用户可以打开并查看规则代码,但是,系统管理员可以通过定义对外部规则文件夹的文件夹权限来控制访问和可编辑性。因此,在企业环境中,许多用户可能希望在整个设计过程中运行代码,首选外部规则。如果条件不需要权限控制,或者多个用户不需要同时使用规则逻辑,那么内部规则可能就足够了。

这两种类型的规则在 iLogic 浏览器中都可见,如下图所示。

rules

右键单击任一类型的规则都可以控制“抑制”或“取消抑制规则”等功能,以控制何时触发规则、删除规则或将其从列表中删除。

参数和属性

我应该如何使用它们?

Autodesk Inventor 是一个“3D 参数化设计应用程序”。嗯,这是什么意思?参数是特定类型的命名值占位符。Inventor 中的大多数参数都是数字类型,并且与控制几何图形的尺寸相关联。随着参数值的更改,与这些参数关联的维度也会更改,从而以图形方式更新模型。Inventor 中基本上有四种类型的参数:

1) 型号参数

2) 用户参数

3) 参考参数

4) 链接参数

模型参数是由正常 Inventor 行为创建的参数。在“参数”对话框中,这些参数自动命名为 d0、d1、d2 等。模型参数由 Inventor 控制,这意味着系统会根据需要创建和删除模型参数。

用户参数是用户创建的参数。它们可以是数字、文本或字符串,也可以是真/假或布尔值。用户参数尤其重要,因为这些参数由用户创建,由许多不同的功能和 iLogic 代码使用,而不是由正常的 Inventor 行为创建或删除。

注: 通过应用命名约定和类型创建用户参数是在 iLogic 规则中使用参数信息的首选方法。尽管可以重命名模型参数,但它不是首选方法。

参照参数是在 Inventor 定义“从动尺寸”时创建的。如果您在 Sketch 环境中工作时曾经看到过此对话框:

sketch

在这种情况下选择“接受”将创建引用参数。在“参数”对话框中,您将看到参数名称和值,但不能更改该值。您可以更改名称,这有助于在 iLogic 代码中使用该值。

链接参数是指通常从 Excel 电子表格链接到 Inventor 的参数。当用户更新 Excel 电子表格中的名称和值时,这些更改将反映在 Inventor 中,最终驱动尺寸值、控制特征、管理装配体等。

属性或 Inventor 术语中的 iProperties 是有关文件的附加描述符或其他有价值的信息。这有时称为元数据。属性并不是什么新鲜事,在尝试收集有关文件的大量数据时非常有用。文件名、文件大小、作者、修改日期;所有这些都是属性。大多数情况下,在处理 iLogic 和 Inventor 文件数据时,文件名和文件路径是要处理的两个最常见的属性。其他流行的属性包括零件号、库存号、描述、质量、成本和自定义属性。所有属性均为“已读”,大多数属性为“启用写入”。

声明变量、类型转换和共享变量

使用这个编码笨拙的巨无霸有多重要?

iLogic是代码,简单明了。虽然一个人不需要成为程序员,甚至不需要知道如何编写代码,但拥抱代码编写最佳实践的一些基础知识将使您走得更远。这是因为有一些所有程序员都理解的标准。声明变量和类型转换是这些标准之一。为什么这很重要?嗯,这就像说任何语言一样。有一个标准可以减轻编写逻辑时的一些混乱。

声明变量和类型转换

声明变量实际上非常简单。在 iLogic 中,它只是简单地写一个名字并给它一个值:

长度 = 20

一旦我创建了一个变量,那么我就可以用它做一些事情了。我可以读取值并在计算中处理它,或者我可以写入它以更新其他内容。尽管在 iLogic 中键入名称和值对是可以接受的,但利用代码编写最佳实践的更好方法是键入名称,为其指定“类型”,然后提供一个值:

暗淡长度为双精度 = 20

这样做是告诉 iLogic 创建一个仅保存“Double”值的变量,然后提供该值。这称为类型转换。它确保只能向变量提供特定值。如果我尝试向 Length 变量提供字符串或文本值,我的代码将失败。我发现,通过提供类型,我可以在规则中使用更复杂的代码,以及理解和可视化信息流。例如,如果我在执行数学计算的规则中编写一个语句,并且我收到并出错,那么我知道我的任何“字符串”类型的变量都没有错误。

以下是不同类型的声明变量和类型转换的示例:

调暗柱面高度为双精度 = 参数(“柱面高度”)
调暗文件名为字符串 = “这是一个字符串值!
暗孔计数为整数 = 2
出现次数为字符串的名称 = 字符串。空
暗光板宽度为双精度 = 无

您会注意到,在最后两个示例中,我没有提供值,或者更确切地说,没有提供空值或什么都没有。有时您可能需要声明一个变量,但您可能还不知道该值。在这种情况下,您可以通过声明变量、类型转换以及在等号的另一侧提供某些内容来保持一致性。这对于调试代码以查看是否以编程方式提供值也很有用。

如果您注意的话,您还会注意到我声明了一个变量、类型转换的第一个示例,并将值设置为等于用户参数的值。在构造计算所需的逻辑、将值传递给其他构造以及操作其他参数时,此方法将非常有用。当您需要立即获取或设置用户参数的值时,在代码需要它时,它也很有用。这就是为什么iLogic的新用户在运行规则时会遇到问题,期望特定的行为,但Inventor似乎“滞后”了一个步骤。请看以下示例:

气缸高度 = 气缸高度调暗气缸高度为双精度 = 参数(“气缸高度
”)

这两种说法都做了类似的事情,但不完全是。第一个示例声明一个变量,该变量可以是任何类型的变量,其值等于用户参数。由于文本颜色为蓝色,因此 Inventor 可识别用户参数。由于 Inventor 可识别“用户参数”,因此使用此格式取消禁止显示的任何规则都将自动运行。您不希望或不希望规则以这种方式运行。

这也意味着该变量将设置为上次更新时的用户参数的值。如果逻辑在变量需要该值的时间和上次更新之间更改了用户参数值,则用户参数值已过期。这就是为什么需要更新的原因,有时似乎需要大量更新才能获得所需的结果。

要克服这一点,您可以做两件事。首先,使用第二个语句。通过声明变量、类型转换并使用“参数”函数,您可以直接将变量设置为用户参数的值,确保该值是最新的。它还使您可以更好地控制规则的运行时间。其次,使用 “RuleParametersOutput()” iLogic 代码段。这将使所有用户参数保持最新。然后进行更新以确保关联的模型也是最新的。

共享变量

之前,我们讨论的是关于变量的代码实践,但共享变量是 iLogic 的一个功能。在 iLogic 规则中声明变量时,只能在该规则的上下文中访问该变量。如果您需要创建一个变量并将其值设置为在众多规则中使用,那么共享变量就是答案。

在 iLogic 规则编辑器的 iLogic 代码段面板中,您可以在变量索引下找到共享变量函数。

要使用共享变量,我们将遵循与声明其他变量类似的过程。首先声明共享变量,提供共享变量的名称,然后提供一个值。该值可以是静态值,也可以是某个其他变量、参数或属性的值。

共享变量(“变量名称”) = “这是值” 共享变量(“圆柱高度”) = 参数(“圆柱高度”)

声明共享变量并提供值后,可以根据需要使用和更新它。

调暗圆柱体Hieght As Double = 共享变量(“圆柱体高度”)

使用其他共享变量函数查看共享变量是否存在,或从内存中删除任何和所有共享变量。

条件表达式和循环

人类总是必须做出决定吗?

在与 Inventor 的正常交互中,我们可以奢侈地查看图形窗口并选择几何图形来决定如何处理它。在装配体中,我们可以了解组件如何相互关联。当我们开始研究 iLogic 规则时,我们有时需要通过了解设计中可能存在的不同条件来定义决策路径。使用定义不同条件的表达式是 iLogic 用户完成这些任务的一种方式。

最常见的条件表达式是 If Then 表达式。它看起来像这样:

如果 someValue = true,那么
“做别的事情”做别
的事情
结束,
如果

在代码中,我们查看条件是否存在,如果存在,则代码将执行某些操作。如果条件不存在或存在其他条件,则代码将执行其他操作。我们可以扩展此功能以查找许多条件,如下所示:

如果 someValue = true,那么
'do other 如果
someValue = false,那么 'do other of 如果 someValue = nothing,那么

'yet do other

to end if

这一切看起来都很容易,而且非常有意义;但是,有一个限制。人们很容易期望条件无限期地持续下去,但是在某个点之后,对于真正发生的事情变得混乱,尤其是当您开始添加其他运算符时。在我看来,一旦你通过了三四个条件,就有更好的方法来处理这种情况。

另一个常见的条件表达式是选择大小写方法。它的工作原理类似,但对我来说,它更容易阅读和理解,更不用说,编写的代码更少。选择案例如下所示:

选择案例 一些值
案例 真
'做某事
案例 假 '做其他事情 案例什么都没有
'但做其他
事情 结束选择

如您所见,它更容易理解,并且很容易根据您可能必须适应的条件数量进行扩展。

编写代码时使用的最基本方法之一是循环的概念。使用循环访问程序集以获取实例名称的示例,Loops 允许我们遍历所有实例,而不必知道存在多少个实例。构建代码和开发逻辑就是要理解模式、一致性和可预测性。有时有一些方法可以用来适应不可预测性。循环就是这些方法。下面是 For Next 循环的示例:

暗淡计数器 As Integer = 3
对于 t As Integer = 1 计数器
MessageBox.Show(“迭代次数: ” & t)
下一页

在示例中,我们定义了循环的起点,即数字 1。我们还定义了循环的终点,计数器设置为 3。这意味着,循环将迭代三次以生成消息框。如果我们不知道循环的终点,我们可以计算集合中的项目并将其作为我们的终点。看看这个例子:

将项目调暗为新列表(字符串)
项目。添加(“披萨”)
项目。添加(“三明治”)
项目。添加(“牛奶”)
项。添加(“鸡蛋”)

对于 i = 0 到(项目。计数 - 1) 消息框显示(项目(i))

下一页

在此示例中,我们创建了一个集合,填充了该集合,然后通知 Loop 迭代集合中项的次数。如果您注意到,我们从 0 开始循环,在计数减 1 处结束循环。这是了解索引很重要的情况之一。索引只不过是确定一个起点。通常,它是 0 或 1。在这种类型的集合中,列表中的第一项实际上从 0 开始,而不是 1。

Thomas Fitzgerald是一位高级实施顾问,专门从事发明家自动化和数据管理。Thomas曾为许多公司提供咨询,这些公司与大型和小型工程部门有着非常多样化的接触。Thomas在机械设计和制造行业拥有超过20年的经验,使用过众多欧特克产品。他是Autodesk认证讲师,并拥有Microsoft认证系统管理员证书。

想要更多?下载完整的课程讲义以继续阅读。


路过

雷人

握手

鲜花

鸡蛋

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-6-2 20:30

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部