基于.NET的管线成图系统的定制与开发

2013-12-12 01:46侯金波李奕洁潘喜峰纪海东
测绘通报 2013年2期
关键词:开发方式二次开发物探

侯金波,李奕洁,潘喜峰,纪海东

(天津市勘察院,天津300191)

一、概 述

管线探测工作中,管线探测的对象一般包括埋设于地下的给水、排水、热力、工业等各种管道及电力、电信线缆等。但因地域及客户需求不同等因素的影响,管线探测的内容、成果提交的要求等也各不相同,目前国内市场上的相关管线成图软件均难以满足管线探测工作灵活多变的需求。国内知名的管线探测单位多以某一CAD平台为基础自主定制开发地下管线成图系统并取得了较好的经济效益和社会效益。

CAD即计算机辅助设计,是计算机技术的一个重要应用领域。AutoCAD是由美国Autodesk公司开发与研究的一款通用计算机辅助绘图与设计软件包[1]。其开放的体系结构允许用户和开发者对其进行扩充和修改(即二次开发),能极大地满足用户的特殊需求。

二、AutoCAD的二次开发方式

AutoCAD为开发人员提供了丰富的开发工具,用户可根据自身需求利用这些开发工具定制开发针对各自专业领域的应用软件,从而提高作业效率。AutoCAD的二次开发方式主要有以下几种。

1)ADS:即AutoCAD的C语言开发系统,其本质是利用C语言编写AutoCAD应用程序的头文件和目标库,采用结构化编程体系、运行速度快、适合高强度数据处理,其不足之处在于C语言熟练掌握难度高、ADS难以被发现的隐藏错误往往造成Auto-CAD乃至整个系统的崩溃。

2)AutoLISP/Visual LISP:AutoLISP是AutoCAD的内嵌语言,Visual LISP是为加速AutoLISP开发而设计的软件工具;Lisp与CAD无缝集成,控制结构灵活多变,可调用绝大部分AutoCAD的内置命令,且语法规则简单,易学易用,但是其采用解释执行的方式,运行速度较慢不适于大规模大规模的密集型运算,较差的保护机制使得源程序难以得到较好的保护,它们采用表来描述一切,难以很好地反映现实世界和过程,并且不能直接访问硬件设备进行二进制文件的读写。

3)ObjectARX/ObjectDBX:二者以C++为编程语言,采用面向对象的开发方式,能够对AutoCAD的所有事务进行完整的设计与开发,能够以较高的效率开发出功能强大、运行速度快、集成度较高、稳定性也较好的应用程序,二者最大的差异表现在ObjectARX需要AutoCAD作为宿主程序而ObjectDBX可以基于任意的宿主程序;因ObjectARX/ObjectDBX的方式是基于C++进行开发,编程者需较好的C++功底,对编程者的个人开发能力要求较高。

4)VBA:即将Visual Basic For Application开发环境集成在AutoCAD中,VBA通过 AutoCAD ActiveX Automation接口向AutoCAD发送消息。ActiveX是Microsoft基于COM(部件对象模型体系结构)开发的一项技术,用户可以用它来自定义Auto-CAD与其他应用程序共享图形数据及自动完成任务。在ActiveX Automation出现之前,开发者只能用AutoLISP或C++接口访问 AutoCAD图形,而 ActiveX Automation可以在多种编程环境下访问Auto-CAD图形,且更易于与Microsoft Word、Microsoft Excel等Windows应用程序共享数据。VBA开发方式与主程序间的通讯简单、高效,但是应用VBA不能定义对象,不能向CAD注册命令,其面向对象的功能支持的不是太好。在2012以后AutoCAD的CAD版本中不再支持VBA开发,转而完全支持.NET的开发方式。

5).NET:从 AutoCAD2006开始,Autodesk在.NET API中提供了一系列托管的外包类,使开发人员可利用任何支持.NET的语言,其优点是完全面向对象、方便易用、简单易学,是理想的AutoCAD开发工具。.NET采用了垃圾回收机制,由.NET框架自行进行内存的回收机释放,而不必向C++那样自己管理内存的申请和释放。ObjectARX的各种反应器在.NET API中由外包类映射为各种事件(E-vent),用户通过定义事件响应函数来响应各种操作,对错误信息的处理由返回值转变为异常处理,更好地兼容.NET。面向对象的编程方法使得之一开发方式没有全局函数的概念,.NET API将ObjectARX下的全局函数封装为.NET API下的某些对象或对象的属性,如ObjectARX下与用户交互的系列全局函数被封装CommandLinePrompt类。

三、二次开发方式的比较

目前AutoCAD二次开发主要采用后4种开发方式,相较而言,这4种二次开发方式的能力范围基本满足以下关系式。

ObjectARX>.NET>LISP>ActiveX开发的难度满足以下关系式。

VBA<LISP<.NET<ObjectARX开发方式的能力见表1。

表1 开发方式的能力

四、管线成图系统的定制与开发

通过以上几种开发方式的介绍与比较,可以看出对于管线探测单位从易学易用、满足实际工作需要的角度来看,以.NET为基础进行管线成图系统的定制与开发不失为一个良好的选择。本文将对在AutoCAD平台上基于.NET进行管线成图系统的定制与开发的基本流程进行简单介绍。

1.系统定制与开发的基本原则

系统定制与开发的过程中除遵循软件设计的一般原则外,根据管线探测单位的实际工作情况还需遵循以下几点。

1)科学性可靠原则:数据的管理组织、成图编绘等应满足规范规定及工程实际需要,系统应具有一定的纠错及异常处理能力。

2)易用性原则:定制与开发的过程中应充分考虑到操作人员的实际素质,以建立操作方便、界面友好、性能稳定、结果直观的易用性系统为目标。

2.成图数据的组织与管理

良好的数据组织是成图系统性能优良的基本保障。对于管线成图来说,所需要的数据主要包含两个方面,即测量数据和与之对应的物探属性数据。在程序设计前期,开发人员需根据需要选定存储数据的载体,以及载体上测量数据和属性数据间相互组织关联的方式。比较常见的方式是以数据库为载体,设计各种表以完成各种数据的存储,表与表之间通过特定的字段相关联。外业所采集的测量及物探数据需经逻辑检查等预处理操作后转换为成图所需要的数据格式,经人工输入或自动加载至数据载体,在载体上完美地组织在一起,完成成图的数据准备工作。

3.成图操作的基本流程

程序设计过程中,成图操作即编码实现从记录与管理测量数据及物探数据的相关载体中读取数据,在相应的图层上进行绘制相关线型、符号、添加注记等。程序实现的一般流程如图1所示。

AutoCAD允许用户在应用程序上添加扩展数据或字典数据来为实体提供额外的属性信息。在依照物探属性及相应的测量数据可为管线添加类型、长度、埋深等属性信息。根据管线探测数据成图完毕后,叠加相关地形图,经图形、属性、拓扑关系等项目检查无误后即可提交成果,完成一次作业过程。

五、应用实例

本文以Access数据库作为数据载体,在Visual Studio 2008平台上,采用C#编程语言利用.NET API对AutoCAD2011进行定制与开发,以满足某一客户提交DWG图形文件及MDB数据库的探测工程需求。图2~图8展示了定制的效果。

图1 管线成图一般流程

图2 定制菜单

图3 新建工程

图4 数据表结构

图5 工程信息录入

图6 测量信息录入

图7 物探信息录入

六、结束语

通过在AutoCAD平台上进行二次开发,定制满足不同地域及客户需要的管线成图系统,可显著增强探测单位应对不同需求的能力,有效提高其竞争力。.NET API有效降低了AutoCAD二次开发的难度,是管线探测单位定制和开发管线成图系统的理想方式。

图8 局部成图效果

[1]林斌,杜珺.AutoCAD2012完全自学一本通[M].北京:电子工业出版社,2011.

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

[3]李超,周吕,文鸿雁等.宁波市地下管线探测中应用技术的探讨[J].地理空间信息,2013,11(2):152-154.

[4]陈光华,邓孝应.基于Access数据库的管线数据处理程序的设计与实现[J].测绘,2011(34):181-183.

[5]吕宝奇,王瑞芳,王俊.基于AutoCAD Map 3D开发数字成图系统的设计与实现[J].测绘与地理空间信息,2010,33(3):124-128.

[6]曹化宇.构建高质量的C#代码[M].北京:电子工业出版社,2013.

猜你喜欢
开发方式二次开发物探
《石油物探》 2022年总目次
浅谈基于Revit平台的二次开发
浅谈Mastercam后处理器的二次开发
探讨物探技术在地质找矿及勘探中的应用
西门子Easy Screen对倒棱机床界面二次开发
数字海洋的开发方式选择和研究
《物探化探计算技术》2016年1~6期总要目
车身开发中的尺寸工程技术之我见
缅甸水资源开发方式及应注意的问题
两种物探方法在观音岩隧道勘察中的应用