APP下载

基于C#的AutoCAD二次开发技术在工程物探制图中的应用

2024-11-05林孝城

科技创新与应用 2024年30期

摘 要:在工程物探领域,大量的成果图件主要采用AutoCAD软件人工制图形成,该项工作不仅重复繁琐,效率低下,而且容易出错,严重影响物探制图精度。为此,该文采用C#高级程序设计语言对AutoCAD进行二次开发,通过编程将物探制图过程中大量可自动执行的、复杂的且易出错的操作进行有效封装,开发适用于工程物探制图领域的“工程物探制图”程序集。工程实践表明,利用基于C#的AutoCAD二次开发技术开发的程序集,可高效、准确地绘制物探专题图件,极大地提高工程物探制图的效率,并降低出错的概率。

关键词:C#;AutoCAD;二次开发;.NET;物探;制图

中图分类号:TP317.3 文献标志码:A 文章编号:2095-2945(2024)30-0160-04

Abstract: In the field of engineering geophysical exploration, a large number of achievement maps are mainly formed manually by using AutoCAD software. This work is not only repetitive and cumbersome, inefficient, but also prone to errors, which seriously affects the accuracy of geophysical mapping. To this end, this paper uses C# high-level programming language to secondary develop AutoCAD. Through programming, a large number of automatically executed, complex and error-prone operations in the geophysical mapping process are effectively encapsulated, and a program set suitable for the field of engineering geophysical mapping is developed. "Engineering geophysical mapping" program set is developed. Engineering practice has shown that the program set developed using the C#-based AutoCAD secondary development technology can efficiently and accurately draw geophysical thematic maps, greatly improve the efficiency of engineering geophysical mapping, and reduce the probability of errors.

Keywords: C#; AutoCAD; secondary development; .NET; geowyIo47sXiHBmRUuLOVXUZ8sObx5ts+z5uVaenXtZUy4=physical exploration; mapping

AutoCAD(Autodesk Computer Aided Design)是美国Autodesk公司开发的集二维绘图、三维设计等功能为一体的计算机辅助绘图软件[1]。该软件具有良好的用户界面、强大的图形编辑功能、开放式的体系结构且易学易用等优点,已经成为我国工程领域广泛应用的图形软件之一。该软件提供的二次开发功能,易于不同行业的制图人员采用C++、C#等高级程序设计语言对其进行扩充和修改,定制满足本行业特定需求的专业软件,减少重复操作,提高制图质量与效率。

在工程物探领域,大量的成果图件是利用AutoCAD软件人工制图形成。这些物探图件基本都是由大量重复的、简单的点线面等基本图元对象组成,图元本身元素比较简单,图形差异不大;采用人工制图,不仅重复繁琐,工作效率低下,而且经常出现一些不易发现的制图错误,严重影响物探制图工作的精度和可靠性。针对这些不足,本文采用C#高级程序广场语言对AutoCAD进行二次开发,通过编程将物探制图中大量的、可自动执行的、复杂的且易出错的操作进行有效的封装,开发了适用于工程物探制图领域的“工程物探制图”程序集,用户只需点击菜单或输入命令,即可高效、准确地绘制出物探专题图件,减少了人力投入和降低出错概率,提高了制图效率。

1 AutoCAD二次开发技术

AutoCAD的二次开发是指AutoCAD允许用户根据本行业的特殊用途在通用AutoCAD的基础上开发附加的专用功能,以满足本行业的特定需求[2-3]。

当前AutoCAD二次开发常用的开发工具有Visual Lisp、VBA、ObjectARX和.NET等,各种工具优缺点比较明显[3]:Visual Lisp和VBA简单易学,但开发功能有限,编程效率较低,已有逐渐被其他面向对象的语言代替的趋势;ObjectARX功能最强大,编程效率最高,但需要掌握难学的C++语言,门槛较高,短期内难以掌握;.NET可以使用VB、C#等支持.NET开发的高级程序设计语言对AutoCAD进行二次开发,结合C++的强大与VBA简单易用的特点,完全面向对象,充分利用.NET的各种优势,在保证功能强大的前提下大大提高开发速度,这也是Autodesk官方一直推荐使用的一种开发工具。

本文采用.NET工具对AutoCAD进行二次开发,编程语言采用C#。C#语言(C sharp)是由微软基于C语言和Microsfot.NET平台开发的,是一种精确、简单、类型安全和面向对象的编程语言,继承C和C++语言的强大功能。C#非常类似于C++,但风格更接近于Java,具有完全面向对象编程特性、先进的垃圾回收机制、高可靠性、能高速运行和高可移植性等特性[4]。C#通过AutoCAD ActiveX与AutoCAD进行通信。AutoCAD ActiveX对象使得用户能够从AutoCAD的内部或外部以编程方式来操作AutoCAD内部应用,其提供的接口功能强大,运行稳定,是AutoCAD有效的二次开发方法[5]。相对来说,C#语言开发难度低,不需要很深的CAD二次开发知识,稍有基础就容易上手,维护相对简单,开发人员利用C#能够生成在.NET生态系统中允许的多种安全可靠的应用程序[3]。此外,利用免费的开源类库[6],还可进一步降低AutoCAD二次开发的难度,这也是本文选择C#作为编程语言进行AutoCAD二次开发的重要原因。

2 程序开发

2.1 开发平台

本文选用的AutoCAD版本为2014;开发平台选用微软开发的强大的Microsoft Visual Studio 2019编译器,可以方便进行二次开发代码的编写、调试与发布;编程语言选用C#高级程序设计语言。值得注意的是,使用.NET进行AutoCAD二次开发与Visual Studio的选用版本无关。

2.2 开发流程

在二次开发过程中,C#语言通过AutoCAD ActiveX这座桥梁来与AutoCAD软件进行通信,具体通过Interop.AutoCAD.dll程序集实现与AutoCAD的数据和消息交换[7]。利用Visual Studio建立工程项目后,首先必须先添加AcdbMgd.dll、AcMgd.dll、AcCoreMgd.dll等AutoCAD自带程序集的引用,这些程序集封装了AutoCAD提供的.NET托管封装类;其次编写启动AutoCAD对象函数,实现程序与AutoCAD软件的连接;最后开始自定义命令的具体编程工作。

为了减少记忆命令的负担,本文设计了Ribbon界面以启动GUI图形交互界面调用自定义的命令。采用C#编程方式实现Ribbon界面,主要步骤为[3]:①获取Ribbon对象;②创建Ribbon选项卡,并添加到界面的选项卡集合;③创建Source Panel源面板;④创建Panel面板;⑤创建Panel元素,如按钮、复选框等;⑥将元素添加到创建的Panel面板中。

具体的二次开发流程如图1所示。

自定义命令一般具有基本的程序框架(图2),可以添加到Visual Studio的工具模板里,只需修改命令名(CommandName),即可重复使用。

2.3 程序加载

AutoCAD的二次开发获得的程序集被AutoCAD加载并使用,主要有以下2种方式:第一种是通过AutoCAD软件的内置命令“NETLOAD”加载程序集文件(本文为ACADGeophysicsTool.dll),即可执行程序功能,缺点就是每次打开AutoCAD要重复运行一次该命令,较为麻烦;第二种是利用注册表工具将程序集文件加载到注册表中,这样打开AutoCAD软件会自动加载程序集,本文选用第二种加载方式。

图3为加载了自定义的ACADGeophysicsTool.dll程序集后显示的 “工程物探制图”Ribbon菜单,只需点击菜单,根据操作提示,即可高效、准确地绘制物探专题图件。

3 程序应用

下文以绘制水域地震反射波法解释成果剖面图为例,简要介绍基于C#的AutoCAD二次开发技术在工程物探制图中的应用。

水域地震反射波法解释成果剖面图由AutoCAD中的基本图形对象组成,将剖面拆分成基本图形对象,有利于程序的编写、修改及后期维护。图4为“水域地震反射波法解释成果剖面图”样图,将其进行拆分可以得到以下5个大类。

标题类:图名与比例尺(单行文字)。

水平标尺类:主要为水平距离位置线(直线)、距离标注(单行文字)与偏离曲线绘制(多段线)。

垂直标尺类:高程位置线(直线、图案填充)与高程标注(单行文字)。

层位类:岩土层位线(多段线)、层位与最小高程标注(单行文字)。

测线交点或钻孔标注类:测点交点或钻孔位置(多段线、图案填充)与文字标注(单行文字)。

利用C#语言添加AutoCAD对应类的操作方法及图层等常规操作即可快速完成程序的编制工作。

点击“工程物探制图”Ribbon菜单的“成果草图”选项,可打开如图5所示的GUI界面,设置好参数后,按“确定”按钮打开指定数据格式的文件,即可批量绘制水域地震反射波法解释成果剖面图,修改层位名称,即可完成该类型图件(图4)的绘制工作。应用算例验证了该命令的可靠性和有效性。

4 结束语

基于C#的AutoCAD 二次开发技术在工程物探制图中的应用研究,归根到底是把一些重复性、可自动完成的,但却需要花费大量时间完成的物探制图工作,通过采用计算机技术结合物探专业技术的手段来加以完成,进而提高工作效率,节约了时间成本。

目前,“工程物探制图”程序集已成功应用于实际制图工作中,可高效、准确地绘制物探专题图件,减少人力投入和降低出错概率,从而提高了工作效率,使地质物探技术人员可以将更多的精力投入到物探成果资料的分析与地质解译之中。

参考文献:

[1] 唐雨花,姚旭炜.基于AutoCAD的三维多段线转多段线方法分析[J].河南科技,2015(7):108-110.

[2] 梅炳夫.基于C#的AutoCAD二次开发在通信设计中的应用[J].电脑与电信,2023(4):14-19.

[3] 曾冠铭,周勇,王松,等.基于C#的土方平均断面法AutoCAD绘图插件的实现[A].2021年度学术年会暨首届总工论坛会议论文集[C].2021.

[4] 林部云.基于C#语言的CAD二次开发在避雷针保护范围计算中的应用[J].电工技术,2022(14):202-206.

[5] 刘会波,陈俊涛,肖明.基于CAD地形图的初始地应力场反演快速建模程序开发[J].岩土力学,2008,29(S1):297-302.

[6] 曾洪飞,张帆,卢择临.AutoCAD VBA&VB.NET开发基础与实例教程[M].2版.北京:中国电力出版社,2008:29-34.

[7] 赵春燕,施建昭,于海乾.基于ObjectARX的CAD二次开发技术实现管线数据的入库和编辑[J].现代测绘,2010,33(5):58-60.

基金项目:自然资源部丘陵山地地质灾害防治重点实验室(福建省地质灾害重点实验室)开放基金(FJKLGH2021K001)

作者简介:林孝城(1982-),男,硕士,高级工程师。研究方向为工程物探的研究与生产。