胡小林,於黄萍
(1. 中国船舶及海洋工程设计研究院,上海 200011;2. 沪东中华造船(集团)有限公司,上海 200129)
AutoCAD .NET API在管系原理图设绘中的应用
胡小林1,於黄萍2
(1. 中国船舶及海洋工程设计研究院,上海 200011;2. 沪东中华造船(集团)有限公司,上海 200129)
船舶管系原理图设绘过程中涉及诸多操作,如管线绘制、阀件附件及管子的编号、信息录入及统计、表单生成、图块操作、背景图制作等。使用.NET API开发出与上述操作相应的辅助设计功能,以及为Auto CAD文字操作开发出的文本编辑功能,由此大大减少管系原理图设绘过程中的重复操作,节约大量无技能操作的时间,提高设计效率。详细阐述了Auto CAD二次开发的主流工具VisualLISP、VBA、ObjectARX、.NET API及其各自的特点,演示了不同开发工具的代码对比,介绍了Auto CAD最新的二次开发工具.NET API的优势及采用.NET API代码的长远适用性。减少了设计人员的重复类操作,提高设计效率。
Auto CAD;.NET API;二次开发;管系原理图;设绘
目前,船舶行业的管系原理图的设计工具基本上都是选择AutoCAD软件。设计过程中既有体现设计人员设计理念的操作,也有分类、统计等操作,此外还有文字排版操作。这些操作有相当一部分是重复或类似的操作,占用了设计人员大量的时间。越来越多的设计人员希望能从大量重复或类似的操作中解放出来,从而可以有更多的时间去了解更多的前沿知识,优化设计理念,提高设计水平。
Autodesk公司为AutoCAD提供了好几种编程接口,设计人员可以根据自己的需求和编程能力,选择适合自己的编程语言,对AutoCAD进行二次开发,从而利用二次开发的功能完成设计过程中大量的重复或类似操作。
1.1VisualLISP
VisuaILISP语言是具备面向对象功能的编程语言,它除了具备为扩展和自定义AutoCAD功能而设计的AutoLISP的功能外,还支持ActiveX对象模型。开发者用VisuaILISP开发程序能够使用ActiveX对象及其事件进行更深层次的开发。
1.2VBA
VBA(Visual Basic for Applications)与AutoCAD中强大的ActiveX自动化对象模型的结合,开辟了一种新的AutoCAD定制架构,为开发人员访问AutoCAD图形库中对象开辟了新途径。
1.3ObjectARX
ObjectARX是采用面向对象编程原理,以C++为编程语言的ARX(AutoCAD Run-Time Extension),即AutoCAD运行时扩展编程语言。ObjectARX应用程序实质上是一个Windows动态链接库(DLL)文件,其与AutoCAD运行在同一内存地址上,并能直接利用AutoCAO核心数据结构和代码,减少了系统资源占用量,提高了程序的运行速度。
1.4.NET API
自AutoCAD2006版开始,Autodesk公司为AutoCAD增加了一种新的开发方式,即.NET API。.NET API提供开发人员大量的托管封装类,便于开发人员使用任何.NET支持的程序设计语言编程访问程序集或者开放类库来操作AutoCAD和图形文件。通过.NET API开发AutoCAD的优点:
1) 有更多的编程环境可以编程访问 AutoCAD图形。在.NET API出现之前,开发人员只限于使用ActiveX® Automation 和支持COM的语言、AutoLISP®和 用C++的ObjectARX;
2) 通过使用应用程序本地化的.NET API或开放的ActiveX/COM库与其他Windows®应用程序(例如Microsoft Excel和Word)结合比以前更容易;
3) .NET框架是为32位及64位操作系统而设计,而VBA只为32位操作系统设计;4) 与那些传统编程语言相比,如 C++,.NET 具有更低的学习要求来访问高级接口。鉴于AutoCAD已经逐渐趋于不再支持VBA,且64位操作系统也逐渐成为主流操作系统,该次开发采用.NET API[1]。
为了方便更进一步了解.NET API,下面以绘制一条直线作为例子,以不同的语言来演示它们之间的区别。
2.1ObjectARX
2.2VBA
2.3Visual LISP
2.4VB .NET
在船舶管系原理图设绘后期,最重要的工作就是对原理图中的阀件和附件进行明细统计。每一份原理图一般都附有一份阀件、附件和管路的明细表,这是一份相当繁琐的工作,好在AutoCAD本身提供了属性提取功能,目前通用的做法是将阀件、附件和管路做成属性块,设绘过程中对属性块中各属性的值进行定义,最后进行属性提取,生成明细表。
为了实现上述的属性提取,首先要在AutoCAD中进行属性块的定义。阀件、附件的属性块应包括的属性主要有标记、通径、材料、标准、证书等,管路的属性块应包括的属性主要有标记、通径、外径、壁厚、材料、证书等。属性块的块名可以自己定义命名规则,一般阀件的块名用Vxxx(xxx为001到999的数字)表示,附件的块名用Fxxx(xxx为001到999的数字)表示,管路的属性块只有一种,命名就比较简单,块名用P01或P001等均可,只要方便程序读取且不与其他块名冲突即可。
4.1绘制管线
在船舶管系原理图设绘时,首先要绘制管线,管线中的介质的流向有单向也有双向。管线绘制功能有:绘制单箭线、绘制双箭线、单双箭线转换。为了满足在外来图纸上的更改,程序集还可实现直线转为单箭线或双箭线的功能。
绘制箭线命令执行时,命令行会出现“是画单箭线还是双箭线[单箭线(S)/双箭线(D)]<单箭线(S)> [S/D]<S>:”的提示,同时屏幕绘图区会弹出相应的快捷菜单。既可在命令行输入,也可通过鼠标在快捷菜单选择您要实现的功能。
单箭线转双箭线时程序可自动转换,双箭线转单箭线时需要用户指定箭线方向。
直线转箭线时,命令行会出现“是改单箭线还是双箭线[单箭线(S)/双箭线(D)]<单箭线(S)> [S/D] <S>:”的提示,同时屏幕绘图区会弹出相应的快捷菜单。同理,转双箭线时程序可自动转换,单箭线时需要用户指定箭线方向。
4.2插入块参照
在船舶管系原理图设绘过程中,一个重要的操作就是插入各种系统所需的阀件和附件,该程序提供阀件附件外部属性块参照的插入功能。命令执行后程序弹出对话框,选择所需的阀件或附件即可直接插入。
4.3背景图颜色更改
在绘制原理图过程中,有时候会需要将其他图纸作为背景,而其他图纸中往往会有许多图块以及嵌套图块,这些图块中图元的颜色往往各种各样,更改图块的颜色往往无法改变图元的颜色,逐个图块更改费时费力,在图元数量巨大时甚至会造成AutoCAD内存不足。该程序提供的功能可调出“颜色选择”对话框按用户指定的颜色作为背景色更改所有图块中的所有图元。
4.4阀件附件属性匹配
一份原理图中某些阀件、附件的某些属性有时是相同的,比如同一管路上的阀件其材料、通径等属性是一样的,但逐个输入繁琐且耗时。属性匹配功能与AutoCAD及Office的格式刷类似,可批量更改阀件附件的属性(见图1~3)。
4.5管子属性匹配
功能与“4.4”类似(见图2)。
4.6更改属性值宽度因子
由于图幅关系,有时候需要将一批阀件、附件或管路的属性值的宽度因子进行调整,以使各图元之间不互相影响。该功能可批量将指定的属性值的宽度因子调整为用户指定的值。
4.7显示指定的阀件附件管子
原理图在绘制过程中经常会更改管路及阀件附件通径及材料,完成后有时会出现漏改的情况,为了检查是否有遗漏,该程序提供了检查功能。在对话框中输入用户的要求,图形中就会高亮显示符合条件的图块(见图3)。
图1 阀件属性匹配
图2 管子属性匹配
图3 显示
4.8阀件附件编号
按对话框中的要求输入,程序会按用户要求进行阀件附件编号,同时,如果用户需要,还可以将阀件附件属性全部导出到一个Excel文件中(见图4)。
图4 阀件附件编号
4.9管子编号
同“4.8”(见图5)。
图5 管子编号
4.10 导入Excel表
如果用户更改了Excel文件,通过该功能可将Excel内容同步到AutoCAD中。
4.11 生成阀件附件清单
一份完整的原理图都配有一份包含图中所有阀件附件的清单,在图中选择插入点,程序可自动生成完整的阀件附件清单。
4.12生成管材清单
功能同4.11。
4.13 生成阀件附件统计清单
有时船东要求原理图的阀件附件清单应为统计形式的,比如:FTV001~009,A16015 CB/T309-2008,直通截止阀,通径15,青铜,数量9;……。程序也可同时满足此要求。
4.14 标记旋转
不管是阀件附件标记还是管子标记,在实际绘图过程中都经常需要调整其文字方向,属性块文字方向的调整与宽度因子调整类似,为了快速地调整,程序提供了批量快速的操作。
4.15 管子参数计算
在设绘过程中,经常会碰到流量、内径及流速的计算,程序提供了这三者的切换计算界面,方便用户快速获得想要的结果(见图6)。
4.16通径公制英制互换
通常原理图中的阀件附件清单中的通径是公制的,但现在有些船东要求通径用英制。如果从零开始绘制是没有什么问题的,但有些图纸可以部分借用以缩短设计周期,如果单位制要求不一致就会有一定的修改量。该功能可以让用户在清单中自由切换公制和英制。
4.17 插入符号表
原理图中有着许多的阀件附件符号,代表着不同的阀件附件,有些船东要求每份原理图中应该嵌有一份包含图中所有阀件附件符号的符号表。该功能可自行读取所有的阀件附件符号并列表。
首先是要求用户指定符号表的插入点,然后要求用户选择符号表的说明文字是中文、英文还是中英文,用户完成后程序便按要求列出符号表(见图7)。
4.18 属性块内容转换
在设计过程中,由于客户要求不一样,属性块包含的属性内容就不一样,比如,通常块包含“MARK”、“STANDARD”、“DIAMETER”、“MATERIAL”等,但有的用户要求的属性内容为“ITEMNO”、“STD”、“NOMDIA”、“MAT”等。属性内容不一致,程序便无法使用。为了解决这个矛盾,程序提供了属性转换功能,使用时切换为程序可以使用的格式,客户使用时再切换回去即可(见图8)。
图6 管子参数计算
图7 符号表
图8 属性转换
原理图绘制完成后,还需要写关于系统的相关说明,程序还提供了关于说明操作的一些辅助功能,使AutoCAD具有类似Word的排版功能。尽管AutoCAD提供了多行文字功能,但许多设计人员仍旧习惯于单行文字,这些文字排版功能作用就凸显了出来。
同时,这些辅助的功能也可用于AutoCAD其他类型的图纸文本编辑,这些功能既方便操作,又节约时间,而且图面整洁美观。
5.1大小写互换
说明中的英文多数时候是要求大写,也有用小写的。用户无论是复制其他内容还是自行输入内容,无需在意其是大写还是小写,输入完成后点击需要的大小写功能即可。
5.2文字对齐
文字对齐包括文字左对齐和文字上下对齐。
5.3文字等间距
多行的说明文字输入完成后,执行该命令可按用户要求设置各行的文字间距。
5.4项目编号
项目编号包括纯数字编号和说明内容编号。原理图的说明编号按设计人员的习惯不同而不同,有的喜欢将数字序号独立出来,有的喜欢与说明放在一起。执行该命令可按用户要求编序号,不用再单独输入或更改。
通过AutoCAD .NET API针对船舶管系原理图设绘中的操作进行的二次开发,大大减少了重复或类似的操作,提高了设计人员的设计效率。当然,程序也可按照用户的需求进行定制,一方面可对目前的功能进行优化,另一方面也可赋予程序更多的功能,最大程度地为设计人员服务。
[1] Autodesk官网.Managed .NET Developer's Guide (.NET), http://help.autodesk.com/view/ACD/2015/ENU/? guid= GUID-C3F3C736-40CF-44A0-9210-55F6A939B6F2
[2] 王文波,等. AutoCAD 2010二次开发实例教程(Object ARX)[M]. 北京:机械工业出版社,2008.
[3] 曾洪飞,等. AutoCAD VBA&VB.NET开发基础与实例教程[M]. 北京:中国电力出版社,2013.
[4] Marion Cottingham[美]. AutoCAD VBA从入门到精通[M]. 孔祥丰,等译. 北京:电子工业出版社,2001.
[5] 周乐来,等. AutoCAD 2008: Visual LISP二次开发入门到精通[M]. 北京:机械工业出版社,2008.
[6] 李冠亿. 深入浅出AutoCAD .NET二次开发[M]. 北京:中国建筑工业出版社,2012.
Application of AutoCAD.NET API in Piping Diagram Preparation
HU Xiao-lin1, YU Huang-ping2
(1. Marine Design& Research Institute of China, Shanghai 200011;2. Hudong-Zhonghua Shipbuilding (Group) Co., Ltd., Shanghai 200129)
In the course of ship piping diagram preparation a number of operations will be involved such as pipeline rendering, valve fittings and pipe numbering, information entering and statistical analysis, form generation, segment operation, background drawing and so on. Design-aiding functions corresponding to the above operations have been developed by means of .NET API, as well as the text editor function developed for AutoCAD text operation, which will significantly reduce repetitive work during the piping diagram preparation process, saving a lot time from the unskilled operation and increasing design efficiency. This paper elaborates in detail the main stream tools for secondary development of AutoCAD such as VisualLISP, VBA, Object ARX, .NET API and their respective characteristics;demonstrates the code comparison among different development tools; introduces the advantages of .NET API, the latest secondary development tool of AutoCAD, as well as its long-term applicability, which can reduce repetitive work of designers and improve design efficiency.
AutoCAD; .NET API; secondary development; piping diagram; preparation
U662.9
A
2095-4069 (2016) 01-0045-06
10.14056/j.cnki.naoe.2016.01.009
2015-03-23
胡小林,男,高级工程师,工程硕士,1977年生。1999年毕业于武汉理工大学船舶动力装置专业,现主要从事船舶轮机设计工作。