基于 AutoCAD.NET API 技术的煤矿地质图件自动绘制
2013-08-23邓军
邓 军
(重庆工程职业技术学院地质与测绘工程学院,重庆 400037)
煤矿地质图件是煤矿地质工作的集中反映,是煤矿生产和管理工作的重要依据。其数据量大、覆盖面广,它包括各种观测数据、报表和计算成果等。随着煤矿生产的迅速发展、采掘机械化程度的提高和开采条件的复杂化,煤矿生产对地质工作的依赖性越来越大,对地质图件的要求也越来越高。目前,我国地质信息的地质图件绘制主要使用Autodesk公司的AutoCAD软件,还有西安集灵公司的CGIS和北京龙软的地测空间管理信息系统。Auto-CAD是一种计算机辅助设计系统,其主要适用于机械制图领域,在矿山制图方面应用并非得心应手,主要表现在AutoCAD没有针对矿山应用领域而设计专属的内容,在一定程度上降低了地质图件绘制的效率,比如很多矿山方面专有的符号要进行大量重复的绘制,绘图的精度难以保证,格式规范难以统一。地测空间管理信息系统和CGIS针对AutoCAD在矿山制图应用方面的不足,增加了大量的专业符号、线型,极大的方便了绘图人员。但是,在制图功能、使用习惯和软件的稳定方面,又有所不如AutoCAD。而且这几个软件都有自己的图形格式,在实际使用中,除了Auto-CAD,煤矿企业并没有为各个部门都配备龙软和CGIS,造成了在数据共享方面存在一定难度,图件在转换过程中丢失信息,往往要浪费大量的人力修改。在分析当前问题存在的基础上,本文提出基于Autodesk AutoCAD来开发地质图件绘制系统,以期望解决目前存在的问题。
1 系统功能分析
第一部分包括:现有地质图件的坐标校正,钻孔数据库的建立维护,根据钻孔数据库自动生成钻孔,根据钻孔数据生成各种等值线,如底板等高线图、瓦斯含量等值线、瓦斯压力等值线等。其中地质图件的坐标校正是地质图件自动绘制的基础,经过校正,钻孔的坐标和AutoCAD的坐标系相吻合,保证了自动绘制的钻孔在图形上的正确位置。根据钻孔的坐标值来生成Delauney三角网,再生成各种等值线。第二部分主要是现在煤矿生产中常用的图件图例的自动生成。如储量计算图中的储量图、煤层小柱状,瓦斯地质图中的瓦斯测压点、动力现象点、煤层采样点、瓦斯突出点、瓦斯相对涌出量点、瓦斯抽放泵站等。第三部分是地质图件常用线形的半自动绘制。包括岩巷、煤巷、储量块段界线、井田边界线、铁路公路保护煤柱线、瓦斯含量等值线、煤层顶板岩性分界线、煤厚等值线、瓦斯绝对涌出量等值线等。
2 使用.NET开发基于AutoCAD地质图件自动绘制系统
2.1 AutoCAD.NET API简介
AutoCAD的二次开发工具主要有ObjectARX,VBA和Lisp,其中ObjectARX功能强大,编程效率很高,但是开发平台为VC++,VC++相对于其他两种开发方式来说,开发者的学习成本很高,而且VC++在程序的GUI方面较为薄弱。VBA和Lisp虽然简单容易上手,但是这两种开发方式对于开发大型的程序方面无能为力。而.NET开发模式则结合了VC++功能强大与VBA易学易用的特点,可以快速的开发出功能强大的AutoCAD程序。
AutoCAD.NETAPI是Autodesk在AutoCAD2006中为.NET新增的一组API,.NET API提供了一系列托管的外包类(Managed Wra-pperClass),使开发人员可在.NET框架下,使用任何支持.NET的语言,如VB.NET,C#等对AutoCAD进行二次开发。
2.2 系统总体设计
系统总体分为四个模块,分别是数据库管理模块,等值线自动生成模块,常用图例自动生成模块,常用线形的建立使用。其中,数据库管理模块连接钻探数据库,获取各种钻探数据,主要是本系统中使用的钻孔信息和瓦斯地质信息,如钻孔的名称、钻孔坐标、孔口标高、钻孔深度、煤层厚度等。瓦斯地质信息包括瓦斯涌出量、瓦斯压力点、瓦斯突出点等。储量信息包括块段号及储量级别、块段平均面积、储量、煤层平均厚度、煤层倾角。等值线自动生成模块负责根据钻孔的深度生成底板等高线,根据钻孔的煤厚生成煤厚等值线,根据瓦斯信息生成瓦斯含量等值线、瓦斯绝对涌出量等值线。在生成等值线之前,需要用户对图形进行坐标校正,程序提供了用三个点校正的功能,在误差范围之内,对图形进行坐标校正。常用图例自动生成模块负责绘制地质图件中常用的各种图例。根据用户输入的坐标和比例尺在地图的特定位置插入图例。由于.NET不支持自定义实体,所以在图例的建模方面使用块,所有的块状图例都继承于一个抽象类UserDefine-Object,User Define Object定义了一些基本的方法和属性,派生类根据自身的特性,继承或者重写其中的一些方法属性,针对不同的实体,每个派生类具有自己专有的属性方法。这样面向OO的编程,可以最大程度的减少编写代码的工作量。系统示意图见图1。
2.3 系统部分实现技术
2.3.1 使用工厂模式连接数据库
随着数字矿山的推进,全国各大煤矿基本上都建立了自己的数据库系统,以便对地测数据进行管理。具体到各个煤矿采用的解决方案不同,中小型应用基本采用Microsoft Access或Microsoft SQL Server,大型的应用采用MicrosoftSQL Server或者Oracle居多。以贵州响水矿为例,钻探数据采用了Access和SQL Server两种方式来存储。在.NET中我们可以使用System.Data.Odbc命名空间中所提供的类实现对所有数据库的操作。但是在.NET对各种不同的数据库还提供了特有的数据提供程序。如:访问SQL Server数据库可以使用 System.Data.SqlClie-nt命名空间下的类;访问Oracle数据库可以使用 System.Data.OracleClient命名空间下的类。利用这些特有的数据库提供程序可以获得更高的性能。所以在开发软件的过程中,我们需要设计一种模式用来支持利用特定的数据库提供程序访问特定的数据库,而不是统一使用ODBC连接。在本次项目的实施过程中利用.NET中反射的原理简化了工厂类的代码,并且实现了动态创建对象实例的功能。通过web.config配置文件的自定义配置节点,配置具体数据库访问的Provider,并设置应用程序默认数据库访问Provider。通过修改配置文件,就能够达到添加和修改应用程序所访问的具体数据库。在程序中,各种具体数据库访问Provider,都继承一个名为DataProvider的数据访问工厂类。该类动态的构造配置文件中所设置的默认的具体数据访问Provider。
图1 系统示意图
2.3.2 AutoCAD托管类的二次封装
在程序的开发过程中,使用频率最高的是AutoCAD提供的ObjectARX托管类中提供的一些方法。但是在编写代码的过程中发现,这些托管类存在许多不便的地方,比如封装的粒度太细,存在一些Bug,常用的代码无法重用,还有一些C++的全局函数没有提供等等。为了解决这些问题,编写一个自定义的类库是比较好的解决方案。根据自定义类库的命名规则,将这个类库命名为GZXS.GIS309.ARXDotNet。自定义类库极大的减少了代码编写的工作量并且更容易维护,在传统的C#开发过程中,如果在Auto-CAD模型空间中加入一个实体,需要做以下工作:
而且在每次加入实体的过程中都必须重新编写,无疑重复工作量很大。而采用了自定义类库后,上面的代码就可以简写为:
2.3.3 采用第三方控件来开发用户界面
用户界面(UI:User Interface)是整个软件的前端,也是关系到用户体验最重要的一部分,除了业务逻辑的组织之外,方便、美观的用户界面可以直观的展现软件的功能,使用户学习、熟悉、使用软件的效率大为提高。在软件的开发过程中,考虑到上述因素,良好的UI设计必不可少。但是Visual Studio2005自带的一些控件不能满足需求。而自己开发新的自定义控件将会使工作量急剧增大,因此,使用一款合适的第三方控件产品就成为最好的选择。
软件采用了一套Visual Studio.NET开发环境下的界面扩展框架组件,提供类似Office2007,Office2003以及OfficeXP风格的菜单和工具条、任务面板、自动隐藏并可拆分的标签式的可停靠窗口、Vista风格的气泡控件、多功能面板控件等。还支持最新的Rabin风格的窗体以及相关控件,而且实现这些不需要写任何代码,就像使用Visual Studio2005自带的控件一样方便。
2.3.4 采用面向接口的设计
在本系统中,采用了面向对象的思想,系统的各种功能是由不同对象协作完成的。在这种情况下,各个对象内部如何实现在系统设计的时候相对来说不是最重要的,而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初是着重考虑的重点,这也是系统设计的主要工作内容。因此,本系统在设计的时候采用了面向接口的设计思想,编程的时候,依赖抽象,而不依赖于具体实现,这样,在修改和维护的时候,已有的代码不需要修改,只需要增加类即可。
3 结论与展望
本文在针对煤矿地质图件绘制现存问题的基础上,提出了利用AutoCAD.NET API和C#来实现地质图件绘制软件的方法。采用最新的AutoCAD二次开发工具迅速的构建了地质图件绘制软件的框架,开发出的绘制系统与AutoCAD无缝集成,实现了地质图件绘制的基本功能,并且采用了第三方控件,拥有良好的人机操作界面。本文中系统的设计丰富了地质图件软件的种类,同时也拓展了相关方面软件开发的思路。
[1]曾洪飞,张 帆,卢择临.AutoCAD VBA& VB.NET开发基础与实例教程[M].北京:中国电力出版社,2007.
[2]涂兴子,林在康.基于CAD的数字矿井模型及应用[M].徐州:中国矿业大学出版社,2005.
[3]丁 华.煤矿地测管理信息系统的建立[J].矿山测量,1996(1):21-23.