屈华山,邹俊磊,盛亮亮,张文龙
(航空工业洪都,江西 南昌,330024)
AutoCAD 是Autodesk 公司发行的自动计算机辅助设计软件,在现代飞机设计中有着广泛的应用,它具有完善的图形绘制功能、精确的图形捕捉功能、强大的图形编辑功能和二次开发功能。AutoCAD 提供了很多功能,简化了飞机设计中的很多工作。但飞机设计过程的工作需求多种多样,AutoCAD 没有提供相应的功能,提供的部分功能不能很好地满足相应工作需求。本文结合飞机设计中遇到的实际问题,利用AutoCAD 提供的二次开发工具AutoLISP 和Visual LISP 编制程序扩展AutoCAD 功能来解决该问题。
为方便对AutoCAD 进行二次开发,AutoCAD 提供了多种二次开发工具,如AutoLISP、Visual LISP 和VBA 等。AutoLISP 是 Autodesk 公司为便于对 Auto-CAD 二次开发推出的二次开发工具, 随后Autodesk公司又推出了Visual LISP。Visual LISP 是对AutoLISP的补充和升级。AutoLISP 和Visual LISP 是扩展Auto CAD 最好、最直接的程序设计语言,它可以加快重复性绘图工作的步伐,也可以简化一系列复杂操作,广受AutoCAD 使用者和二次开发人员好评;AutoLISP和Visual LISP 易学易用,即使没有程序开发经历的人员,在简单学习过后也能写出实用的程序。AutoLISP和Visual LISP 具有良好的向下兼容性,在低版本Au toCAD 上编制出的程序能不作任何修改即可在高版本AutoCAD 上运行。
飞机设计是一个反复迭代、优化的过程,该过程中会对飞机结构参数进行多次调整。飞机结构剖面的形心惯性矩是结构设计迭代和优化需要用到的参数。图1 为飞机结构一个典型剖面,由上壁板、梁和下壁板组成。根据要求,需要截取上壁板和下壁板特定的宽度:以梁的左、右端面为基准,梁腹板厚度10 倍距离的宽度,截取上壁板和下壁板(见图2),提取由截取后剖面的形心惯性矩。 AutoCAD 提供了提取剖面形心惯性矩的功能,具体操作步骤如下:
图1 飞机结构一个典型剖面
1) 在梁的左、右端面做出辅助直线,梁腹板厚度乘以10 的距离来偏移辅助直线;
2) 根据壁板边线和偏移的直线,通过菜单“绘图”→“边界”命令生成闭合曲线;
3) 通过菜单“绘图”→“面域”命令将闭合曲线围成的区域生成面域;
4) 通过菜单“工具”→“查询”→“面域/质量特性”得到剖面的形心坐标;
5) 命令行中输入“UCS”命令将世界坐标原点移动到剖面形心坐标处;
6) 再次通过菜单“工具”→“查询”→“面域/质量特性”得到剖面的惯性矩,即为剖面的形心惯性矩。
图2 剖面的形心惯性矩的值见图3。
图2 需提取形心惯性矩的剖面尺寸
图3 剖面的形心惯性矩值
该方法是提取剖面形心惯性矩的传统方法,步骤虽然繁琐,在剖面数量较少时也是实用的好方法。但在剖面数量较多时,繁琐的操作步骤使得该方法不再实用和好用。同时,飞机设计中需要进行多次迭代和优化,结构参数的部分改变就会导致前次得到的数据不再适用于本次设计。 所以, 找到一种方法简化AutoCAD 操作,让设计者从提取剖面形心惯性矩这类数量多、操作繁琐的工作中解放出来,是十分必要的。
在AutoCAD 中,剖面多种多样。 每个剖面中,有各种各样的图形对象,如点/Point、直线/Line、轻多线段/LWPolyline、文本/Text、尺寸/Dimension 等,识别了剖面中的不同图形对象是解决问题的基础。
AutoCAD 中,每个图形对象如 Point、Line、Text和Dimension 等都有共有的和各自专属的属性列表,其属性以组码进行有规律的组织。图形对象的共有组码部分内容见表1,LWPolyline 组码的部分内容见表2。程序中可通过组码来识别AutoCAD 中的图形对象。
表1 常用图元组码中部分内容
表2 LWPolyline 属性组码中部分内容
剖面形心惯性矩提取的传统方法之所以在剖面数量较多时可用却不实用,是因为该方法步骤繁琐,只需要编制程序来自动执行操作,就解决了步骤繁琐的问题。这就是我们解决该问题的方案思路。
1) 在图1 剖面中梁的左、右端面处进行手动操作,作出辅助直线;
2) 在梁腹板附近,上、下壁板剖面边线间进行手动操作,作出一个点;
3) 编制程序,利用图形对象的组码来识别剖面中的直线、点、轻多线段和尺寸。 梁和上、下壁剖面的边线是LWPolyline。
4) 编制程序,根据步骤3 得到的图形对象偏移直线,由点位置生成闭合 LWPolyline,并将闭合LWPolyline 生成面域/Region,由 Region 结合公式(1)、公式(2)和公式(3)得到剖面的形心惯性矩。
3.3.1 多个小剖面组成的剖面的形心坐标
说明:(xiC,yiC)为小剖面的形心坐标,Ai为对应的小剖面面积,(xC,yC)为剖面的形心坐标。
3.3.2 多个小剖面组成的剖面的惯性矩
说明:Iix和 Iiy是小剖面对 x 轴和 y 轴的惯性矩,Ix和 Iy是剖面对x 轴和y 轴的惯性矩。
3.3.3 平等移轴公式
同一平面对于平行的两对坐标系的惯性矩并不相同,当其中一对坐标原点位于平面形心时,它们之间有公式(3)表示的关系:
说明:(b,a)为平面的形心坐标。
有了上述方案思路,程序的编制就有了依据。
4.1.1 剖面中图形对象的选择
4.1.2 闭合LWPolyline 的生成
4.1.3 由闭合 LWPolyline 生成 Region 并提取Region 的属性
4.1.4 剖面形心惯性矩的求值
AutoLISP 和Visual LISP 程序编制完成后,需要在AutoCAD 中加载运行,加载运行方式有三种:
1) 在命令行中直接输入(Load "主程序名");
2) 使用 appload 命令加载;
3) 将程序挂载于菜单中,执行自动加载及执行。
在AutoCAD 等待编制好的程序后,其运行结果见图4,与图3 中显示的结果一致。
图4 程序求得剖面的形心惯性矩的值
AutoLISP 和 Visual LISP 是 扩展 AutoCAD 功能的有效方法,是方便实用的解决问题的手段。本文只用到了AutoLISP 和Visual LISP 功能的很小的一个方面,其更多和更强大的功能有待在使用中进一步学习。 飞机设计工作中广泛的需求有助于进一步发掘AutoLISP 和Visual LISP 应用方向,如将程序生成的结果保存至另一个AutoCAD 文件中,将数据结果按预定的规则保存到Excel 表格中,以便对数据进行下一步处理,等等。