CAD格式施工图设计图纸无损审查研究

发表时间:2020/11/5   来源:《基层建设》2020年第18期   作者:栾亚娟1 王琳2 徐华明3
[导读] 摘要:设计单位报审CAD格式施工图设计图纸时,会存在设计单位和审图单位间显示不一的问题,主要表现在特殊字体(如钢筋符号)、三方插件(如天正、探索者)、外部参照等,导致审查专家无法进行图纸审查,因此研究开发一套CAD格式施工图无损审查插件是十分必要的。
        1.泰兴市建设工程施工图审查服务中心  江苏泰兴  225400 2.泰兴市行政审批局  江苏泰兴  225400 3.泰州华微信息技术有限公司  江苏泰州  225300
        摘要:设计单位报审CAD格式施工图设计图纸时,会存在设计单位和审图单位间显示不一的问题,主要表现在特殊字体(如钢筋符号)、三方插件(如天正、探索者)、外部参照等,导致审查专家无法进行图纸审查,因此研究开发一套CAD格式施工图无损审查插件是十分必要的。
        关键词:无损审查  ObjectARX  AutoCAD  C++
        Research on nondestructive examination of CAD format construction drawings
        Luan Ya-juan   Wang Lin   Xu Hua-ming
        Abstract:When the design unit applies for approval of CAD format construction drawing design drawings,there will be different display between the design unit and the drawing review unit,which is mainly manifested in the special font(such as reinforcement symbol),tripartite plug-in(such as Tianzheng,explorer),external reference,etc.,which makes the review experts unable to carry out the drawing review.Therefore,it is necessary to develop a set of CAD format construction drawing nondestructive review plug-in Yes.
        Keywords:Non destructive examination  ObjectARX  AutoCAD  C++
        0 引言
        调查发现,绝大部分设计单位在设计工程图纸时,都是在AutoCAD软件基础上,安装使用第三方插件,如天正、探索者等,来提高施工图设计的高效性和便捷性。
        1 基础理论研究
        1.1 三方插件
        众所周知,AutoCAD是Autodesk公司推出一款工业设计软件,在Windows中应用最为广泛、使用人数最多。但它只给我们提供了基础的CAD功能,如果想完成复杂的功能,则需要开发相应功能的插件,正如使用广泛的天正、探索者等。
        我们知道设计单位安装有这些插件,是可以看到相关插件设计的自定义实体,但审图机构不知道不可能把所有插件完全安装,所以,我们解决问题的出发点,肯定就放在设计单位这头,有了思路,通过技术手段,将这些自定义实体做打散操作,三方插件的问题就迎刃而解。
        1.2 外部参照
        讲到三方插件,相关联的外部参照,也有类似性。所谓外部参照,也就是一些定义块,通过外部文件进行参照进来,实现一些部件在设计时可多次再用。我们通过技术手段,将这些实体块进行合并,使用之脱离外部参照的文件,这样就能实现单文件报审,不会出现设计单位报审图纸时,由于缺少外部参照文件,或参照文件路径不对,导致的显示缺失。
        1.3 特殊字体
        谈到特殊字体,在建筑、结构、给排水、电气、暖通等专业设计里,尤其结构专业相对特殊,结构专业使用的钢筋符号字体,会存在字体自定义的现象,而且较普遍。讲得简单些,就是不同人员设计图纸时,使用的字体文件相同,但表达出来的符号各异,这带来了些麻烦。我们考虑有两种方案:一是打散文字符号,进行矢量化操作;二是采用字体校验包含,将字体文件内嵌到图纸文件,审图专家查看图纸时,对现有字库进行遍历校验,如出现与些字体及内容一致时,直接使用,如出现偏差时,则将内嵌字体释放使用。
        2 开发工具研究
        2.1 开发工具介绍
        目前主要的开发工具有:AutoLISP、VisualLISP、VBA、COM外部接口、ObjectARX、ObjectARX.NET等。
        AutoLISP和Visual LISP
        AutoLISP是对AutoCAD进行二次开发最早的API,它是人工智能语言LISP的一个分支。主要用来自动完成重复性任务,进行客户化开发和编制AutoCAD菜单以及通过简单机制为AutoCAD扩充命令,能够有机的和AutoCAD结合在一起,它语法简单容易上手,到仍有很多的活跃开发用户。但是由于它是解释型API而不是面向对象的编程语言,使它的效率低下,由于执行的是源代码文件所以导致保密性能不高很难用它开发大型的应用程序。
        在AutoCAD R14.01中,Autodesk公司首次提供了一种新的LISP编程工具:Visual LISP,它是一种面向对象的开发环境,是AutoLISP的扩展和延伸。
        在AutoCAD2000中,Visual LISP被集成到了AutoCAD环境之中。Visual LISP是一种半编译的API。由于可以被编译所以大大提高了运行效率和安全性。同时它又与AutoLISP完全兼容,又提供了AutoLISP的所有功能,同时它又能够访问AutoCAD的多文档环境,以及对COM/ActiveX技术的支持和反应器等。VisualLISP IDE同时提供了完整的编辑环境使得用户可以对代码进行调试跟踪、源码语法检查、括号匹配、函数提示等工具,方便创建和调试LISP程序。由于VLISP集成于AutoCAD内部,而且随AutoCAD升级而升级,所以兼容性比较好,这也是LISP深受广大编程爱好者使用的原因。
        但在进行大数据的计算处理方面,Visual LISP不能很好的胜任这项任务,这使得开发大型数据运算的程序仍有一定困难。
        ADS、ARX和ObjectARX
        ADS(AutoCAD Development System)是Autodesk公司最早在AutoCAD R11中提供的C语言编程环境。ADS除可使用标准C的函数外,又增加了一组专用于对AutoCAD进行操作的函数。由于ADS程序具有C语言的一切优点,因而它曾是开发AutoCAD R11、AutoCAD R12应用程序的主要工具。用C写就的ADS程序,可在所有支持AutoCAD平台上进行源代码移植。只需使用普通的C语言编译器就可以编译生成ADS模块,与ADS库和标准C库链接后生成可执行文件,装入AutoCAD后即可运行。但是ADS和AutoLISP一样,内在结构不是面向对象的,用AutoLISP解释器加载和调用,利用IPC与AutoCAD通讯。
        ARX(AutoCAD Runtime eXtension)是在ADS基础上发展起来的一种面向对象的C语言编程环境。由ADS到ARX的变迁就像C到C++的转变。ARX与老式的ADS及AutoLISP的最大差异在于ARX应用程序是动态链接库,共享AutoCAD地址空间,可以对AutoCAD进行直接函数调用,避免了IPC的系统开销和由此引起的性能下降。因此那些频繁与AutoCAD通讯的应用程序在ARX环境下的运行效率明显优于老式ADS或AutoLISP环境。
        ARX最早是在AutoCAD R13中提供的,但在AutoCAD R14中,ARX就被ObjectARX所代替。同时原来的ADS库函数全部被包含在ObjectARX中,将ADS函数合为单一的库就形成了ADSRX。ADSRX库已纳入到AutoCAD的总体结构中,因此它与其他ObjectARX库一样,能共享AutoCAD地址空间。


        到了新世纪,传统意义上的ADS开发环境的概念已经不复存在,且ADSRX已成为了ObjectARX的一个子集,因此,ObjectARX是包含了ADS、ARX和ADSRX的一种综合的C/C++开发环境。ObjectARX的最大特点是引入了面向对象的编程机制,用户可以根据规则定制实体也是ObjectARX的一大亮点。
        利用微软的ActiveX技术
        自AutoCAD R14起,提供了ActiveX Automation形式的API。ActiveX技术可将各种二进制应用程序组件集成一体。它可采用多种编程方式例如:VBA构造一种或多种与应用程序独立的宏编程。提供Automation服务的软件组件通过标准接口能够对外开放它的特定功能。
        正是由于AutoCAD拥有ActiveX接口,因此,用户可以容易的用各种AciveX编程语言来定制开发AutoCAD。
        AutoCAD包含的VBA能在进程内访问AutoCAD的对象模型。亦可以通过独立的VB进行编程,但是VB与ActiveX的接口需要通过IPC驱动AutoCAD,所以作为ActiveX控件的VBA比VB具有明显的性能优势。
        特别要强调的是,ActiveX与AutoCAD交互操作很慢,若需要在外部程序中一边运算一边交互操作的重复迭代,将耗费大量时间,如同死机值得注意的是,从AutoCAD 2010版本开始,VBA不在随AutoCAD一起安装。如果想要在机器中运行VBA程序必须登录下面的网址进行下载方可运行。
        利用ObjectARX.NET进行开发
        在AutoCAD 2005 版本中Autodesk公司推出了用.NET开发AutoCAD的编程接口。它的实质是通过Managed C++/CLR技术对VC++的ObjectARX进行封装。到AutoCAD 2015十年来Autodesk公司已经完成对大部分ObjectARX编程接口的封装。这种编程方式难度适中,能够访问大部分的编程接口(除了自定义实体);但是,由于AutoCAD的.NET接口是在不断的完善过程中导致了在低版本上不能够使用新增的功能。
        2.2 开发工具比较
        比较各种开发AutoCAD的编程接口,需要从以下几个方面进行考虑:
        1)速度:直接与AutoCAD通讯的API比利用IPC进行通讯的API在速度方面要快。编译型的API比解释型的API速度要快。因此,ObjectARX的速度最快,COM接口开发的外部程序速度最慢。
        2)稳定性:运行稳定性反映出因程序可能出现的严重错误所导致的危险。采用LISP开发的程序一旦失败或崩溃,并不危害AutoCAD自身进程;而由于ObjectARX应用程序共享AutoCAD的地址空间,所以其一旦运行失败,AutoCAD进程随之崩溃。
        3)性能:ObjectARX的应用程序能在运行期间实时扩展AutoCAD,共享AutoCAD地址空间,甚至为所欲为,因此性能无比强大,以至于AutoCAD自身的许多功能模块都是由ObjectARX进行制作。相反,解释型API如AutoLISP仅被限用于使用静态的AutoCAD命令集提供结构化函数库
        4)技术难度:AutoLISP和VBA均是解释型语言,方便易学,开发周期短。许多程序员或一些技术人员都在使用它们。相比之下ObjectARX依赖于C++语言,它必须经过严格控制的编译、链接才能生成应用程序。这就需要编程人员需要积累经验,这样才能去发现问题从而解决问题。
        5)保密性:编译型程序要比解释型保密性要好,保护了开发人员的著作权,解释型语言往往保密性能不高。导致用户误操作源码造成不应有的错误。
        另外,虽然.NET开发出来的DLL文件是编译后的程序,但是由于其程序可以反编译回源码造成了代码的保密性差,也是不容忽视的问题。
        相比之下,综合各方面考虑,使用ObjectARX C++来开发,是最佳考虑。
        3 实现方法研究
        3.1 掌握C++
        C++ 是一种中级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。
        学习掌握C++,是开发解决特殊字体(如钢筋符号)、三方插件(如天正、探索者)、外部参照等问题,实现无损查看的基础。
        3.2 掌握ObjectARX C++
        在掌握C++编程语言后,再结合特殊字体(如钢筋符号)、三方插件(如天正、探索者)、外部参照等问题所在,针对性的学习ObjectARX C++。
        主要学习研究自定义实体的打散、参照块的合并,及字体的嵌入和加载等。
        4 结束语
        本文着重分析研究了如何选择AutoCAD二次开发工具,及通过何种方法来实现CAD格式图纸的无损查看,为实现无损查看插件开发,提供可靠的理论基础。按照本文内容,去研究开发一套插件工具,解决图纸不能无损查看问题,对设计单位和审图机构间实现原始格式图纸交互的意义十分重大。
        软件及信息安全技术标准参照:
        《计算机软件开发规范》(GB8566-88)
        《计算机软件产品开发文件编制指南》(GB8567-88)
        《计算机软件需求说明编制指南》(GB9385-88)
        《计算机软件测试文件编制规范》(GB9386-88)
        GB/T 18336:2001《信息技术 安全技术 信息技术安全性评估准则》
        ISO/IEC 27001:2005 信息安全管理系统标准
        ISO/IEC 27002:2005(ISO/IEC 17799)信息安全管理实用规范
        ISO/IEC 27003:2007 信息安全管理系统实施指南
        ISO/IEC 13335 信息和通信技术安全的管理
        参考文献:
        [1]C++ Primer,(美)Stanley B.Lippman,Josee Lajoie,Barbara E.Moo 著,电子工业出版社,2013.
        [2]C++标准库,(德)Nicolai M.Josuttis 著,电子工业出版社,2015.
        [3]ObjectARX实用指南,(中)宋延杭 编著,人民邮电出版社,1999.
        [4]AutoCAD ObjectARX(VC)开发基础与实例教程,(中)张帆,朱文俊 编著,中国电力出版社,2014.
        【作者简介】 1.栾亚娟(1979-11-29),女,江苏泰兴人,泰兴市建设工程施工图审查服务中心 工程师,研究方向为施工图审查信息系统管理;2.王琳(1982-06-22),女,江苏泰兴人,泰兴市行政审批局,工程师,研究方向为CAD格式施工图无损审查;3.徐华明(1979-08-09),男,江苏泰州人,泰州华微信息技术有限公司,信息安全工程师,研究方向为信息技术及安全。
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: