15.5.2  修改特性值

第4篇 高级应用篇

978-7-111-44986-7-Part04-1.jpg

本篇介绍以下主要知识点:

运动仿真

应力分析

Inventor二次开发入门

第13章 运动仿真

978-7-111-44986-7-Part04-2.jpg

导读 精彩内容

在产品设计完成之后,往往需要对其进行仿真以验证设计的正确性。本章主要介绍Inventor运动仿真功能的使用方法,以及将Inventor模型以及仿真结果输出到FEA软件中进行仿真的方法。

■ 了解运动仿真环境和装配环境的基本差别

■ 查看构建仿真机构的基本步骤

■ 仿真结果输出

13.1 AIP2014的运动仿真模块概述

978-7-111-44986-7-Part04-3.jpg

运动仿真包含广泛的功能并且适应多种工作流。本节主要介绍运动仿真的基础知识。在了解了运动仿真的主要形式和功能后,就可以开始探究其他功能,然后根据特定需求来使用运动仿真。

Inventor作为一种辅助设计软件,能够帮助设计人员快速创建产品的三维模型,以及快速生成二维工程图等。但是Inventor的功能如果仅限于此的话,那就远远没有发挥Inventor的价值。当前,辅助设计软件往往都能够和CAE/CAM软件结合使用,在最大程度上发挥这些软件的优势,从而提高工作效率,缩短产品开发周期,提高产品设计的质量和水平,为企业创造更大的效益。CAE(计算机辅助工程)是指利用计算机对工程和产品性能与安全可靠性进行分析,以模拟其工作状态和运行行为,以便于及时发现设计中的缺陷,同时达到设计的最优化目标。

可以使用运动仿真功能来仿真和分析装配在各种载荷条件下运动的运动特征。还可以将任何运动状态下的载荷条件输出到应力分析。在应力分析中,可以从结构的观点来查看零件如何响应装配在运动范围内任意点的动态载荷。

13.1.1 运动仿真的工作界面

打开一个部件文件后,单击【环境】标签栏【开始】面板中【运动仿真】按钮978-7-111-44986-7-Part04-4.jpg,打开运动仿真界面如图13-1和图13-2所示。

978-7-111-44986-7-Part04-5.jpg

图13-1 【运动仿真】选项

978-7-111-44986-7-Part04-6.jpg

图13-2 【运动仿真】界面

进入运动仿真环境后,可以看到操作界面主要由ViewCube(绘图区右上部)、快速工具栏(上部)、功能区(如图13-3)、浏览器(如图13-4)和状态栏以及绘图区域构成。

978-7-111-44986-7-Part04-7.jpg

图13-3 运动仿真功能区

978-7-111-44986-7-Part04-8.jpg

图13-4 “运动仿真”浏览器

图13-4是剪刀模型的【运动仿真】浏览器,从中可以看出Inventor2014模型仿真浏览器所包含的内容,浏览器中显示了机构的元素、元素名称、浏览器结构、特殊条件等。

13.1.2 Inventor运动仿真的特点

Inventor 2014的仿真部分软件是完全整合于三维CAD的机构动态仿真软件,具有以下显著特点:

(1)使软件自动将配合约束和插入约束转换为标准连接(一次转换一个连接),同时可以手动创建连接。

(2)已经包含了仿真部分,把运动仿真真正整合到设计软件中,无需再安装其仿真部分。

(3)能够将零部件的复杂载荷情况输出到其他主流动力学、有限元分析软件(如Ansys)中进行进一步的强度和结果分析。

(4)更加易学易用,保证在建立运动模型的时候将Inventor环境下定义的装配约束可以直接转换为运动仿真环境下运动约束;可以直接使用材料库,用户还可以按照自己的实际需要自行添加新材料。

13.2 构建仿真机构

978-7-111-44986-7-Part04-9.jpg

在进行仿真之前,首先应该构建一个与实际情况相符合的运动机构,这样仿真结果才是有意义的。构建仿真机构除了需要在Inventor中创建基本的实体模型以外,还包括指定焊接零部件以创建刚性、统一的结构,添加运动和约束、作用力和力矩以及碰撞等。需要指出的是,要仿真部件的动态运动,需要定义两个零件之间的机构连接并在零件上添加力(内力或/和外力)。现在,部件是一个机构。

可以通过三种方式创建连接:即在“分析设置”对话框中激活“自动转换对标准联接的约束”功能,使Inventor自动将合格的装配约束转换成标准连接;使用【插入运动类型】工具手动插入运动类型;使用【转换约束】工具手动将Autodesk Inventor装配约束转换成标准连接(每次只能转换一个连接)。

注意

当“自动转换对标准联接的约束”功能处于激活状态时,不能使用【插入运动类型】或【转换约束】工具来手动插入标准连接。

13.2.1 运动仿真设置

在任何的部件中,任何一个零部件都不是自由运动的,需要受到一定的运动约束的限制。运动约束限定了零部件之间的连接方式和运动规则。通过使用AIP 2012版或更高版本创建的装配部件进入运动仿真环境时,如果未取消选择“分析设置”对话框中的【自动转换对标准联接的约束】,Inventor将通过转换全局装配运动中包含的约束来自动创建所需的最少连接。同时,软件将自动删除多余约束。此功能在确定螺母、螺栓、垫圈和其他紧固件的自由度不会影响机构的移动时尤其好用,事实上,在仿真过程中这些紧固件通常是锁定的。添加约束时,此功能将立即更新受影响的连接。

单击【运动仿真】标签栏【管理】面板上的【分析设置】工具按钮978-7-111-44986-7-Part04-10.jpg,打开【运动仿真设置】对话框,如图13-5所示。

978-7-111-44986-7-Part04-11.jpg

图13-5 【运动仿真设置】对话框

选中【自动将约束转换为标准联接】选项将激活自动运动仿真转换器。这会将装配约束转换为标准连接。如果选中了【自动将约束转换为标准联接】,就不能再选择手动插入标准连接,也不能再选择一次一个连接地转换约束。选中或取消此功能都会删除机构中的所有现有连接。

【当机械装置被过约束时发出警告】选项默认是选中的,如果机构被过约束,Inventor将会在自动转换所有配合前向用户发出警告并将约束插入标准连接。

【所有零部件使用同一颜色】将预定义的颜色分配给各个移动组。固定组使用同一颜色。该工具有助于分析零部件关系。

【初始位置的偏移】选项卡中,978-7-111-44986-7-Part04-12.jpg工具将所有自由度的初始位置设置为0,而不更改机构的实际位置。这对于查看输出图示器中以0开始的可变出图非常有用。978-7-111-44986-7-Part04-13.jpg工具将所有自由度的初始位置重设为在构造连接坐标系的过程中指定的初始位置。

【将FEA导出到】选项卡用于设置FEA输出的位置信息。

13.2.2 转换约束

【转换约束】将会自动从装配约束创建标准连接。如果不想通过自动转换对标准连接的约束自动创建一个或多个标准连接,而想一般性地理解和创建机构主要零件间的连接和约束,单击【运动仿真】标签栏【运动类型】面板上的【转换约束】工具978-7-111-44986-7-Part04-14.jpg,打开如图13-6所示的对话框,来创建零件间的连接。

【选择两个零件】选项用以指定两个零部件,以便确定这两个零部件之间的哪些约束可以转换到标准连接中。仅这两个零部件之间的装配约束显示在“配合”字段中。选定的第一个零部件是父零部件。选定的第二个零部件是子零部件。这两个零部件之间的现有装配约束会显示在配合窗口中。

【运动类型】选项卡显示可从选定的配合约束创建的标准连接的类型(表13-1指出了Inventor可以转换到其中的标准连接和各种装配约束),包括动画图示。选择剪刀上刃和下刃创建标准连接如图13-7所示。如果未选定配合约束,则在默认情况下,Inventor将创建空间连接(6个自由度)。

978-7-111-44986-7-Part04-15.jpg

图13-6 【继承装配约束】对话框

978-7-111-44986-7-Part04-16.jpg

图13-7 创建标准连接

表13-1 可转换的标准连接和装配约束

978-7-111-44986-7-Part04-17.jpg

选择【插入】选项确定后,剪刀的上下刃两个零件间就建立了旋转运动标准连接,如图13-8所示。可以看到新连接位于【标准连接】节点下的浏览器中。此外,将显示【移动组】节点,上刃从固定组移动到移动组。这时拖动剪刀上刃或选择仿真面板上的播放工具978-7-111-44986-7-Part04-18.jpg,上刃就会围绕中间的旋转轴而旋转。

978-7-111-44986-7-Part04-19.jpg

图13-8 【转换约束】后的浏览器

13.2.3 插入运动类型

【插入运动类型】是完全手动的添加约束方法。使用【插入运动类型】可以添加标准、滚动、滑动、二维接触和力连接。前面已经介绍了对于标准连接,可选择自动地或一次一个连接地将装配约束转换成连接。而对于其他所有的连接类型,【插入运动类型】是添加连接的唯一方式。

在机构中插入运动类型的典型工作流程是:

(1)确定所需连接的类型。考虑所具有的与所需的自由度数和类型,还要考虑力和接触。

(2)如果知道在两个零部件的其中一个上定义坐标系所需的任何几何图元,这时就需要返回装配模式下【部件和零件】添加所需图元。

(3)单击【运动仿真】标签栏【运动类型】面板上的【插入运动类型】工具978-7-111-44986-7-Part04-20.jpg,打开如图13-9所示【插入运动类型】对话框。【插入运动类型】对话框顶部的下拉菜单中列出了各种可用的连接。该对话框的底部则提供了与选定连接类型相应的选择工具。默认情况下指定为“空间自由运动”,空间自由运动动画将连续循环播放。也可选择【连接类型】菜单右侧的显示连接表工具978-7-111-44986-7-Part04-21.jpg,打开连接表如图13-10所示,该表显示了每个连接类别和特定连接类型的视觉表达。单击图标来选择连接类型。选择连接类型后,可用的选项将立即根据连接类型变化。

对于所有连接(三维接触除外),【先拾取零件】工具978-7-111-44986-7-Part04-22.jpg可以在选择几何图元前选择连接零部件。这使得选择图元(点、线或面)更加容易。

(4)从连接菜单或【连接表】选择所需连接类型。

(5)选择定义连接所需的其他任何选项。

(6)为两个零部件定义连接坐标系。

(7)单击【确定】或【应用】。这两个操作均可以添加连接,而单击【确定】还将关闭此对话框。

为了在创建约束的时候能够恰如其分地使用各种连接,下面详细介绍【插入运动类型】的几种类型:

978-7-111-44986-7-Part04-23.jpg

图13-9 【插入运动类型】对话框

978-7-111-44986-7-Part04-24.jpg

图13-10 【运动类型表】对话框

1.插入标准连接

选择标准连接类型添加至机构时,要考虑在两个零部件和两个连接坐标系的相对运动之间所需的自由度。插入运动类型时,将两个连接坐标系分别置于两个零部件上。应用连接时,将定位两个零部件,以便使它们的坐标系能够完全重合。然后,再根据连接类型,在两个坐标系之间进而在两个零部件之间创建自由度。

标准连接类型有旋转、平移、柱面运动、球面运动、平面运动、球面圆槽运动、线-面运动、点-面运动、空间自由运动和焊接等。读者可以根据零件的特点以及零部件间的运动形式选择相应的标准连接类型。各种标准连接的添加步骤大致相同,这里为节省篇幅仅以剪刀插入【旋转】为例来说明具体操作。

(1)打开零部件的运动仿真模式,单击【运动仿真】标签栏【运动类型】面板上的【插入运动类型】工具978-7-111-44986-7-Part04-25.jpg,打开如图13-9所示【插入运动类型】对话框。

(2)在【连接类型】菜单或连接表中,选择【铰链(旋转)运动】。

(3)在图形窗口中,指定零部件的连接坐标系。选择剪刀下刃的接触面上的旋转曲线(由于绕轴旋转要定义Z轴和原点,要选择环形边,如果已选择柱面或线性边,则原点将设置在图元中间,所以选择接触面上的旋转曲线),如图13-11所示,出现图示连接空间坐标轴,这X、Y和Z轴是从选定的几何图元中衍生的,与零件或装配坐标系无关。这坐标轴使用不同形状的小箭头来区分,单箭头978-7-111-44986-7-Part04-26.jpg表示X矢量,双箭头978-7-111-44986-7-Part04-27.jpg表示Y矢量,Z矢量使用三箭头978-7-111-44986-7-Part04-28.jpg来表示。这里只需指定旋转轴Z轴即可,如图13-12所示,单击右键打开关联菜单,选择“继续”,则开始连接2的选择,同样选择上刃接触面上的旋转曲线。方向相反的时候可以通过单击978-7-111-44986-7-Part04-29.jpg改变方向。

978-7-111-44986-7-Part04-30.jpg

图13-11 选择下刃

978-7-111-44986-7-Part04-31.jpg

图13-12 “继续”关联菜单

(4)选择【确定】完成旋转插入连接。

如果要编辑插入运动类型,可以在浏览器中选择标准连接项下刚刚添加的连接,右键单击打开关联菜单,如图13-13所示,选择【编辑】,打开“修改连接”对话框,如图13-14所示,进行标准连接的修改。

其他几种标准连接的插入操作步骤大同小异,这里不再赘述。

978-7-111-44986-7-Part04-32.jpg

图13-13 【编辑】关联菜单

978-7-111-44986-7-Part04-33.jpg

图13-14 【修改连接】对话框

2.插入滚动连接

创建一个部件并添加一个或多个标准连接后,还可以在两个零部件(这两个零部件之间有一个或多个自由度)之间插入其他(滚动、滑动、二维接触和力)连接,但是必须手动插入这些连接。前面已经介绍过这点与标准连接的不同,滚动、滑动、二维接触和力等连接无法通过约束转换自动创建。

滚动连接可以封闭运动回路,并且除锥面连接外,可以用于彼此之间存在二维相对运动的零部件。可以仅在彼此之间存在相对运动的零部件之间创建滚动连接。因此,在包含滚动连接的两个零部件的机构中,必须至少有一个标准连接。滚动连接应用永久接触约束。滚动连接可以有两种不同的行为,具体取决于在连接创建期间所选的选项:

● 滚动选项仅能确保齿轮的耦合转动。

● 滚动和相切选项可以确保两个齿轮之间的相切以及齿轮的耦合转动。

打开零部件的运动仿真模式,单击【运动仿真】标签栏【运动类型】面板上的【插入运动类型】工具978-7-111-44986-7-Part04-34.jpg,打开如图13-9所示“插入运动类型”对话框;在【连接类型】菜单或连接表中,选择【传动连接】,打开如图13-15所示的对话框选择相应的连接类型或者打开传动连接的连接表如图13-16所示后选择需要的连接类型;然后根据具体的连接类型和零部件的运动特点按照插入运动类型的指示为零部件插入滚动连接。具体操作与标准连接类似,这里不再赘述。

978-7-111-44986-7-Part04-35.jpg

图13-15 【插入运动类型】对话框

978-7-111-44986-7-Part04-36.jpg

图13-16 传动连接的连接表

3.插入二维接触连接

二维接触连接和三维接触连接(力)同属于非永久连接。其他均属于永久连接。

插入二维接触连接的操作如下:

(1)打开零部件的运动仿真模式,单击【运动仿真】标签栏【运动类型】面板上的【插入运动类型】工具978-7-111-44986-7-Part04-37.jpg,打开如图13-9所示“插入运动类型”对话框。

(2)在【连接类型】菜单或连接表中,选择【2D Contact】,打开如图13-17所示对话框,选择相应的连接类型或者打开二维接触连接的连接表(如图13-18所示)后选择确认。

插入二维接触连接的时候需要选择零部件上的两个回路,这两个回路一般在同一平面上。

(3)创建连接后,需要将特性添加到二维接触连接。在浏览器上选择刚刚添加的接触连接下的二维接触连接,右键单击打开关联菜单,选择特性,如图13-19所示。打开二维接触特性对话框,如图13-20所示。可以选择要显示的是作用力还是反作用力,以及要显示的力的类型(法向力、切向力或合力)。如果需要,可以对法向力、切向力和合力矢量进行缩放和/或着色,使查看更加容易。

978-7-111-44986-7-Part04-38.jpg

图13-17 选择【2D Contact】选项

978-7-111-44986-7-Part04-39.jpg

图13-18 二维接触连接的连接表

978-7-111-44986-7-Part04-40.jpg

图13-19 改变二维接触连接特性

978-7-111-44986-7-Part04-41.jpg

图13-20 二维接触特性对话框

在图13-20中,选中择【抑制连接】复选框,系统在进行所有计算时将此二维接触连接排除在外,但不是从机构中将其完全删除。默认【抑制连接】处于未选定状态。

单击【反转正向】978-7-111-44986-7-Part04-42.jpg,可以反转零部件上曲线的正向。

此外还可在此更改摩擦系数和恢复系数。

这里借助剪刀的止动端来简单介绍二维接触连接的插入:

(1)打开“2D Contact”对话框,选择剪刀下刃的止动点如图13-21所示。

注意

曲线的正向(由二维接触连接坐标系的Z轴确定)将定义曲线的外部方向。如果在连接插入期间将此轴反向,则在进行仿真时,此连接可能会运转不连贯。

(2)系统要求继续选择曲线2回路,选择剪刀上刃的下表面,如图13-22所示。这时建立了两个相对坐标系,单击【确定】按钮。

978-7-111-44986-7-Part04-43.jpg

图13-21 选择剪刀下刃的止动点

978-7-111-44986-7-Part04-44.jpg

图13-22 选择剪刀上刃的下表面

(3)拖动上刃,使剪刀运动,这时系统提示要求检查精确接触的定义,如图13-23所示。在浏览器上选择刚刚添加的接触连接下的二维接触连接,右键单击打开关联菜单如图13-19所示,选择“特性”选项。

(4)系统打开二维接触特性对话框,如图13-24所示,这时刚刚建立的二维接触连接的坐标系又显示在零件上,由于上下刃在底端部接触碰撞后弹开,分别将剪刀上下刃的Z轴方向背向,这时可以拖动剪刀上刃使其运动接触下刃后会弹开,二维接触插入完成。

读者可以参照刚才的二维插入,设定一下在剪刀的旋转位置的二维接触特性。

4.插入滑动连接

滑动连接与滚动连接类似,可以封闭运动回路,并且可以在具有二维相对运动的零部件之间工作。可以仅在具有二维相对运动的零部件之间创建滑动连接。连接坐标系将会被定位在接触点。连接运动处于由矢量Z1(法线)和X1(切线)定义的平面中。接触平面由矢量Z1和Y1 定义。这些连接应用永久接触约束,且没有切向载荷。

滑动连接包括平面圆柱运动、圆柱-圆柱外滚动、圆柱-圆柱内滚动、凸轮-滚子运动、圆槽滚子运动等连接类型。其操作步骤与滚动连接类似,为节省篇幅,这里不再赘述。

978-7-111-44986-7-Part04-45.jpg

图13-23 定义精确接触方向

978-7-111-44986-7-Part04-46.jpg

图13-24 编辑二维接触特性

5.插入力连接

前面已经介绍,力连接(三维接触连接)和二维接触连接一样都为非永久性接触,而且可以使用三维接触连接模拟非永久穿透接触。力连接主要使用弹簧/阻尼器/千斤顶连接对作用/反作用力进行仿真。其具体操作与以上介绍的其他插入运动类型大致相同。现在简单介绍一下剪刀的三维接触连接的插入。这里为部件添加一个弹簧。

线性弹簧力就是弹簧的张力与其伸长或者缩短的长度成正比的力,且力的方向与弹簧的轴线方向一致。

要为部件添加线性弹簧力,可以:

(1)单击【运动仿真】标签栏【运动类型】面板上的【插入运动类型】工具978-7-111-44986-7-Part04-47.jpg,打开如图13-9所示【插入运动类型】对话框。

(2)在【连接类型】菜单或连接表中,选择【力连接】中的弹簧/阻尼器/选项,或者打开力连接的连接表,如图13-25所示,选择弹簧/阻尼器/选项,确认后,打开提示选择零部件对话框,如图13-26所示。

978-7-111-44986-7-Part04-48.jpg

图13-25 力连接表

978-7-111-44986-7-Part04-49.jpg

图13-26 【力连接】插入

(3)选择要添加线性弹簧力的零部件上的两个点为弹簧的两个端点。

(4)单击【确定】按钮,完成线性弹簧力的创建,此时在零部件上出现一个弹簧图标,如图13-27所示。

此时弹簧连接未被激活,这一点从浏览器中也可以观察到。如图13-28所示,力铰链项目下的弹簧/阻尼器/连接前的弹簧图标是暗色的,证明其还未被激活。

(5)右键单击弹簧图标取消选择【抑制传动器】选项,该连接激活。但是弹簧的各种参数如刚度系数、长度、弹簧的直径、圈数等还未被指定。

978-7-111-44986-7-Part04-50.jpg

图13-27 零部件上出现弹簧图标

978-7-111-44986-7-Part04-51.jpg

图13-28 力连接未被激活

(6)右键单击弹簧图标,打开关联菜单,选择【特性】选项,打开如图13-29所示的“螺旋弹簧”对话框。这里可以设置弹簧刚度、自由长度、阻尼以及弹簧的类型,包括螺旋弹簧、弹簧、弹簧阻尼器、阻尼器和千斤顶,进而设置弹簧的特性和尺寸。

两个接触零部件之间除了外力的作用之外,当它们发生相对运动的时候,零部件的接触面之间会存在一定的阻力,这个阻力的添加也是通过力连接来完成的。如剪刀上下刃的相对旋转接触面间就存在阻力,要添加这个阻力,首先在【连接类型】菜单或连接表中,选择【力连接】中的【3D contact】选项,如图13-30所示。选择需要添加的零部件即可。

978-7-111-44986-7-Part04-52.jpg

图13-29 【螺旋弹簧】对话框

978-7-111-44986-7-Part04-53.jpg

图13-30 插入【3D contact】对话框

要定义接触集合需要选择【运动仿真】浏览器中的【力铰链】目录,选择接触集合,单击右键,选择打开菜单上的【特性】选项,则打开如图13-31所示的“3D contact”对话框。和弹簧连接类似,可以定义接触集合的刚度、阻尼、摩擦力和零件的接触点。然后【确定】就添加了接触力。

6.定义重力

重力是外力的一种特殊情况,地球引力所产生的力,作用于整个机构。其设置步骤如下:

(1)在运动仿真浏览器中的【外部载荷】/【重力】上单击右键。从显示的关联菜单中,选择【定义重力】选项。打开如图13-32所示的“重力”对话框。

(2)在图形窗口中,选择要定义重力的图元。该图元必须属于固定组。

(3)在选定的图元上会显示一个黄色箭头,如图13-33所示。单击【反向】按钮,可以更改重力箭头的方向。

(4)如果需要,在【值】文本框中输入要为重力设置的值。

(5)单击【确定】按钮,完成重力设置。

978-7-111-44986-7-Part04-54.jpg

图13-31 “3D contact”对话框

978-7-111-44986-7-Part04-55.jpg

图13-32 “重力”对话框

978-7-111-44986-7-Part04-56.jpg

图13-33 重力设置后的剪刀

13.2.4 添加力和力矩

力或者力矩都施加在零部件上,并且力或者力矩都不会限制运动,也就是说,它们不会影响模型的自由度,但是力或者力矩能够对运动造成影响,如减缓运动速度或者改变运动方向等。作用力直接作用在物体上从而使其能够运动,包括单作用力和单作用力矩,作用力和反作用力(力矩)。单作用力(力矩)作用在刚体的某一个点上。

注意

软件不会计算任何的反作用力(力矩)。

要添加单作用力,可以按如下步骤操作:

(1)单击【运动仿真】标签栏【加载】面板上的【力】工具按钮978-7-111-44986-7-Part04-57.jpg,打开“力”对话框,如图13-34所示。如果要添加转矩,则单击【转矩】按钮978-7-111-44986-7-Part04-58.jpg,打开“转矩”对话框,如图13-35所示。

(2)单击【位置】按钮,然后在图形窗口中的分量上选择力或转矩的应用点,如图13-36所示。

注意

当力的应用点位于一条线或面上而无法捕捉时,可以返回【部件】环境,绘制一个点,再回到【运动仿真】环境,就可以在选定位置插入力或转矩的应用点了。

978-7-111-44986-7-Part04-59.jpg

图13-34 “力”对话框

978-7-111-44986-7-Part04-60.jpg

图13-35 “转矩”对话框

(3)单击【位置】按钮,在图形窗口中选择第二个点。选定的两个点可以定义力或转矩矢量的方向,其中,以选定的第一个点作为基点,选定的第二个点处的箭头作为提示,如图13-37所示。可以单击【反向】以将力或转矩矢量的方向反向。

(4)在【大小】文本框中,可以定义力或转矩大小的值。可以输入常数值,也可以输入在仿真过程中变化的值。单击框右侧的方向箭头打开数据类型菜单。从数据类型菜单中,可以选择【常数值】或【输入图示器】,如图13-38所示。

打开【大小】对话框,如图13-39所示。单击【大小】文本框中显示的图标,然后使用【输入图示器】定义一个在仿真过程中变化的值。

图形的垂直轴表示力或转矩载荷,水平轴表示时间,力或转矩绘制由红线表示。双击一时间位置可以添加一个新的基准点,如图13-40所示。用光标拖动蓝色的基准点可以输入力或扭矩的大小。精确输入力或转矩时可以使用【起始点】和【结束点】来定义,X输入时间点,Y输入力或转矩的大小。

单击【固定载荷方向】按钮978-7-111-44986-7-Part04-61.jpg,以固定力或转矩在部件的绝对坐标系中的方向。

单击【关联载荷方向】按钮978-7-111-44986-7-Part04-62.jpg,将力或转矩的方向与包含力或转矩的分量关联起来。

978-7-111-44986-7-Part04-63.jpg

图13-36 插入着力点

978-7-111-44986-7-Part04-64.jpg

图13-37 确定力或转矩方向

978-7-111-44986-7-Part04-65.jpg

图13-38 选择【输入图示器】

978-7-111-44986-7-Part04-66.jpg

图13-39 “大小”对话框

为使力或转矩矢量显示在图形窗口中,单击【显示】以使力或转矩矢量可见。

如果需要,可以更改力或转矩矢量的比例,从而使所有的矢量可见。该参数默认值为0.01。

如果要更改力或转矩矢量的颜色,单击颜色框,打开“颜色”对话框,然后为力或转矩矢量选择颜色。

(5)单击【确定】按钮,完成单作用力的添加。

978-7-111-44986-7-Part04-67.jpg

图13-40 添加基准点以及输入力大小

13.2.5 未知力的添加

有时为了运动仿真能够使机构停在一个指定位置,而这个平衡的力很难确定,这时就可以借助于添加未知力来计算所需力的大小。

使用未知力来计算机构在指定的一组位置保持静态平衡时所需的力、转矩或千斤顶,在计算时需要考虑所有外部影响,包括重力、弹力、外力或约束条件等。而且机构只能有一个迁移度。下面简单介绍一下未知力的添加步骤:

(1)单击【运动仿真】标签栏【结果】面板上的【未知力】按钮978-7-111-44986-7-Part04-68.jpg,打开如图13-41所示“未知力”对话框。

(2)选择适当的力类型:力、转矩或千斤顶。

1)对于力或转矩:

● 单击【位置】按钮,在图形窗口中单击零件上的一个点。

● 单击【方向】按钮,在图形窗口中单击第二个连接零部件上的可用图元,通过确定在图形窗口中绘制的矢量的方向来指定力或转矩的方向。选择可用的图元,如线性边、圆柱面或草图直线。图形窗口中会显示一个黄色矢量来表明力或转矩的方向。在图形窗口中将确定矢量的方向。可以改变矢量方向并使其在整个计算期间保持不变。

● 必要的话单击【反向】按钮,将力或转矩的方向(也就是黄色矢量的方向)反向。

● 单击【固定载荷方向】按钮,可以锁定力或转矩的方向。

● 此外,如果要将方向与有应用点的零件相关联,单击【关联载荷方向】按钮,然后使其可以移动。

2)对于千斤顶:

● 单击【位置一】按钮,在图形窗口中单击某个零件上的可用图元。

● 单击【位置二】按钮,在图形窗口中单击某个零件上的可用图元,以选择第二个应用点并指定力矢量的方向。直线P1-P2定义了千斤顶上未知力的方向。

● 图形窗口中会显示一个代表力的黄色矢量。

(3)在【运动】选项的下拉列表中,选择机构的一个连接。

(4)如果选定的连接有两个或两个以上自由度,则在【自由度】框中选择受驱动的那个自由度。【初始位置】框将显示选定自由度的初始位置。

(5)在【最终位置】文本框中输入所需的最终位置。

(6)【步长数】文本框用于调整中间位置数。默认是100个步长。

(7)单击【更多】按钮,显示与在图形窗口中显示力、转矩或千斤顶矢量相关的参数。

● 单击【显示】以在图形窗口中显示矢量并启用【比例】和【颜色】字段。

● 要缩放力、转矩或千斤顶矢量,以便在图形窗口中看到整个矢量,可以在【比例】字段中输入系数。系数的默认值为0.01。

● 如果要选择矢量在图形窗口中的颜色,单击颜色框打开Microsoft的“颜色”对话框。

(8)单击【确定】按钮。输出图示器将自动打开,并在【未知力】目录下显示变量fr'?'或 mm'?'(针对搜索的力或转矩),如图13-42所示。

978-7-111-44986-7-Part04-69.jpg

图13-41 “未知力”对话框

978-7-111-44986-7-Part04-70.jpg

图13-42 添加未知力后的【输出图示】器浏览器

13.2.6 修复冗余

在插入运动类型和添加约束的工作做完后,有时会产生过约束的情况,使得运动仿真不能按照所要求的那样顺利进行。Inventor 2014的【机构状态】功能在这方面为用户带来了很大的方便,可以帮助查找并修复多余约束的情况。

注意

仅在“自动转换对标准联接的约束”选项未被激活时,此功能才可用。如果使用“自动转换对标准联接的约束”选项,软件将自动修复所有冗余。

单击【运动仿真】标签栏【运动类型】面板上的【机构状态】工具按钮978-7-111-44986-7-Part04-71.jpg,打开如图13-43所示【机械装置状态和冗余】对话框。“机械装置状态和冗余”对话框在【模型信息】栏中显示了机构的冗余度以及迁移度。

具体的修复冗余步骤如下:

(1)在“机械装置状态和冗余”对话框的【封闭运动链】组中,单击【下一个链】图标直到【初始连接】列大于0。

(2)如果系统建议通过改变连接以删除多余约束,则该建议将显示在紧邻连接右侧的【多余约束】列中,而修改后的连接将显示在【最终连接】列中。

注意

如果想看到选定链的零部件在图形窗口中亮显,单击【亮显链的零部件】按钮。

(3)如果需要,可以使用垂直滚动条来移动建议更改的连接,直到它显示在窗口中。

(4)如果软件不能建议进行更改,则在【多余约束】列的顶部将显示一个警告图标。

注意

系统在找不到解决方案时,并不意味着没有解决方案。在【最终连接】列中,手动修改链中的某些连接也可以删除过约束。

978-7-111-44986-7-Part04-72.jpg

图13-43 【机械装置状态和冗余】对话框

(5)对所有过约束运动链重复步骤2和3。

(6)当模型信息组指明不再有任何多余约束时,单击【测试】按钮,进行测试。

(7)系统将尝试装配机构,如果不成功,会显示一条警告消息。

如果不想进行修改,还可以在单击【确定】之前随时单击【重设模型】。此时会使模型返回其原始状态。

(8)机构不再过约束时,单击【确定】按钮保存这些操作,完成修复。

13.2.7 动态零件运动

前面已经为要进行运动仿真的零部件插入运动类型,建立了运动约束以及添加了相应的力和转矩,在运行仿真前要对机构进行一定的核查,以防止在仿真过程中出现不必要的错误。使用【动态运动】功能就是通过鼠标为运动部件添加驱动力驱动实体来测试机构的运动。可以利用鼠标左键选择运动部件,拖动此部件使其运动,查看运动情况是否与设计初衷相同,以及是否存在一些约束连接上的错误。鼠标左键选择运动部件上的点就是拖动时施力的着力点,拖动时,力的方向由零部件上的选择点和每一瞬间的光标位置之间的直线决定。力的大小根据这两点之间的距离系统会自己来计算,当然距离越大施加的力也越大。力在图形窗口中显示为一个黑色矢量,如图13-44所示。鼠标的操作产生了使实体移动的外力。当然,这时对机构运动有影响的不只是添加的鼠标驱动力,系统也会将所有定义的动态作用(如弹簧、连接、接触)等考虑在内。【动态运动】功能是一种连续的仿真模式,但是它只是执行计算而不保存计算,而且对于运动仿真没有时间结束的限制。这也是它与【仿真播放器】进行的运动仿真的主要不同之处。

下面简单介绍一下动态零件运动的操控面板和操作步骤:

(1)单击【运动仿真】标签栏【结果】面板上的【动态运动】工具按钮978-7-111-44986-7-Part04-73.jpg,在原来的【仿真播放器】位置打开如图13-45所示的“零件运动”对话框。此时可以看到机构在已添加的力和约束下会运动。

978-7-111-44986-7-Part04-74.jpg

图13-44 施加力显示的箭头

978-7-111-44986-7-Part04-75.jpg

图13-45 【零件运动】对话框

(2)选择【暂停】按钮978-7-111-44986-7-Part04-76.jpg,可以停止由已经定义的动态参数产生的任何运动。单击【暂停】978-7-111-44986-7-Part04-77.jpg按钮后,【开始】按钮978-7-111-44986-7-Part04-78.jpg将代替【暂停】按钮。单击【开始】按钮后,将启动使用鼠标所施加的力所产生的运动。

(3)在运动部件上,选择驱动力的着力点,同时按住鼠标左键并移动鼠标对部件施加驱动力。对零件施加的外力与零件上的点到鼠标光标位置之间的距离成正比,拖动方向为施加的力的方向。零件将根据此力移动,但只会以物理环境允许的方式移动。在移动过程中,参数项中【应用的力】显示框978-7-111-44986-7-Part04-79.jpg将显示鼠标仿真力的大小,该字段的值会随着鼠标的每次移动而发生更改,而且只能通过在图形窗口中移动鼠标来更改此字段的值。

当鼠标驱动力需要鼠标在很大位移才能驱动运动部件(或鼠标移动很小距离便产生很大的力)的时候,可以更改参数项中【放大鼠标移动的系数】978-7-111-44986-7-Part04-80.jpg文本框中的值。这将增大或减小应用于零件上的点到光标位置之间距离的力的比例,比例系数增大的时候很小的鼠标位移可以产生很大的力,比例系数变小的时候相反。默认情况下,此因子值为0.01。

当需要限制驱动力的大小时,可以选择更改参数项中【最大力】978-7-111-44986-7-Part04-81.jpg文本框中应用的力的最大值。当设定最大力后,无论力的应用点到鼠标光标之间的距离多大,所施加的力最大只能为设定值。默认力的最大值为100 N。

下面介绍一下“零件运动”对话框上的其他几个按钮:

(1)【抑制驱动条件】按钮978-7-111-44986-7-Part04-82.jpg:此按钮可以在连接上的强制运动影响了零件的动作的时候停止此强制驱动造成的影响。默认情况下,强制运动在动态零件运动模式下不处于激活状态。此外,如果此连接上的强制运动受到了抑制,而要使此强制运动影响此零件的动作,选择【解除抑制驱动条件】978-7-111-44986-7-Part04-83.jpg

(2)阻尼类型:阻尼的大小对于机构的运动所起到的影响不可小视,Inventor2014的【零件运动】提供了4种可添加给机构的阻尼类型:

● 在计算时将机械装置阻尼考虑在内978-7-111-44986-7-Part04-84.jpg

● 在计算时忽略阻尼978-7-111-44986-7-Part04-85.jpg

● 在计算时考虑弱阻尼978-7-111-44986-7-Part04-86.jpg

● 在计算时考虑强阻尼978-7-111-44986-7-Part04-87.jpg

(3)【将此位置记录为初始位置】按钮978-7-111-44986-7-Part04-88.jpg:有时为了仿真的需要,要保存图形窗口中的位置,作为机构的初始位置。此时必须先停止仿真,选择【将此位置记录为初始位置】978-7-111-44986-7-Part04-89.jpg。然后,系统会退出仿真模式返回构造模式,使机构位于新的初始位置。此功能对于找出机构的平衡位置非常有用。

(4)【重新启动仿真】按钮978-7-111-44986-7-Part04-90.jpg:当需要使机构回到仿真开始时的位置并重新启动计算时,可以选择【重新启动模拟】按钮978-7-111-44986-7-Part04-91.jpg。此时会保留先前使用的选项如阻尼等。

(5)【退出零件运动】按钮978-7-111-44986-7-Part04-92.jpg:在完成了【零件运动】模拟后,选择【退出零件运动】按钮978-7-111-44986-7-Part04-93.jpg可以返回构造环境。

13.3 仿真及结果的输出

978-7-111-44986-7-Part04-94.jpg

在给模型添加了必要的连接,指定了运动约束,并添加了与实际情况相符合的力、力矩以及运动后,就构建了正确的仿真机构,此时可以进行机构的仿真以观察机构的运动情况,并输出各种形式的仿真结果。下面按照进行仿真的一般步骤对仿真过程以及结果的分析做简要介绍。

13.3.1 运动仿真设置

在进行仿真之前,熟悉仿真的环境设置以及如何更改环境设置,对正确而有效的进行仿真还是很有帮助的。打开一个部件的【运动仿真】模式后,【仿真播放器】就自动开启,如图13-46所示。下面简单介绍【仿真播放器】的构造及使用。

1.工具栏

单击978-7-111-44986-7-Part04-95.jpg开始运行仿真;单击978-7-111-44986-7-Part04-96.jpg停止仿真;单击978-7-111-44986-7-Part04-97.jpg使仿真返回到构造模式,可以从中修改模型;单击978-7-111-44986-7-Part04-98.jpg回放仿真;单击978-7-111-44986-7-Part04-99.jpg直接移动到仿真结束;单击978-7-111-44986-7-Part04-100.jpg可以在仿真过程中取消激活屏幕刷新,仿真将运行,但是没有图形表达;单击978-7-111-44986-7-Part04-101.jpg循环播放仿真直到单击停止按钮。

2.最终时间

如图13-47所示,最终时间决定了仿真过程持续的时间,默认为1 s,仿真开始的时间永远为零。

978-7-111-44986-7-Part04-102.jpg

图13-46 【仿真播放器】对话框

3.图像

如图13-48所示,这一栏显示仿真过程中要保存的图像数(帧),其数值大小与【最终时间】是有关系的。默认情况下,当【最终时间】为默认的1.000 s时,图像数为100。最多为500000 个图像。更改【最终时间】的值时,【图像】字段中的值也将自动更改以使其与新【最终时间】的比例保持不变。

帧的数目决定了仿真输出结果的表现细腻程度,帧的数目越多,则仿真的输出动画播放越平缓。相反,如果机构运动较快,但是帧的数目又较少的话,则仿真的输出动画就会出现快速播放甚至跳跃的情况。这样就不容易仔细观察仿真的结果及其运动细节。

注意

这里的帧的数目是帧的总数目而非每秒的帧数。另外,不要混淆机构运动速度和帧的播放速度的概念,前者和机构中部件的运动速度有关,后者是仿真结果的播放速度,主要取决计算机的硬件性能。计算机硬件性能越好,则能够达到的播放速度就越快,即每秒能够播放的帧数就越多。

4.过滤器

如图13-49所示,【过滤器】可以控制帧显示步幅。例如,如果【过滤器】为1,则每隔1 帧显示1个图像;如果为5,则每隔5帧显示1个图像。只有仿真模式处于激活状态且未运行仿真时,才能使用该选项。默认为1个图像。

978-7-111-44986-7-Part04-103.jpg

图13-47 最终时间

978-7-111-44986-7-Part04-104.jpg

图13-48 图像

978-7-111-44986-7-Part04-105.jpg

图13-49 过滤器

5.模拟时间、百分比和计算实际时间

如图13-50所示,【模拟时间】值显示机械装置运动的持续时间;如图13-51所示,【百分比】显示仿真完成的百分比;如图13-52所示,【计算实际时间】值显示运行仿真实际所花的时间。

978-7-111-44986-7-Part04-106.jpg

图13-50 模拟时间

978-7-111-44986-7-Part04-107.jpg

图13-51 百分比

978-7-111-44986-7-Part04-108.jpg

图13-52 计算实际时间

13.3.2 运行仿真

仿真环境设置完毕,就可以进行仿真了。参照上一节介绍的仿真面板的工具栏的介绍控制仿真过程。需要注意的是,通过拖动滑动条的滑块位置,可以将仿真结果动画拖动到任何一帧处停止,以便于观察指定时间和位置处的仿真结果。

运行仿真的一般步骤是:

(1)设置好仿真的参数(参考【分析设置】一节)。

(2)打开仿真面板,可以单击播放按钮978-7-111-44986-7-Part04-109.jpg开始运行仿真。

(3)仿真结束后,产生仿真结果。

(4)同时可以利用播放控制按钮用来回放仿真动画。可以改变仿真方式,同时观察仿真过程中的时间和帧数。

13.3.3 仿真结果输出

在完成了仿真之后,可以将仿真结果以各种形式输出,以便于仿真结果的观察。

注意

只有当仿真全部完成之后才可以输出仿真结果。

1.输出仿真结果为AVI文件

如果要将仿真的动画保存为视频文件,以便于在任何时候和地点方便观看仿真过程,可以使用运动仿真的“发布电影”功能。具体的步骤是:

(1)单击【运动仿真】标签栏【动画制作】面板中的【发布电影】工具按钮978-7-111-44986-7-Part04-110.jpg,打开的“发布电影”对话框,如图13-53所示。

(2)通过【浏览】按钮可以选择AVI文件的保存路径和文件名。选择完毕后点击【保存】按钮,则打开“视频压缩”对话框,如图13-54所示。“视频压缩”对话框可以指定要使用的视频压缩编解码器。默认的视频压缩编解码器是“Cinepak Codec by Radius”。可以使用“压缩质量”字段中的指示栏来更改压缩质量。一般均采用默认设置。设置完毕单击【确定】按钮。

978-7-111-44986-7-Part04-111.jpg

图13-53 “发布电影”对话框

978-7-111-44986-7-Part04-112.jpg

图13-54 “视频压缩”对话框

(3)单击【运行】按钮978-7-111-44986-7-Part04-113.jpg开始或重放仿真。

(4)仿真结束时,再次单击【创建AVI】以停止记录。

2.输出图示器

【输出图示器】可以用来分析仿真。在仿真过程中和仿真完成后,将显示仿真中所有输入和输出变量的图形和数值。【输出图示器】包含工具栏、浏览器、时间步长窗格和图形窗口。

单击【输出图示器】按钮978-7-111-44986-7-Part04-114.jpg,打开如图13-55所示的“输出图示器”对话框。

多次单击【输出图示器】工具按钮978-7-111-44986-7-Part04-115.jpg,可以打开多个“输出图示器”对话框。

注意

与动态零件运动参数、输入图示器参数类似,在“参数”对话框中输出图示器参数不可用。

978-7-111-44986-7-Part04-116.jpg

图13-55 “输出图示器”对话框

输出图示器中的变量含义见表13-2。

可以使用输出图示器进行以下操作:

● 显示任何仿真变量的图形。

● 对一个或多个仿真变量应用“快速傅立叶变换”。

● 保存仿真变量。

● 将当前变量与上次仿真时保存的变量相比较。

● 使用仿真变量从计算中导出变量。

● 准备FEA的仿真结果。

● 将仿真结果发送到Excel和文本文件中。

下面简要介绍输出图示器的工具栏:

● 【清除】按钮978-7-111-44986-7-Part04-117.jpg:清除输出图示器中的所有仿真结果。

● 【全部不选】按钮978-7-111-44986-7-Part04-118.jpg:用以取消所有变量的选择。

● 【自动缩放】按钮978-7-111-44986-7-Part04-119.jpg:自动缩放图形窗口中显示的曲线,以便可以看到整条曲线。

● 【将数据导出到Excel】工具978-7-111-44986-7-Part04-120.jpg:将图形窗口中当前显示结果输出到Microsoft Excel表格中。

表13-2 变量含义

978-7-111-44986-7-Part04-121.jpg

其余几个按钮与Windows窗口中的打开、保存、打印等工具的使用方法相同,这里不再赘述。

下面以剪刀为例讲述利用【输出图示器】进行仿真分析的步骤:

(1)在浏览器中选择剪刀下的【标准连接】中的【铰链(旋转)运动】,右键打开关联菜单选择【特性】选项,打开如图13-56所示的【铰链(旋转)运动】对话框。

(2)选择【自由度1(R)】选项卡,如图13-57所示,并选择【编辑铰链转矩】按钮978-7-111-44986-7-Part04-122.jpg,选中【启用铰接转矩】复选框,改写阻尼值,其他不变,单击【确定】按钮返回“输出图示器”对话框。

978-7-111-44986-7-Part04-123.jpg

图13-56 “铰链(旋转)运动”对话框

978-7-111-44986-7-Part04-124.jpg

图13-57 【自由度1(R)】选项卡

(3)在【输出图示器】的浏览器下,单击【铰链(旋转)运动】左边的978-7-111-44986-7-Part04-125.jpg按钮,展开【旋转运动】项,继续选择展开【力】项,选中【力】选项,如图13-58所示。

(4)在仿真面板中选择【开始】按钮运行仿真,则【输出图示器】将显示力的视觉表达,如图13-58所示。

如果想将该曲线输出到Excel表格中,可以单击工具栏中的978-7-111-44986-7-Part04-126.jpg按钮,打开如图13-59所示提示框,选择【是】按钮,将该力的视觉表达曲线输出到Excel表格中,如图13-60所示。

3.将结果导出到FEA

FEA(Finite Element Analysis,有限元分析)分析方法在固体力学、机械工程、土木工程、航空结构、热传导、电磁场、流体力学、流体动力学、地质力学、原子工程和生物医学工程等各个具有连续介质和场的领域中获得了越来越广泛的应用。

978-7-111-44986-7-Part04-127.jpg

图13-58 浏览器中力的设置及绘制出的曲线

978-7-111-44986-7-Part04-128.jpg

图13-59 提示框

978-7-111-44986-7-Part04-129.jpg

图13-60 输出曲线到Excel表

有限元法的基本思想就是把一个连续体人为的地分割成有限个单元,即把一个结构看成由若干通过结点相连的单元组成的整体,先进行单元分析,然后再把这些单元组合起来代表原来的结构。这种先化整为零再积零为整的方法就叫有限元法。

从数学的角度来看,有限元法是将一个偏微分方程化成一个代数方程组,利用计算机求解。由于有限元法是采用矩阵算法,借助计算机这个工具可以快速地算出结果。在运动仿真中可以将仿真过程中得到的力的信息按照一定的格式输出为其他FEA软件(如SAP、NASTRAN、ANSYS等)所兼容的文件。这样就可以借助这些有限元分析软件的强大功能来进一步分析所得到的仿真数据。

注意

在运动仿真中,要求零部件的力必须均匀分布在某个几何形状上,这样导出的数据才可以被其他FEA软件所利用。如果某个力作用在空间的一个三维点上,那么该力将无法被计算。运动仿真能够很好地支持零部件支撑面(或者边线)上的受力,包括作用力和反作用力。

可以在创建约束、力(力矩)、运动等元素的时候选择承载力的表面或者边线,也可以在将仿真数据结果导出到FEA的时候再选择。这些表面或者边线只需要定义一次,那么在以后的仿真或者数据导出中它们都会发挥作用。

注意

在将仿真结果导出到FEA时,一次只能导出某一个时刻的仿真结果数据,也就是说,某一个时刻的仿真数据构成单独的一个文件,有限元软件只能够同时分析这一个时刻的数据。虽然运动仿真也能够将某一个时间段的数据一起导出,但是也是导出到不同的文件中,与分别导出这些文件的结果没有任何区别,只是导出的效率提高了。

简要说明【导出到FEA】的操作步骤:

(1)选择要输出到FEA)的零件。

(2)根据【分析设置】对话框中的设置,可以将必要的数据与相应的零件文件相关联以使用Inventor应力分析进行分析,或者将数据写入文本文件中以进行ANSYS模拟。

(3)进行Inventor分析的时候,在【运动仿真】面板上选择【导出到FEA】978-7-111-44986-7-Part04-130.jpg,打开如图13-61所示“导出到FEA”对话框。

(4)在图形窗口中,单击要进行分析的零件,作为FEA分析零件。

可以选择多个零件。要取消选择某个零件,请在按住Ctrl键的同时单击该零件。按照给定指示选择完零件和承载面后单击【确认】按钮。

(5)从主菜单中,选择【应用程序】下的【应力分析】选项。单击【运动载荷】工具按钮978-7-111-44986-7-Part04-131.jpg,将此运动分析结果输入为应力分析的运动载荷,单击【确定】按钮,将显示说明载荷已成功创建的消息。单击【应力分析更新】工具按钮978-7-111-44986-7-Part04-132.jpg,将对该链接零件执行应力分析并在图形窗口中显示结果,如图13-62所示。

978-7-111-44986-7-Part04-133.jpg

图13-61 【导出到FEA】对话框

978-7-111-44986-7-Part04-134.jpg

图13-62 应力分析结果显示

第14章 应力分析

978-7-111-44986-7-Part04-135.jpg

导读 精彩内容

应力分析模块是Inventor 2008专业版的一个重要的新增功能,Inventor 2014对应力分析模块进行了更新。通过在零件和钣金环境下进行应力分析,可以使设计者能够在设计的开始阶段就知道所设计的零件的材料和形状是否能够满足应力要求,变形是否在允许范围内等。

■ 应力分析的一般步骤

■ 边界条件的创建

■ 查看分析结果

■ 报告的生成和分析

14.1 Inventor 2014应力分析模块概述

978-7-111-44986-7-Part04-136.jpg

Inventor 2014完备了零件和钣金的应力分析环境,增加完善了新建抽壳元网格、多时间步长分析、特征抑制等新特性。新的应力分析模块能够使用户计算零件的应力、变形、安全系数和共振频率模式。本章主要介绍如何在Inventor 2014中使用应力分析功能。

14.1.1 应力分析的一般方法

应力分析模块集成在Inventor中,运行Inventor,进入到零件或者钣金环境下,单击【环境】标签栏【开始】面板上的【应力分析】工具按钮978-7-111-44986-7-Part04-137.jpg,则进入到应力分析环境下,如图14-1所示。在应力分析环境下可以看到:

(1)此时的工具面板已经变成了【应力分析】面板。

(2)浏览器的标题栏也变成了“应力分析”,其中包含有【载荷和约束】【结果】等选项。

(3)在功能区中,增加了【应力分析】标签栏,其中有一些在应力分析过程中能够用到的工具按钮,如【网格视图】按钮、【边界条件】按钮、【最大结果】等按钮以及【变形样式】列表框。

Inventor的应力分析模块由世界上最大的有限元分析软件公司之一的美国ANSYS公司开发,所以Inventor的应力分析也是采取FEA的基本理论和方法。FEA的基本方法是将物理模型的CAD表示分成小片断(想象一个三维迷宫),此过程称为网格化。

网格(有限元素集合)的质量越高,物理模型的数学表示就越好。使用方程组对各个元素的行为进行组合计算,便可以预测形状的行为。如果使用典型工程手册中的基本封闭形式计算,将无法理解这些形状的行为。图14-2所示是对零件模型进行有限元网格划分的示意图。

978-7-111-44986-7-Part04-138.jpg

图14-1 进入应力分析环境

978-7-111-44986-7-Part04-139.jpg

图14-2 对零件模型进行有限元网格划分

Inventor中的应力分析是通过使用物理系统的数学表示来完成的。该物理系统由以下内容组成:

(1)一个零件(模型)。

(2)材料特性。

(3)可应用的边界条件(称为预处理)。

(4)此数学表示的方案(求解)。要获得一种方案,可将零件分成若干小元素。求解器会对各个元素的独立行为进行综合计算,以预测整个物理系统的行为。

(5)研究该方案的结果(称为后处理)。

所以,进行应力分析的一般步骤是:

(1)创建要进行分析的零件模型。

(2)指定该模型的材料特性。

(3)添加必要的边界条件以便于与实际情况相符和。

(4)进行分析设置。

(5)划分有限元网格,运行分析,分析结果的输出和研究(后处理)。

使用Inventor进行应力分析,必须了解一些必要的分析假设。

(1)由Autodesk Inventor Professional提供的应力分析仅适用于线性材料特性。在这种材料特性中,应力和材料中的应变成正比例,即材料不会永久性地屈服。在弹性区域(作为弹性模量进行测量)中,材料的应力—应变曲线的斜率为常数时,便会得到线性行为。

(2)假设与零件厚度相比,总变形很小。例如,如果研究梁的挠度,那么计算得出的位移必须远小于该梁的最小横截面。

(3)结果与温度无关,即假设温度不影响材料特性。

如果上面三个条件中的某一个不符合时,则不能保证分析结果的正确性。

14.1.2 应力分析的意义

使用应力分析工具,用户可以:

(1)执行零件的应力分析或频率分析。

(2)将力载荷、压力载荷、轴承载荷、力矩载荷或体积载荷应用到零件的顶点、表面或边。

(3)将固定约束或非零位移约束应用到模型。

(4)评估对多个参数设计进行更改所产生的影响。

(5)根据等效应力、变形、安全系数或共振频率模式来查看分析结果。

(6)添加特征(如角撑板、圆角或加强筋),重新评估设计,然后更新方案。

(7)生成可以保存为HTML格式的完整的自动工程设计报告。

在产品的最初设计阶段执行机械零件的分析可以帮助用户以更短的时间、设计出更好的产品投放到市场。Inventor的应力分析可以帮助用户实现以下目标:

(1)确定零件的坚固程度是否可以承受预期的载荷或振动,而不会出现不适当的断裂或变形。

(2)在早期阶段便可获得全面的分析结果,这是有价值的(因为在早期阶段进行重新设计的成本较低)。

(3)确定是否能以更节约成本的方式重新设计零件,并且在预期的使用中仍能达到满意的效果。

因此,应力分析工具可以帮助用户更好地了解设计在特定条件下的性能。即使是非常有经验的专家,也可能需要花费大量时间进行所谓的详细分析,才能获得考虑实际情况后得出的精确答案。在帮助进行预测和改进设计方面,通常较为有用的是从基本或基础分析中获得的趋势和行为信息,所以,在设计阶段执行应力分析可以充分地改进整个工程过程。

以下是应力分析的一个使用样例:

在设计托架系统或单个焊接件时,零件的变形可能会极大地影响关键零部件的对齐,从而产生会导致加速磨损的力。评估振动的影响时,几何结构是一个重要的因素,因为它对零件的共振频率起了关键的作用。是出现零件故障,还是获得预期的零件性能,一个重要的条件是能否避免关键的共振频率(在某些情况下是能否达到关键的共振频率)。利用Inventor的应力分析功能,可以得到零件在受力情况下的变形量以及振动的情况等,这样可以为零件的实际设计提供有效的参考,大大地减少试验过程和设计周期。

14.2 边界条件的创建

978-7-111-44986-7-Part04-140.jpg

模型实体和边界条件(如材料、载荷、力矩等)共同组成了一个可以进行应力分析的系统。

14.2.1 验证材料

当在零件或者钣金环境中进入应力分析环境时,系统会首先检查当前激活的零件的材料是否可以用于应力分析。如果材料合适,将在【应力分析】浏览器中列出;如果不合适,将打开如图14-3所示的“选择材料”对话框,可以从下拉列表中为零件选择一种合适的材料,以用于应力分析。

如果不选择任何材料而取消此对话框,继续设置应力分析,当尝试更新应力分析时,将显示该对话框,以便于在运行分析之前选择一种有效的材料。

需要注意的是,当材料的屈服强度为零时,可以执行应力分析,但是“安全系数”将无法计算和显示。当材料密度为零时,同样可以执行应力分析,但无法执行共振频率(模式)分析。

14.2.2 力和压力

应力分析模块中提供力和压力两种形式的作用力载荷。力和压力的区别是力作用在一个点上,而压力作用在表面上,压力更加准确的称呼应该是“压强”。下面以添加力为例,讲述如何在应力分析模块下为模型添加力。

(1)单击【应力分析】标签栏【载荷】面板上的【力】工具按钮978-7-111-44986-7-Part04-141.jpg,打开如图14-4所示的“力”对话框。

978-7-111-44986-7-Part04-142.jpg

图14-3 “选择材料”对话框

978-7-111-44986-7-Part04-143.jpg

图14-4 “力”对话框

(2)单击【位置】按钮,选择零件上的某一点作用力的作用点。也可以在模型上单击左键,则鼠标指针所在的位置就作为力的作用点。

(3)通过单击【方向】按钮可以选择力的方向,如果选择了一个平面,则平面的法线方向被选择作为力的方向。单击【反相】按钮978-7-111-44986-7-Part04-144.jpg可以使力的作用方向相反。

(4)在【大小】文本框中指定力的大小。如果选中了【使用矢量分量】选项框,还可以通过指定力的各个分量的值来确定力的大小和方向。既可以输入数值形式的力值,也可以输入已定义参数的方程式。

(5)单击【确定】按钮完成力的添加。

注意

当使用分量形式的力时,【方向】按钮和【大小】文本框变为灰色不可用。因为此时力的大小和方向完全由各个分力来决定,不需要再单独指定力的这些参数。

要为零件模型添加压力,可以选择【载荷】面板上的【压力】工具按钮978-7-111-44986-7-Part04-145.jpg,打开如图14-5所示的“压力”对话框,单击【面】按钮指定压力作用的表面,然后在【大小】文本框中指定压力的大小。注意单位为MPa(MPa是压强的单位)。压力的大小总取决于作用表面的面积。单击【确定】按钮完成压力的添加。

14.2.3 轴承载荷

轴承载荷顾名思义,仅可以应用到圆柱表面。默认情况下,应用的载荷平行于圆柱的轴。载荷的方向可以是平面的方向,也可以是边的方向。

要为零件添加轴承载荷,可以:

(1)单击【应力分析】标签栏【载荷】面板上的【轴承载荷】按钮978-7-111-44986-7-Part04-146.jpg,打开如图14-6所示的“轴承载荷”对话框。

978-7-111-44986-7-Part04-147.jpg (2)选择轴承载荷的作用表面,注意应该选择一个圆柱面。

(3)选择轴承载荷的作用方向,可以选择一个平面,则平面的法线方向将作为轴承载荷的方向;如果选择一个圆柱面,则圆柱面的轴向方向将作为轴承载荷的方向;如果选择一条边,则该边的矢量方向将作为轴承载荷的方向。

(4)在【大小】文本框中可以指定轴承载荷的大小。对于轴承载荷来说,也可以通过分力来决定合力,需要选中【使用分量】复选框,然后指定各个分力的大小即可。

(5)单击【确定】按钮完成轴承载荷的添加。

978-7-111-44986-7-Part04-148.jpg

图14-5 “压力”对话框

978-7-111-44986-7-Part04-149.jpg

图14-6 “轴承载荷”对话框

14.2.4 力矩

力矩仅可以应用到表面,其方向可以由平面、直边、两个顶点和轴来定义。

要为零件添加力矩,可以:

(1)单击【应力分析】标签栏【载荷】面板上的【力矩】按钮978-7-111-44986-7-Part04-150.jpg,打开如图14-7所示的“力矩”对话框。

(2)单击【面】按钮以选择力矩的作用表面。

(3)单击【方向】按钮选择力矩的方向,可以选择一个平面,或者选择一条直线边,或者两个顶点以及轴,则平面的法线方向、直线的矢量方向、两个顶点构成的直线方向以及轴的方向将分别作为力矩的方向。同样可以使用分力矩合成总力矩的方法来创建力矩,选中“力矩”对话框中的【使用分量】复选框即可。

(4)单击【确定】按钮完成力矩的添加。

14.2.5 体载荷

体载荷包括零件的重力,以及由于零件自身的加速度和速度而受到的力、惯性力。由于在应力分析模块中无法使得模型运动,所以增加了体载荷的概念,以模仿零件在运动时的受力。

要为零件添加体载荷,可以:

(1)单击【应力分析】标签栏【载荷】面板上的【体】工具按钮978-7-111-44986-7-Part04-151.jpg,打开如图14-8所示的“体载荷”对话框。

(2)在【线性】标签栏中,可以选择线性载荷的重力方向,如+X,-Y等。

978-7-111-44986-7-Part04-152.jpg

图14-7 “力矩”对话框

978-7-111-44986-7-Part04-153.jpg

图14-8 “体载荷”对话框

(3)在【大小】文本框中输入线性载荷大小。

(4)在【角度】标签栏的【加速度】和【旋转速度】框中,用户可以指定是否启用旋转速度和加速度,以及旋转速度和加速度的方向和大小,这里不再赘述。

(5)单击【确定】按钮完成体载荷的添加。

14.2.6 固定约束

将固定约束应用到表面、边或顶点上以使零件的一些自由度被限制,如果在一个正方体零件的一个顶点上添加固定约束,则约束该零件的三个平动自由度。除了限制零件的运动外,固定约束还可以使得零件在一定的运动范围内运动。添加固定约束的一般步骤是:

(1)单击【应力分析】标签栏【约束】面板上的【固定约束】工具按钮978-7-111-44986-7-Part04-154.jpg,打开如图14-9所示的“固定约束”对话框。

(2)单击【位置】按钮以选择要添加固定约束的位置,可以选择一个表面、一条直线或者一个点。

(3)如果要设置零件在一定范围内运动,则可以选中“使用分量”对话框,然后分别指定零件在X、Y、Z轴的运动范围的值,单位为毫米(mm)。

(4)单击【确定】按钮完成固定约束的添加。

978-7-111-44986-7-Part04-155.jpg

图14-9 “固定约束”对话框

14.2.7 销约束

可以向一个圆柱面或者其他曲面上添加销约束。当添加了一个销约束以后,物体在某个方向上就不够平动、转动和发生变形。 要添加销约束,可以单击【应力分析】标签栏【约束】面板上的【销约束】工具按钮978-7-111-44986-7-Part04-156.jpg

在弹出的如图14-10所示的“销约束”对话框中可以看到有三个选项,即【固定径向】【固定轴向】和【固定切向】。当选择了【固定径向】选项以后,则该圆柱面不能在圆柱的径向方向上平动、转动或者变形。对于其他两个选项,有类似的约定。

14.2.8 无摩擦约束

利用无摩擦约束工具,可以在一个表面上添加无摩擦约束。添加无摩擦约束以后,则物体不能够在垂直于该表面的方向上运动或者变形,但是可以在与无摩擦约束相切方向上运动或者变形。

要为一个表面添加无摩擦约束,可以单击【应力分析】标签栏【约束】面板上的【无摩擦约束】工具按钮978-7-111-44986-7-Part04-157.jpg,在弹出的如图14-11所示的“无摩擦约束”对话框选择一个表面以后,单击【确定】按钮,即完成无摩擦约束的添加。

978-7-111-44986-7-Part04-158.jpg

图14-10 “销约束”对话框

978-7-111-44986-7-Part04-159.jpg

图14-11 “无摩擦约束”对话框

14.3 模型分析及结果处理

978-7-111-44986-7-Part04-160.jpg

在为模型添加了必要的边界条件以后,就可以进行应力分析了。本节讲述如何进行应力分析以及分析结果的处理。

14.3.1 应力分析设置

在进行正式的应力分析之前,有必要对应力分析的类型和有限元网格的相关性设置。单击【应力分析】标签栏【设置】面板上的【应力分析设置】按钮978-7-111-44986-7-Part04-161.jpg,打开如图14-12所示的“应力分析设置”对话框。

(1)在分析类型中,可以选择分析类型:静态分析、模态分析。静态分析这里不多做解释,着重介绍一下模态分析。

978-7-111-44986-7-Part04-162.jpg

图14-12 “应力分析设置”对话框

共振频率(模态)分析主要用来查找零件振动的频率,以及在这些频率下的振形。与应力分析一样,模式分析也可以在应力分析环境中使用。共振频率分析可以独立于应力分析进行,用户可以对预应力结构执行频率分析,在这种情况下,可以于执行分析之前定义零件上的载荷。除此之外,还可以查找未约束的零件的共振频率。

(2)在“应力分析设置”对话框中的【网格】标签栏中,可以设置网格的大小。平均元素大小默认值为0.100,这时的网格所产生的求解时间和结果的精确程度处于平均水平。将数值设置为更小可以使用精密的网格,这种网格提供了高度精确的结果,但求解时间较长。将滑块设置为更大可以使用粗略的网格,这种网格求解较快,但可能包含明显不精确的结果。

14.3.2 运行分析

当所有的设置都已经符合要求,则【应力分析】标签栏【求解】面板上的【分析】按钮978-7-111-44986-7-Part04-163.jpg将处于可用状态,单击该按钮开始更新应力分析。如果以前没有做过应力分析,单击该按钮则开始进行应力分析。单击该按钮后,会打开【分析】对话框,如图14-13所示,指示当前分析的进度情况。如果在分析过程中单击【取消】按钮,则分析会中止,不会产生任何的分析结果。

978-7-111-44986-7-Part04-164.jpg

图14-13 “分析”对话框

14.3.3 查看分析结果

1.查看应力分析结果

当应力分析结束以后,在默认的设置下,【应力分析】浏览器中出现【结果】目录,显示应力分析的各个结果。同时显示模式将切换为【轮廓着色】方式。图14-14所示为应力分析完毕后的界面。

978-7-111-44986-7-Part04-165.jpg

图14-14 分析完毕后的界面

图14-14所示的结果是选择分析类型为【应力分析】时的分析结果。在图中可以看到,Inventor以轮廓着色的方式显示了零件各个部分的应力情况,并且在零件上标出了应力最大点和应力最小点。同时还显示了零件模型在受力状况下的变形情况。查看结果时,始终都能看到此零件的未变形线框。

在【应力分析】浏览器中,【结果】目录下包含三个选项,即【应力】、【位移】和【应变】,缺省情况下,【应力】选项前有复选标记,表示当前在工作区域内显示的是零件的等效应力。当然也可以双击其他选项,使得该选项前面出现复选标记,则工作区域内也会显示该选项对应的分析结果,图14-15所示为应力分析结果中的零件变形分析结果。

978-7-111-44986-7-Part04-166.jpg

图14-15 零件变形分析结果

2.查看模态分析结果

如果选择了分析类型为【模态分析】,分析结果如图14-16所示。

978-7-111-44986-7-Part04-167.jpg

图14-16 模态分析结果

3.结果可视化

如果要改变分析后零件的显示模式,可以选择标准工具栏中的【显示设置】下拉菜单,可以看到有三种显示模式可以选择:无着色、轮廓着色和平滑着色,三种显示模式下零件模型的外观区别如图14-17所示。

另外,标准工具栏上提供了一些关于分析结果可视化的选项,包括【网格视图】978-7-111-44986-7-Part04-168.jpg、【显示边界条件】978-7-111-44986-7-Part04-169.jpg、【最大结果】978-7-111-44986-7-Part04-170.jpg、【最小结果】978-7-111-44986-7-Part04-171.jpg和【变形样式】。

(1)单击【网格视图】按钮则将方案中使用的元素网格与结果轮廓一起显示,如图14-18所示。

978-7-111-44986-7-Part04-172.jpg

图14-17 三种显示模式下零件模型的外观

(2)单击【边界条件】按钮,显示零件上的的载荷符号。

(3)单击【最大结果】按钮,显示零件模型上结果为最大值的点。

(4)单击【最小结果】按钮,显示零件模型上结果为最小值的点。

(5)单击【变形样式】按钮,出现下拉菜单,从中可以选择不同的变形样式,其中,变形样式为【1:1自动】和【5:1自动】时的零件模型显示如图14-19所示。

978-7-111-44986-7-Part04-173.jpg

图14-18 元素网格与结果轮廓一起显示

978-7-111-44986-7-Part04-174.jpg

图14-19 不同的变形样式下的零件模型

4.编辑颜色栏

颜色栏显示了轮廓颜色与方案中计算得出的应力值或位移之间的对应关系,如图14-14~14-16中所示。用户可以编辑颜色栏以设置彩色轮廓,从而使应力/位移按照用户的理解方式来显示。

从【应力分析】工具面板中选择【颜色栏】按钮978-7-111-44986-7-Part04-175.jpg。打开颜色栏时,将显示默认的颜色设置。对话框的左侧显示了最小值/最大值。如图14-20所示。

978-7-111-44986-7-Part04-176.jpg

图14-20 颜色栏对话框

现在说明一下颜色对话框中的各个图标的作用:

【最大值】显示计算的最大阈值。取消选中“最大值”以启用手动阈值设置。

【最小值】显示计算的最小阈值。取消选中“最小值”以启用手动阈值设置。978-7-111-44986-7-Part04-177.jpg增加颜色:增加间色的数量。

978-7-111-44986-7-Part04-178.jpg减少颜色:减少间色的数量。

978-7-111-44986-7-Part04-179.jpg颜色:以某个范围的颜色显示应力等高线。

978-7-111-44986-7-Part04-180.jpg灰度:以灰度显示应力等高线。

14.3.4 生成分析报告

对零件运行分析之后,用户可以生成分析报告,分析报告提供了分析环境和结果的书面记录。本节介绍了如何生成分析报告、如何解释报告,以及如何保存和分发报告。

1.生成和保存报告

对零件运行应力分析之后,您可以保存该分析的详细信息,供日后参考。使用【报告】命令可以将所有的分析条件和结果保存为HTML格式的文件,以便查看和存储。

生成报告的步骤如下:

(1)设置并运行零件分析。

(2)设置缩放和当前零件的视图方向,以显示分析结果的最佳图示。此处所选视图就是在报告中使用的视图。

(3)从工具面板中,选择【报告】按钮978-7-111-44986-7-Part04-181.jpg以创建当前分析的报告。完成后,将显示一个IE浏览器窗口,其中包含了该报告,如图14-21所示。

(4)使用IE浏览器【文件】菜单中的【另存为】命令保存报告,供日后参考。

2.解释报告

报告由概要、简介、场景和附录组成。其中:

(1)概要部分包含用于分析的文件、分析条件和分析结果的概述。

(2)简介部分说明了报告的内容,以及如何使用这些内容来解释分析。

(3)场景部分给出了有关各种分析条件的详细信息:几何图形和网格,包含网格相关性、节点数量和元素数量的说明;材料数据部分包含密度,强度等的说明;载荷条件和约束方案包含载荷和约束定义、约束反作用力。

(4)附录部分包含以下几个部分:

场景图形部分带有标签的图形,这些图形显示了不同结果集的轮廓,例如等效应力、最大主应力、最小主应力、变形和安全系数,如图14-21所示。

材料特性部分用于分析的材料的特性和应力极限。

14.3.5 生成动画

Inventor 2014应力分析的增强功能就是可以生成仿真的动画,使用“动画结果”工具,可以在各种阶段的变形中使零件可视化。还可以制作不同频率下应力、安全系数及变形的动画。这样,使得仿真结果能够形象和直观的表达出来。

可以单击【结果】面板上的【动画制作】按钮978-7-111-44986-7-Part04-182.jpg来启动动画工具,此时弹出如图14-22所示的【动画结果】对话框,可以通过【播放】、【暂停】、【停止】按钮来控制动画的播放;可以通过【记录】按钮来将动画以AVI格式保存成文件。

978-7-111-44986-7-Part04-183.jpg

图14-21 包含报告的浏览器窗口

978-7-111-44986-7-Part04-184.jpg

图14-22 “动画结果”对话框

在【动画速度】下拉框中,可以选择动画播放的速度,如可以选择播放速度为“正常”“最快”“慢”“最慢”等,这样可以根据具体的需要来调节动画播放速度的快慢,以便于更加方便的观察结果。

第15章 Inventor二次开发入门

978-7-111-44986-7-Part04-185.jpg

导读 精彩内容

通过二次开发,用户可以定制符合自己具体要求的Inventor,使得软件更加的个性化,也可以定制更多的功能。本章主要介绍了Inventor二次开发的几种主要方法。

■ 了解Inventor API(应用程序接口)

■ VBA开发的基础知识

■ 利用插件进行二次开发

■ 学徒服务器的应用

15.1 Inventor API概述

978-7-111-44986-7-Part04-186.jpg

Inventor具有良好的开放型,它提供了充分的二次资源开发接口和开发方法,这样用户可以在其平台上开发满足自己特定要求的产品。Inventor中支持面向对象的ActiveX技术,通过它可以方便有效的利用各种高级程序语言如Visual C++或者VB等对Inventor进行二次开发。通过二次开发可以使得Inventor增加新的功能,并能够使得操作优化,满足用户的个性需要。

15.1.1 Inventor API总论

API是Application Program Interface(应用程序接口)的简称,它是微软公司的一种自动化操作(OLE自动化)技术。API的功能简言之,就是把应用程序中的功能暴漏出来,可以供其他应用程序直接使用。API技术广泛的应用在为Windows系统设计的应用软件中,如微软的办公软件Word和Excel,Autodesk的AutoCAD、MDT、Inventor等,都用到了API技术,使得用户能够通过自主编程定制应用程序的某些特定功能。

在Inventor中,API充分展示了其功能集,这样用户可以使用多种方式来使用现成的API,从而为Inventor添加更多的功能选项。在Inventor中,可以使用几种不同的方式使用API,如VBA方式以及插件方式等,关于这些内容我们将在下一节详细介绍。

API技术有着很多显著的优点和技术优势。首先,几乎所有的流行的编程语言都可以用来进行编写API应用程序,如VB、VC++、Delphi、Perl和Java等。用户可以根据自己对某种编程语言的熟悉程度来选择合适的语言。其次,API具有标准的规则,也就是说一定的通用性。也就是说如果用户具有一定的Word API程序编制经验的话,也就很容易理解Inventor API程序的意义了。一旦用户理解了面向对象的API程序的工作机制,那么它就会比面向过程的应用程序的编写更加易于理解和运用。

15.1.2 Inventor API的分类

1.VBA

VBA的全称是Visual Basic for Application,即为应用程序量身制作的Visual Basic。VBA并不是一个独立的开发工具,也不为某一个产品所独有,它是微软开发的一种编程语言,可以把它理解为VB的一个子集,它包含了VB的大部分常用的功能。但是二者之间存在的一个显著的区别,即某一个产品(如Inventor)的VBA程序只能够运行在该产品的内部,而VB可以生成独立的可以直接运行的EXE文件,可以在产品外部运行。VBA作为一种易学易用的程序语言,广泛应用在100多种软件中,如微软的Office软件(包含Word、Excel、Access等)、Autodesk的各种产品(如Inventor)。

在Inventor中利用VBA设计的程序一般称为宏,需要在Inventor内部才可以执行,不能脱离Inventor。InventorVBA可以说是访问和使用InventorAPI最便捷的开发工具,它具有以下特点:1)VBA具有VB的大部分功能,且具有类似的集成开发环境。2)VBA随Inventor一同发行,不需要单独购买。和Inventor无缝集成,可以直接在Inventor中打开VBA程序界面进行应用程序开发。3)VBA不能创建可以运行在产品外部的独立的应用程序。它运行在Inventor相同的处理空间,运行效率高。4)可以把VBA程序做成独立的IVB文件,供其他用户和文件共享。

2.插件(ADD-IN)

插件是Inventor的一种特殊类型的应用程序,能够对支持API的产品进行编程。插件的几个重要特点如下:

(1)插件能够随着Inventor的启动而自动加载。

(2)插件能够创建用户自己的菜单命令。

(3)插件能够与其他的方法一样访问和使用Inventor API。

值得一提的是,插件在Inventor运行时可以自动加载的特性是一个非常实用的功能,因为许多与Inventor无缝集成的应用程序都需要以插件的形式运行,如Dynamic Designer,这样,只要Inventor运行,则插件形式的应用程序就会自动运行,并且在Inventor的运行过程中,这些应用程序始终会发挥作用。

3.独立的可执行文件(*.exe文件)

独立的*.exe文件可以独立运行,且与Inventor相关联。这种程序具有自己的界面,不需要用户在Inventor中做任何的交互操作。比如一个用来创建草图几何图元的应用程序,它独立与Inventor运行。当运行该程序时,它通过与数据库之间的交互操作添加新的数据,如果此时Inventor没有启动的话,则该程序对启动它,并创建所需的文档与相关的草图几何图元。由于独立的exe文件运行在Inventor的处理空间之外,因此程序的执行效率会有所损失。并且如果当用户在其他的应用程序的VBA中编写程序时,它也运行在独立的空间内。如在Excel中编写连接Inventor的VBA程序时,这个程序运行在Excel的处理空间内,而不是Inventor的处理空间内。

4.学徒服务器(Apprentice Server)

学徒服务器是一个ActiveX服务器,可以理解为Inventor的一个子集,运行在使用它的应用程序的处理空间内。学徒服务器为运行在Inventor之外的应用程序,如独立的exe文件访问Inventor文件打开了方便之门,如访问Inventor的装配结构,几何图元和文档属性等。

如果一个外部的应用程序要访问Inventor文档的信息,学徒服务器是一个非常不错的选择。由于学徒服务器能够运行在这个应用程序的内部,所以执行效率比在Inventor内部要高一些。另外,学徒服务器没有用户界面,所以能够更快的处理更多的操作。学徒服务器包含在Design Tracking中,该软件可以从Autodesk的网站免费下载。

15.1.3 Inventor API使用入门实例

本节介绍一个简单的Inventor API的应用实例,从这个实例中可以感性地认识一下利用API能够在Inventor环境中进行什么样的工作。

(1)这个程序用来判断当前激活的文档是否已经保存。运行Inventor,单击【工具】标签栏【选项】面板上的【VBA编辑器】按钮978-7-111-44986-7-Part04-187.jpg,打开如图15-1所示的Visual Basic编辑器窗口。在其中输入以下所示的代码:

Public Sub vbaexample()

‘设置当前激活文档的引用

Dim invdoc As Inventor.Document

Set invdoc=ThisApplication.ActiveDocument

‘检查文档时候被保存。这里通过检查文档的文件名来判断文档是否被保存,如果文档没有被保存的话则当前激活文档的文件名为空

If invdoc.FullFileName=""Then

MsgBox"当前的文档没有被保存!"

Else

‘如果文档已经被保存的话,则利用文档引用的FullFileName属性来得到文档的文件名

MsgBox"当前文档已经被保存,保存路径以及文件名为"&invdoc.FullFileName

End If

End Sub

978-7-111-44986-7-Part04-188.jpg

图15-1 VB编辑器窗口

(2)点击图15-1所示的VB编辑器窗口标准工具栏上的【运行子过程/用户窗体】按钮978-7-111-44986-7-Part04-189.jpg,如果此时文档没有被保存的话,则打开如图15-2所示的警告窗口。如果文档已经保存的话,则打开如图15-3所示的警告窗口。

978-7-111-44986-7-Part04-190.jpg

图15-2 文档未保存时的对话框

978-7-111-44986-7-Part04-191.jpg

图15-3 文档保存后的对话框

当保存了该程序以后,则该程序自动作为Inventor的一个宏,宏的名称为编制的子程序(过程)的名称,即Public Sub后面的函数名称,在这个范例中为“vbaexample”。

(3)选择菜单【工具】下的【宏】选项,则打开如图15-4所示的【宏】对话框,可以看到里面已经列出了“vbaexample”函数。单击该对话框右侧的【运行】按钮,则可以运行该宏,运行结果与单击vb编辑器的标准工具栏上的【运行子过程/用户窗体】按钮作用一样。选择【逐语句】选项则可以逐语句的执行程序,这样方便查找程序中的错误。选择【编辑】选项则可以打开VB编辑器以修改源程序。单击【删除】按钮则可以删除该宏。

978-7-111-44986-7-Part04-192.jpg

图15-4 “宏”对话框

注意

一旦创建了一个宏,则该宏可以应用在任何一个Inventor的文档中。也就是说本例中的这个程序可以判断任何一个Inventor文档如零件文档、部件文档、工程图文档以及表达视图文档是否经过了保存。

上面的这个VBA程序也可以稍做修改,则成为一个外部的VB程序,该程序范例位于光盘的“\二次开发\vbsample\”目录下。在这个程序中我们增加了检测Inventor是否启动以及自动检测是否新建了文档的功能,代码如下:

978-7-111-44986-7-Part04-193.jpg

978-7-111-44986-7-Part04-194.jpg

注意

该程序往往不能运行,这是因为在默认情况下VBA没有包含Inventor相关的类,此时可以在VBA编辑模式下,选择菜单【工具】下的【引用】选项,则打开“引用”对话框,如图15-5所示,选中其中的【Autodesk Inventor Object Library】选项即可。

978-7-111-44986-7-Part04-195.jpg

图15-5 “引用”对话框

15.2 Inventor VBA开发基础

978-7-111-44986-7-Part04-196.jpg

在进行编程之前,先了解VBA,掌握VBA的语法和代码等。

15.2.1 VBA语法小结

VBA的语法大部分与VB完全相同,本章中由于篇幅所限不可能一一详细讲述,这里仅做简要介绍,使得对VB不太熟悉的读者可以有一个大致的了解。如果想详细了解VBA的语法知识,可以参考VB或者VBA的书籍或者文档资料。

1.数据类型

表15-1是VBA中的数据类型及其存储空间以及数据范围。

表15-1 VBA中的数据类型

978-7-111-44986-7-Part04-197.jpg

2.运算符

VBA的算术运算符见表15-2。

字符串运算符见表15-3。

关系运算符见表15-4。

逻辑运算符见表15-5。

表15-2 VBA的算术运算符

978-7-111-44986-7-Part04-198.jpg

表15-3 字符串运算符

978-7-111-44986-7-Part04-199.jpg

表15-4 关系运算符

978-7-111-44986-7-Part04-200.jpg

表15-5 逻辑运算符

978-7-111-44986-7-Part04-201.jpg

3.程序流程控制

程序流程控制语句包括选择结构控制语句和循环结构控制语句以及其他辅助控制语句。

(1)选择结构控制语句

978-7-111-44986-7-Part04-202.jpg

978-7-111-44986-7-Part04-203.jpg

(2)循环结构控制语句

①For循环语句(知道循环次数的计数型循环)

978-7-111-44986-7-Part04-204.jpg

②Do……Loop循环(不知道循环次数的条件型循环)

用于控制循环次数未知的循环结构,语法形式有两种:

978-7-111-44986-7-Part04-205.jpg

语句块

Loop[While|Until条件]

(3)其他流程控制语句

①Go To语句

语句形式:Go To标号|行号

说明:

1)Go To语句只能转移到同一过程的标号或行号处;标号是一个字符系列,首字符必须为字母,与大小写无关,任何转移到的标号后面必须有冒号:;行号是一个数字序列;

2)以前BASIC中常用此语句,可读性差;现在要求尽量少用或不用,改用选择结构或循环结构来代替。

②Exit语句

用于退出某控制结构的执行,VB的Exit语句有多种形式,如:

Exit For(退出For循环)

Exit Do(退出Do循环)

Exit Sub(退出子过程)

Exit Function(退出函数)

③End语句

独立的End语句用于结束一个程序的执行,可以放在任何事件过程中,形式为:End VB的End语句还有多种形式,用于结束一个过程或块,如:

End If End With End Type End Select End Sub End Function

④With语句

它的作用是可以对某个对象执行一系列的语句,而不用重复指出对象的名称。但不能用一个With语句设置多个不同的对象。属性前面需要带点号“·”。语句形式如下:

With 对象名

语句块

End With

4.关键字

VB(A)中的关键字有:As,Binary,ByRef,ByVal,Date,Else,Empty,Error,False,For,Friend,Get,Input,Is,Len,Let,Lock,Me,Mid,New,Next,Nothing,Null,On,Option,Optional,ParamArray,Print,Private,Property,Public,Resume,Seek,Set,Static,Step,String,Then,Time,To,True,WithEvents。

在VB(A)中,关键字会被自动识别,所以,变量的名称一定不能与关键字同名,否则会出现意想不到的错误。

5.系统常数

VB(A)提供了一些系统常数,可以直接在程序中使用而无须声明或者预定义。颜色常数见表15-6,MsgBox函数的常数参数见表15-7,KeyCode常数(即键盘上的按键所代表的常数)见表15-8,日期常数见表15-9。

其他的系统常数这里不再一一列出,读者在实际编程时,可以查找相关的文档,或者从借助MSDN来获得帮助。

表15-6 颜色常数

978-7-111-44986-7-Part04-206.jpg

表15-7 MsgBox函数的常数参数

978-7-111-44986-7-Part04-207.jpg

表15-8 KeyCode常数

978-7-111-44986-7-Part04-208.jpg

表15-8 日期常数

978-7-111-44986-7-Part04-209.jpg

6.公共函数

VB(A)中提供了大量的公共函数,以方便的在不需要用户自主编程的情况下实现某些功能。VB(A)中常用的数学函数见表15-10。

VB(A)中常用的日期和时间函数见表15-11。

VB(A)中常用的字符串函数见表15-12。

VB(A)中常用的转换函数见表15-13。

表15-10 常用的数学函数

978-7-111-44986-7-Part04-210.jpg

表15-11 日期和时间函数

978-7-111-44986-7-Part04-211.jpg

表15-12 常用的字符串函数

978-7-111-44986-7-Part04-212.jpg

图15-13 常用的转换函数

978-7-111-44986-7-Part04-213.jpg

15.2.2 Inventor VBA工程

当开发一个VBA应用程序时,用一个工程(Project)来管理不同的该程序所涉及到的所有文件,一个工程可以包括以下类型的文件:

(1)工程文件(*.vbp),用来跟踪所有的文件。

(2)窗体文件(*.frm),对应程序中的每一个窗体。

(3)二进制数据文件(*.frx),每一个包含二进制数据控件(如图片或者声音等)的窗体,都会自动生成一个二进制数据文件。

(4)类模块文件(*.cls),对应于用户添加的类。

(5)标准模块文件(*.bas),对应于用户添加的标准模块。

(6)控件文件(*.ocx),对应于用户添加的ActiveX控件。

(7)资源文件(*.res),一个资源文件,此文件唯一。

Inventor VBA支持三种不同类型的工程管理模式,即应用程序工程、文档工程和用户工程。这三种模式的区别在于程序的存储和调用方法不同。

1.应用程序工程

在该模式下,VBA程序存放在Inventor外部的*.IVB文件中,程序可以被所有的Inventor文档共享,包括程序中的功能函数也能够被其他程序所调用。所以,这种模式非常有利于程序设计的模块化以及资源共享等。另外,应用程序功能在Inventor启动时自动加载,可以在任何时候对其进行引用。但是,Inventor中只能够存在一个这样的程序。

对于Inventor来说,只有一个*.IVB文件是有效的,能够正常运行。进入Inventor界面下,单击【工具】标签栏【选项】面板中的【应用程序选项】选项,打开“应用程序选项”对话框,如图15-6所示,在【默认VBA项目】选项中可以指定默认的*.IVB文件的位置和文件名。

当从Inventor中通过选择【选项】标签栏下的【VBA编辑器】选项进入VB编辑器以后,在左侧的【工程-应用程序工程】浏览器中,双击【应用程序项目…】下的【模块1】图标,则在右侧的代码窗口中显示该模块的代码,如图15-7所示。

当添加了程序代码或者对代码进行了编辑以后,会自动保存为一个宏,宏的名称和该模块的名称一致。可以通过“宏”对话框中的相关功能按钮来运行、修改、删除宏等操作。

2.文档工程

在该模式下,VBA程序存放在所附属的文档中。比如要在草图中使用一个几何图元作为界面创建实体,可以编制一个创建该几何图元的VBA程序(存储为宏),该程序附加在该文档中。然后就可以使用该宏方便的创建该几何图元及其各种副本,就好比使用不同类型的标准件一样。在该模式下,不能直接引用其他VBA程序中的功能函数,用户可以自行编写,或者利用复制代码的方式来实现。

文档工程模式下,VBA程序依附于创建和使用它的文档文件,在该文档打开时,VBA程序自动加载。注意不能在其他的文档中加载该程序,它仅仅属于一个文档。

要创建一个文档工程模式下的VBA程序,可以:

978-7-111-44986-7-Part04-214.jpg

图15-6 “应用程序选项”对话框

978-7-111-44986-7-Part04-215.jpg

图15-7 模块1的代码

(1)在Inventor中新建一个文件,进入VB编辑器,在【工程-文档工程】浏览器中,双击如图15-8所示的【模块1】图标,在右侧的代码区域内输入程序代码。这样就定义了一个名为“vbexample2”的宏。

(2)打开如图15-4所示的【宏】对话框,在【宏的位置】下拉框中选择【文档】工程,则“vbexample2”会显示在上面的文本框中,名称为“模块1.vbexample2”,如图15-9所示。

(3)当文件存盘时,程序也会自动存储。注意,当该零件文件被引入到其他文档中时,比如作为零件装配到部件文件中时,该零件文件中的宏也会一同被引入到部件文件中,也可以被引用。

3.用户工程

用户工程模式是最常用的一种模式,用户工程和应用程序工程基本相同,区别之处在于保存和加载的方法。用户工程不能被Inventor自动加载,必须通过VB编辑器界面中的【文件】菜单下的【加载项目】选项手动加载。可以被加载的用户工程的数量没有限制。

要新建一个用户工程,可以:

(1)进入到VB编辑器中,选择菜单【文件】下的【新建项目】选项,新建了一个用户项目,被自定义为【用户项目1】。

(2)默认状态下,该用户项目具有一个模块,如图15-10所示,也可以通过右键菜单中的相关选项为其添加用户窗体、模块和类模块。

(3)双击图15-10所示的模块1图标,则进入到代码状态,可以在右侧的代码窗口中添加程序代码。

978-7-111-44986-7-Part04-216.jpg

图15-8 模块1

978-7-111-44986-7-Part04-217.jpg

图15-9 显示宏

978-7-111-44986-7-Part04-218.jpg

图15-10 用户项目下的一个默认模块

(4)单击标准工具栏上的【保存】按钮978-7-111-44986-7-Part04-219.jpg,打开如图15-11所示的【另存为】对话框,选择好文件路径和文件名后单击【保存】按钮保存用户工程文件。

建立了该用户工程以后,也可以通过宏的方式来运行程序。通过菜单【工具】下的【宏】选项下的【宏】子选项,则打开“宏”对话框,在【宏的位置】下拉框中选择【用户项目】,则宏的名称【用户项目1】会显示在上面的【宏名称】文本框中,如图15-12所示。可以通过“宏”对话框中的对应功能按钮运行或者编辑宏等。

978-7-111-44986-7-Part04-220.jpg

图15-11 “另存为”对话框

978-7-111-44986-7-Part04-221.jpg

图15-12 “宏”对话框

15.2.3 Inventor VBA代码模块

VBA程序代码可以保存在三种模块中,即窗体模块、标准模块和类模块。每一个标准模块、窗体模块和类模块可以包含两部分,即声明部分和例程部分,其中声明部分包括常量、变量以及类型和动态链接库例程的声明,例程部分则包括函数、子程序以及属性例程等。

1.窗体模块

一个最简单的VB(VBA)应用程序可以只有一个窗体,所有的程序代码都包含在该窗体的模块中。当然也可以为程序添加另外的窗体模块,以形成多窗体的程序结构。窗体模块是大部分VB程序的基础,在窗体模块中可以包含基本的变量、类型和例程的声明,以及事件处理例程和常规例程等。在窗体模块中的程序代码专属于该窗体所属的应用程序,它也可以引用其他的窗体或者对象等。

2.标准模块

标准模块以.BAS作为文件后缀名,它可以作为例程和声明的容器。在应用程序的扩展过程中,往往会添加很多的窗体,其间难免会出现多个窗体需要共享一块程序代码的情况。在多个窗体中进行简单的复制粘贴可以实现,但是会带来巨大的工作量,并且当共享的这段程序需要修改时,就需要对所有用到这段程序的窗体中的代码一一修改,其繁琐程度可想而知。

为了避免这种麻烦,可以创建一个标准模块,该模块中包含有窗体共用的代码段,如果窗体需要使用这段代码的话,直接将该模块包含到工程中即可。修改了标准模块中的代码以后,包含了该模块了窗体中的对应代码也会自动更新。并且,标准模块可以被不同的外部程序使用,具有很强的扩展性。标注模块中的变量的作用域限定在程序之内,也就是说变量存在于程序的执行过程中。只要不终止程序,变量就一直发生作用。

3.类模块

类模块以.CLS作为后缀名,用来定义一个类,是面向对象编程的基础。在类模块中,用户可以编写代码定义一个类,并定义类的各种属性和方法。定义完类的属性和方法之后,可以在程序中利用该类创建其实例,该实例继承类的方法和属性。类的实例的变量和数据存在于该实例的生命时间,随着该实例的产生而产生,随着该实例的消失而消失。

15.3 插件(Add-In)

978-7-111-44986-7-Part04-222.jpg

插件(Add-In)作为与Inventor API的连接方法之一,具有很多优点,如随Inventor启动而自动启动、允许用户自定义菜单命令以及具有更多功能等。对于插件和Inventor的关系,我们可以理解为服务器和客户端的关系。Inventor是服务器,为客户端(插件)提供服务。Inventor在启动时,自动查找已经注册过的插件,然后将其启动。插件启动后,会得到所有Inventor API的访问权。Inventor在提供服务的过程中,还保持同插件之间的通信,如传递一些插件的相关信息。

15.3.1 创建插件

创建插件的第一步就是建立一个新的ActiveX EXE工程或者Active DLL工程。任何一种支持ActiveX组件的程序语言都能够创建插件,各种语言编写的程序的基本概念是一样的,但是所创建的组件对事件的响应并不完全相同。如果读者对ActiveX组件的内容不太清楚,最好首先查阅相关的文档以对其工作原理有所了解。下面按照步骤介绍。

1.新建Active EXE或者ActiveX DLL文件

要创建一个ActiveX组件,可以从Visual Basic的“New Project”选项对话框中选择【Active EXE】或者【ActiveX DLL】选项,如图15-13所示,然后单击【打开】按钮则创建一个ActiveX组件,此时的开发界面如图15-14所示。

2.包含Inventor对象库

需要注意的是,在ActiveX工程中必须将Inventor的类型库包含进来。要包含Inventor的类型库,可以在VB界面下选择【Project】菜单下的【Reference】选项,则打开“Reference”对话框,将其中的【Autodesk Inventor Object Library】项选中,如图15-15所示。

当创建了一个ActiveX组件后,必须在注册表中注册才能够正常使用。关于注册的方法在下一节详细讲述。组件注册需要通过程序的ID即ProgID才能够在注册表中进行定义,ProgID由对象的名称和类的名称决定,也就是“工程名称.类名称”的形式。如果建立了一个名为Project1的工程,建立了一个名称为Class1的类,如图15-16所示,则ProgID的名称为“Project1.Class1”。

978-7-111-44986-7-Part04-223.jpg

图15-13 新建ActiveX组件

978-7-111-44986-7-Part04-224.jpg

图15-14 开发界面

新建一个ActiveX组件后会自动创建一个类模块,默认名称为“Class1”。可以通过如图15-17所示右键菜单选项来添加窗体、类模块、标准模块等,可以通过双击某个窗体或者模块等来打开它的代码窗口为其添加代码。右键菜单中也提供了Remove…(删除)、Save(保存)等选项。

3.添加代码

可以为各种模块添加代码以实现具体的程序功能。在VB中,需要利用Implements关键字定义Inventor的接口,Inventor也会通过定义的接口同插件通信。将下面的代码添加到类模块中,以起到链接Inventor和插件的作用。

978-7-111-44986-7-Part04-225.jpg

图15-15 选中“Autodesk Inventor Object Library”项

978-7-111-44986-7-Part04-226.jpg

图15-16 建立工程和类

Implements ApplicationAddServer

这样程序中增加了一个名为ApplicationAddServer的对象,出现在VB代码窗口的对象列表中,同时它的方法也会列出在方法列表中,如图15-18所示。此时从对象列表中选择ApplicationAddServer对象,则立刻在代码窗口中为其添加Active方法的子程序,如图15-18所示,可以在其中添加程序代码,当该对象的Activate方法发生时,代码会被执行。

可以在方法列表中选择ApplicationAddServer对象的其他方法,则该方法的子程序会被自动添加。下面简单解释一下这四种方法。当插件被随着Inventor的启动而启动时,调用Activate过程。当结束Inventor程序或者从插件管理器中卸载插件而导致插件退出时,调用Deactivate过程。Automation方法允许插件暴露自己的一个API给其他程序。ExecuteCommand方法从Inventor R6开始就已经废弃了。

978-7-111-44986-7-Part04-227.jpg

图15-17 类的右键关联菜单

978-7-111-44986-7-Part04-228.jpg

图15-18 对象的方法列表

4.实例学习

在这个实例中为Inventor添加一个绘图工具面板,并利用其中的工具在Inventor的草图环境下绘制几何图形。该程序范例位于光盘的“\二次开发\插件实例\”目录下。

978-7-111-44986-7-Part04-229.jpg声明变量

在代码窗口中的最前面输入以下的代码,用来声明在程序中用到的一些全局变量。

Option Explicit

Implements ApplicationAddInServer

Private oApp As Inventor.Application

Private WithEvents oButtonHandler1 As ButtonDefinitionHandler

Private WithEvents oButtonHandler2 As ButtonDefinitionHandler

978-7-111-44986-7-Part04-230.jpg 调用Activate方法时,在零件的草图面板中添加一个新的面板,面板中添加两个工具按钮用来绘制几何图元,代码如下,读者可以参考其中的注释。

978-7-111-44986-7-Part04-231.jpg

978-7-111-44986-7-Part04-232.jpg

978-7-111-44986-7-Part04-233.jpg 编写按钮处理程序

在变量声明部分,已经通过下面的两个语句定义了两个按钮的句柄对象oButtonHandler1和oButtonHandler2。

Private WithEvents oButtonHandler1 As ButtonDefinitionHandler

Private WithEvents oButtonHandler2 As ButtonDefinitionHandler

此时可以看到在对象列表中已经添加了这两个对象,选择这两个按钮句柄对象的OnClick方法,则自动添加OnClick(单击按钮事件)的代码模块。在该代码模块中添加程序如下:

978-7-111-44986-7-Part04-234.jpg

978-7-111-44986-7-Part04-235.jpg

978-7-111-44986-7-Part04-236.jpg 编写绘制几何图形子程序

程序代码如下:

978-7-111-44986-7-Part04-237.jpg

978-7-111-44986-7-Part04-238.jpg

978-7-111-44986-7-Part04-239.jpg 编制其他过程程序

当退出插件时,触发Deactivate过程,其代码如下:

Private Sub ApplicationAddInServer Deactivate()

´利用Nothing关键字释放所有的引用以释放内存空间

Set Button Handler1=Nothing

Set Button Handler2=Nothing

Set App Obj=Nothing

End Sub

对于Automation方法,在本例中并不支持应用程序接口,所以也没有必要支持该属性。但是,VB在编译时要求所有的方法都应该编写一定的代码,这里可以添加如下程序代码,将函数返回值设置为Nothing,指示插件的API不可用。

Private Property Get ApplicationAddInServer Automation()As Object

Set ApplicationAddInServer Automation=Nothing

End Property

对于ExecuteCommand方法,当用户运行任何插件的命令时,该方法将被调用,即使该方法不再可用,Inventor仍然会执行它。可以在令该子过程代码为空,或者加一些注释就可以了,如下所示,这样一方面能够通过编译,另一方面即使VB在进行代码优化时也不会删除它。

Private Sub ApplicationAddInServer ExecuteCommand(ByVal CommandID As Long)

´添加任意的注释即可。

End Sub

978-7-111-44986-7-Part04-240.jpg 在全部代码都已经编写完毕以后,可以选择VB标准工具栏上的菜单【File】下的【Make 插件实例.dll】选项,则生成DLL文件。

15.3.2 为插件注册

当程序已经创建完毕,并且编译生成了DLL文件以后,还需要在注册表中为其注册,插件才能够正常使用。在VB中,当编译生成DLL文件时,会自动向注册表中添加信息,以便于将该DLL文件作为系统的一个ActiveX部件,但是该ActiveX部件如果要在Inventor中使用的话,还需要另外一些注册信息也需要添加到注册表中去。这些VB不会替我们完成,所以只能够手动添加。下面按照步骤讲述如何向注册表中添加插件的注册信息。

1.注册DLL服务器

选择Windows的【开始】菜单中的运行选项,输入类似如下的内容:

RegSvr32"E:\inventor\第015章\插件范例\AddInSample.dll"

如图15-19运行对话框中所示,注意根据你的DLL文件的具体位置填写。单击【确定】按钮,打开如图15-20所示的对话框,注册服务器成功。

978-7-111-44986-7-Part04-241.jpg

图15-19 “运行”对话框

978-7-111-44986-7-Part04-242.jpg

图15-20 注册服务器成功

2.获得插件ID

在编译DLL文件时,插件会自动分配一个ID,注册就需要找到这个ID,方法是:

(1)从Windows的开始菜单中选择【运行】选项,在打开的【运行】对话框中键入【Regedit】,如图15-21所示,然后按下回车键,则打开Windows自带的注册表编辑器,如图15-22所示。

(2)在HKEY_CLASSES_ROOT文件夹中,找到Project1.Class1文件夹,展开Clsid子文件夹,Clsid的值显示在右侧窗口中,如图15-23所示。

978-7-111-44986-7-Part04-243.jpg

图15-21 “运行”对话框中键入“regedit”

978-7-111-44986-7-Part04-244.jpg

图15-22 注册表编辑器

978-7-111-44986-7-Part04-245.jpg

图15-23 Clsid的值

(3)双击右侧窗口中的值的名称(“默认”),打开如图15-24所示的【编辑字符串】对话框,将“数值数据”文本框中的数据复制到粘贴板中,这就是插件的ID。

978-7-111-44986-7-Part04-246.jpg

图15-24 “编辑字符串”对话框

3.生成注册文件(*.reg文件)

(1)新建一个文本文件,键入以下内容,其中,加粗显示的部分是粘贴板中的内容,也就是插件在注册表中的ID。

REGEDIT4

[HKEY CLASSES ROOT\CLSID\{76165809-A31F-4A5D-8793-23F12FE9DC03}]

@="Sample Add-In"

注:本部分程序改变与组件相关的名称,注意该名称显示在附加模块管理器中。

[HKEY CLASSES ROOT\CLSID\{76165809-A31F-4A5D-8793-23F12FE9DC03}\Description]

@="This is the sample Add-In from the documentation."

注:为组件添加一个文本描述

[HKEY CLASSES ROOT\CLSID\{76165809-A31F-4A5D-8793-23F12FE9DC03}\Implemented

Categories\{39AD2B5C-7A29-11D6-8E0A-0010B541CAA8}]

[HKEY CLASSES ROOT\CLSID\{76165809-A31F-4A5D-8793-23F12FE9DC03}\Required Categories]

[HKEY CLASSES ROOT\CLSID\{76165809-A31F-4A5D-8793-23F12FE9DC03}\Required

Categories\{39AD2B5C-7A29-11D6-8E0A-0010B541CAA8}]

注:指定该ActiveX组件属于Inventor的插件范围内。

[HKEY CLASSES ROOT\CLSID\{76165809-A31F-4A5D-8793-23F12FE9DC03}\Settings]

"LoadOnStartUp"="1"

"Type"="Standard"

"SupportedSorftwareVersionGreaterThan"="7.."

注:指定插件的一些设置,如LoadOnStartUp为1则该插件会自动启动。

(2)将该文本文件存储,可以设定文件名为“AddInSample.txt”,然后将后缀txt改为reg。

4.执行注册文件以注册插件

双击文件“AddInSample.reg”以运行该文件,对打开如图15-25所示的信息确认对话框,单击【确定】按钮,则完成插件的注册,此时打开如图15-26所示的注册成功信息对话框。

978-7-111-44986-7-Part04-247.jpg

图15-25 信息确认对话框

978-7-111-44986-7-Part04-248.jpg

图15-26 注册成功信息对话框

15.3.3 插件的调试

完成了插件的创建和注册以后,需要对插件进行调试以确定创建的插件是否可用。运行Inventor,此时应该打开如图15-27所示的对话框。单击【确定】按钮后进入Inventor环境中,新建一个零件文件,并且进入到草图环境中,单击【二维草图面板】的标题栏中的向下的箭头,则打开如图15-28所示的菜单,选择其中的【AddIn Sample】选项,此时的工具面板如图15-29所示。单击【Draw Slot】按钮978-7-111-44986-7-Part04-249.jpg,绘制一个如图15-30所示的圆槽截面图形。单击【Toggle Slot State】可以使得【Draw Slot】按钮可用或者不可用。

978-7-111-44986-7-Part04-250.jpg

图15-27 运行Inventor打开对话框

978-7-111-44986-7-Part04-251.jpg

图15-28 单击标题栏箭头打开菜单

此时,选择Inventor标注工具栏上的【工具】菜单下的【附加模块】选项,打开【附加模块管理器】对话框,可以看到里面已经添加了“Sample Add-In”模块,如图15-31所示。

978-7-111-44986-7-Part04-252.jpg

图15-29 AddIn Sample工具面板

978-7-111-44986-7-Part04-253.jpg

图15-30 绘制圆槽截面

978-7-111-44986-7-Part04-254.jpg

图15-31 附加模块中添加“Sample Add-In”模块

如果无法出现以上的结果,则说明程序或者插件的注册存在问题。读者对照范例对自己的程序进行修改。在插件程序调试的过程中,需要注意以下几点:

(1)修改插件程序之前,最好先将它卸载。

(2)修改完成以后,应该重新进行编译、注册、以及添加附加的注册表信息,并重新启动Inventor。每编译一次程序,则注册表中的最高级别的注册信息将被删除,ActiveX的信息需要重新添加。此时就必须通过*.reg文件重新注册。

(3)只要VB工程没有改变,在只改变程序内容的情况下,DLL文件在注册表的ID是不变的,所以原来的*.reg文件仍然可用。

15.4 学徒服务器(Apprentice Server)

978-7-111-44986-7-Part04-255.jpg

本质上学徒服务器是一个ActiveX部件,它运行在使用它的客户端的程序进程中,必须通过API来访问它的功能。

15.4.1 学徒服务器简介

学徒服务器(Apprentice Server)可以理解为一个没有用户界面的袖珍Inventor,它是Inventor的一个子集。本质上学徒服务器是一个ActiveX部件,它运行在使用它的客户端的程序进程中,必须通过API来访问它的功能。比如编写了一个显示零件物理属性的VB程序,则学徒服务器将在该VB程序中运行。

学徒服务器的API是完整的Inventor API的一个子集,学徒服务器提供对文件参考、边界映象、几何特增、装配结构、渲染样式以及文档属性等的访问接口,其中对某些属性的访问是只读的,如装配部件的结构、渲染样式等,有些属性则为可读写,如文档属性等。

学徒服务器与Inventor的API之间存在很大的相同之处,毕竟前者是后者的一个子集,但是二者也存在不同之处,如下所述:

(1)二者最显著的区别在于Application对象和Document对象,Inventor和学徒服务器对于二者的描述方式是完全不同的。比如在学徒服务器中,称Application对象为ApprenticeServerComponent,它所支持的API就要比Inventor的Application对象支持的API少的多。在学徒服务器中没有Documents集的概念,学徒服务器只有单一的文档界面,它不支持多文档的同时打开,也就是说只能够同时打开一个文档。如果在打开一个文档的同时强行打开另外一个文档,则先前的文档会被关闭。

(2)使用学徒服务器的应用程序一般是要打开Inventor的文档,然后进行各种操作。如打开一个Inventor的装配部件,遍历其中的零部件,获取其物理属性等。当然,使用Inventor的API也可以达到同样的目的,但是就要必须首先运行Inventor,这就导致了更多的花费和时间。利用学徒服务器就没有这些问题,因为它不必运行Inventor就可以读取Inventor的文档。另外,学徒服务器是免费的,它作为Design Tracking的一部分提供,Design Tracking可以从Autodesk的网站上下载。

15.4.2 实例——部件模型树浏览器

本节介绍一个显示部件的装配树结构的程序范例,对于学徒服务器的一些编程语法我们结合程序做简要介绍。

该程序范例位于光盘的“\二次开发\AssemblyTree\”目录下

978-7-111-44986-7-Part04-256.jpg 在VB中包含学徒服务器类型库

在编写程序之前,首先要在VB中包含学徒服务器类型库。选择【Project】菜单下的【Reference】选项,则打开“Reference”对话框,选择其中的【Autodesk Inventor’s Apprentice Object Library】选项,如图15-32所示。

本节的范例程序是首先打开一个Inventor的部件文件,同时部件文件的装配模型树显示在程序界面中,如图15-33所示。

978-7-111-44986-7-Part04-257.jpg

图15-32 “Reference”对话框

978-7-111-44986-7-Part04-258.jpg 在VB下新建一个标准EXE文件

在界面上添加一个文本框(名称为txtFilename),一个按钮(名称为cmdBrowse),一个CommonDialog控件(名称为Common Dialog1),一个ImageList控件(名称为img List),还有一个TreeView控件(名称为treList),如图15-34所示。下面分别说明各个部分的程序代码。

978-7-111-44986-7-Part04-259.jpg 对程序用到的全局变量进行声明,代码如下: Option Explicit

Private oApprenticeApp As ApprenticeServerComponent

Private TreeBuilt As Boolean

978-7-111-44986-7-Part04-260.jpg

图15-33 部件文件的装配模型树

978-7-111-44986-7-Part04-261.jpg

图15-34 程序界面

978-7-111-44986-7-Part04-262.jpg 当单击按钮,则打开“打开”对话框以选择文件,单击对话框上的【确定】按钮后,则显示模型树。为按钮添加处理函数如下:

978-7-111-44986-7-Part04-263.jpg

978-7-111-44986-7-Part04-264.jpg

978-7-111-44986-7-Part04-265.jpg 绘制模型树的子函数BuildTree程序代码如下:

978-7-111-44986-7-Part04-266.jpg

978-7-111-44986-7-Part04-267.jpg 递归函数GetComponents的作用是遍历模型树中的元素,并且将其添加到TreeList中。GetComponents的程序代码如下:

978-7-111-44986-7-Part04-268.jpg

978-7-111-44986-7-Part04-269.jpg 添加其他部分代码,如下:

978-7-111-44986-7-Part04-270.jpg

978-7-111-44986-7-Part04-271.jpg

15.5 综合实例——文档特性访问

978-7-111-44986-7-Part04-272.jpg

在Inventor中,所有的文档都设置了一定的特性。选择菜单下的【iProperties】选项可以打开【特性】对话框,其中列出了文档的所有特性如模型实体的物理特性等。这些特性全部可以通过Inventor API来访问。本节通过一个实例来看一下如何使用API来访问文档的特性。

15.5.1 读取文档特性

该程序范例位于光盘中的“\二次开发\Properties”目录下。

该应用程序在VB环境下编写,运用学徒服务器来完成应用程序与Inventor文档之间的通信。运行该程序后,界面如图15-35所示,单击【浏览】按钮后,可以在打开的“打开”对话框中选择一个Inventor的文档,然后该文档的所有特性就会显示在下面的文本框中,如图15-36程序运行结果示意图所示。

978-7-111-44986-7-Part04-273.jpg

图15-35 程序运行界面

978-7-111-44986-7-Part04-274.jpg建立程序的用户界面

在Visual Basic中新建一个标准EXE工程,在当前窗体中,添加一个文本框(txtFilename),用来显示打开的文档的路径和文件名。添加三个按钮,分别命名为cmdBrowse,cmdSaveChanges和cmdCancel,其中cmdBrowse按钮用来打开一个Inventor文档,cmdCancel按钮用来退出程序,cmdSaveChanges按钮将在下一节讲述。添加一个ListBox(lstProperties),用来显示文档的特性。添加CommonDialog(CommonDialog1),用来显示“打开”对话框。以及添加说明性文本的Label,如图15-37所示。

978-7-111-44986-7-Part04-275.jpg变量声明

Option Explicit

´oApprenticeApp为一个学徒服务器对象,oDoc为学徒服务器文件,ChangeMade为布尔变量

Private oApprenticeApp As ApprenticeServerComponent

Private oDoc As ApprenticeServerDocument

Private ChangeMade As Boolean

978-7-111-44986-7-Part04-276.jpg

图15-36 程序运行结果示意图

978-7-111-44986-7-Part04-277.jpg

图15-37 程序的用户界面

978-7-111-44986-7-Part04-278.jpg编写【浏览】按钮的处理函数

单击浏览按钮时,打开“打开”对话框,当用户选择了一个Inventor文档时,该文档特性显示在ListBox中,所以【浏览】按钮功能主要有两个,即打开一个“打开”对话框和调用显示文档特性的子函数。程序代码如下:

978-7-111-44986-7-Part04-279.jpg

978-7-111-44986-7-Part04-280.jpg

978-7-111-44986-7-Part04-281.jpg 编写显示文档特性子函数ShowProperties

978-7-111-44986-7-Part04-282.jpg

978-7-111-44986-7-Part04-283.jpg

15.5.2 修改特性值

在本范例程序中,对于文档的一些可读写的属性,可用进行修改。当双击ListBox中的某属性时,会打开如图15-38所示的对话框,用户可以输入该属性的新值。输入完毕以后,单击【OK】按钮,此时【保存/退出】按钮变为可用,单击该按钮则输入的新值被保存到Inventor文档中。下面按照步骤讲解该功能的代码实现。

978-7-111-44986-7-Part04-284.jpg添加窗体

选择菜单【Project】下的【Add Form】选项,添加一个新的窗体,命名为picThumbnail。其中放置一个PictureBox控件,命名为picThumbnail,整个用户界面如图15-39所示。

978-7-111-44986-7-Part04-285.jpg编写双击ListBox中的特性条目时的处理函数

当双击ListBox中的特性条目时,打开对话框,用户可以修改某个特性值,如果该特性只读的话,则打开如图15-40所示的对话框,提示该特性不可以修改。代码如下:

978-7-111-44986-7-Part04-286.jpg

图15-38 双击某属性时打开对话框

978-7-111-44986-7-Part04-287.jpg

图15-39 程序的用户界面

978-7-111-44986-7-Part04-288.jpg

图15-40 特性为只读时打开对话框

978-7-111-44986-7-Part04-289.jpg

978-7-111-44986-7-Part04-290.jpg

如果判断特性取值输入字符串类型,则编写Case vbString下的处理程序,如下:

978-7-111-44986-7-Part04-291.jpg

如果判断特性取值输入布尔类型,则编写CasevbBooleab下的处理程序;如果为日期类型,则需要编写Case vbDate下的处理程序,等,代码不再一一列出,读者可以参考光盘中所附的源程序代码。

将新的值保存到所修改的特性中的代码如下:

978-7-111-44986-7-Part04-292.jpg

978-7-111-44986-7-Part04-293.jpg 完成其他部分的代码以形成完成的程序

其他部分的代码如下,具体含义可以参照其中的注释:

978-7-111-44986-7-Part04-294.jpg