1 CAD常见的二次开发手段
CAD 软件二次开发是指在现有的软件基础上,各用户为提高软件的使用效率,让软件更加贴合用户的实际需求,而进行功能定制化的开发工作。其主要目的是为让CAD 软件的功能最大化利用起来,实现用户的个性化需求。CAD 软件为用户提供的常见二次开发手段有以下几种:
1) 函数库形式,主要是利用CAD 提供的编程环境和基于函数库的API 接口,用户通过编写程序来实现对AutoCAD 开发的方法,可实现在无CAD 环境下运行,但该法具有一定的局限性,无法充分发挥CAD 的系统性能。另外,可以实现界面定制,扩充CAD功能,但只能在CAD 系统内运行。
2) ActiveX Automation 形式,它是建立在COM 基础之上,由OLE Automation 发展而来的,其核心技术是允许一个应用程序操作另一个应用程序,是一种比较成熟方便且实用的技术,在实际开发中得到了广泛的运用。
2 CAD 开发模式
AutoCAD 公司为了满足广大用户对软件功能的定制功能要求,针对各类客户的需求提供了多种形式的二次开发工具,如AutoLISP,VBA,Object ARX 等开发工具。用户可根据自己的实际情况选择合适的开发工具进行二次开发,以满足设计生产的需要,实现图形绘制的快速化提高工作效率。针对道路勘测阶段对设计的重要性,确保断面图绘制的快速和高效十分必要。下面介绍几种常用的二次开发模式,并结合测绘行业的需求特点进行总结。
1) VBA( Visual Basic for Applications) 开发模式,它被集成到AutoCAD 2000 中,打通了用户访问CAD 中丰富技术框架的全新通道。VBA 可用通过ActiveX 接口实现与CAD 的通信,并能够访问和控制CAD 所有图形对象和非图形对象,包括这些对象的方法和属性等。由于VBA 是由VB 发展而来,都是面向对象编程,与其他程序语言相比,具有更简单,更易学等特点。因此,在测绘行业内运用较为广泛,二次开发的测绘案例较多。但VBA 开发具有交互性差,不能直接编译等缺点。
2) Object ARX 开发模式,Object ARX 是Autodesk 公司针对AutoCAD 平台上的二次开发而推出的一个开发软件包,它提供了以C + + 为基础的面向对象的开发环境及应用程序接口,能真正快速的访问AutoCAD 图形数据库。与以往的AutoCAD 二次开发工具Auto LISP 和ADS 不同,Object ARX 应用程序是一个DLL( 动态链接库) ,共享AutoCAD 的地址空间,对AutoCAD 进行直接函数调用。所以使用ARX 编程的函数的执行速度得以大大提高。
ARX 类库采用了标准的C + + 类库的封装形式,这也大大提高了程序员编程的可靠度和效率。通过ARX 定义的外部命令,可以像CAD 内部命令一样执行,LISP 所调用,具有可封装性、可继承性、多态性等特点。因此,广泛被专业软件开发公司用于模块定制与升级等商业开发。但只有具备了相关专业软件开发知识和系统的学习才能掌握这一开发技术,对于普通测绘工作者来讲具有相当大的难度。
3) Auto LISP 开发模式,LISP 语言是一种针对扩充及自订AutoCAD函数机能而产生的,它擅于处理串行文字,于20 世纪50 年代末期出现。随着Autodesk 公司不断改进,推出了新的版本VisualLISP( VLISP) ,它是Auto LISP 的换代版本,与老式LISP 语言相比,具有更加快速便捷的优点。本身提供了一个完整的开发环境,拥有一个交互式的编译平台,使用户在编写程序时更加便捷高效。作为通用LISP 语言小子集,它为用户提供了众多的功能函数,用户只需直接调用函数即可实现大部分的CAD 图形绘制功能,编写时按照其语法惯例和规则,即可实现灵活的程序开发。另外,VLISP 还提供了用于发布独立应用程序的工具,保障了程序的安全性和密封性。基于VLISP 开发出的应用程序具有相对独立性的特点,与Object ARX 应用程序共享CAD 地址空间不同,当程序运行一旦出现错误或失败等问题,不会对CAD 自身进程造成影响。加之具有开发周期短,语言简单易学,十分受广大测绘工作者的欢迎,尤其是程序开发的初学者。
3 道路断面绘制程序开发
测绘行业与设计行业的联系十分紧密,基于CAD 在设计行业的广泛应用,CAD 对于测绘行业人员来说十分重要。尤其是在勘测单位,地形图与道路断面数据是设计的基础性数据。道路的纵横断面图主要是由外业采集的地面线组成,各断面按照桩号的大小一一对应,断面形态直接反映现场道路走向的地形变化情况。为了能够准确反映出现场的地形状况,在断面采集时,除了对整数桩号( 一般整20 m) 的断面进行采集外,还需要对地形起伏较大的地段进行一定加桩,这样造成经过不同地形的断面数量差距往往很大。由于每个断面的数据都不一样,要完成一个道路勘测项目的断面绘制内业任务将十分繁重。
3. 1 开发工具的选择
针对断面图绘制开发自动化绘制程序十分必要,根据上述CAD 提供的几种开发模式优缺点,结合道路断面图绘制的特点,本文认为采用VLISP 和VBA 的开发工具进行二次开发具有优势。主要原因有两个:
1) 根据测绘行业自身属于基础服务性的特点,尤其是在勘测领域,主要任务是提供基础数据,功能相对单一,这就决定了不需要大型的专业程序,在道路断面绘制程序上更是如此,要求程序具备按照规范要求能够自动化完成断面图绘制即可。
2) 测绘从业者大多没有接受过专业的软件开发培训,尤其是在一线的测量人员,Object ARX 的开发模式往往需要更系统的软件开发知识储备,VBA 和VLISP 的开发工具更为简单,语言基础要求较低,通过自学即可掌握相关的开发技术。
3. 2 技术要点分析
虽然根据工程性质的不同,对断面图绘制要求会有所不同,但在基本框架和整体要求上基本一致,原理性的东西并没有变,通常一个完整的断面图包括: 坐标轴、断面线、基本坐标格网、辅助坐标格网、比例尺、工程信息等内容。按照规范规定,线路纵断面采用直角坐标法绘制,以里程为横坐标,以高程为纵坐标。里程比例尺常采用1∶ 2 000 和1∶ 1 000,为突出地形起伏,高程比例尺通常为里程比例尺的10 倍~ 20 倍。横断面一般选在里程桩和线路横向地形变化明显处,在大中小桥头、隧道洞口等地适当加密,线路的纵横比例尺一般采用1∶ 100 或1∶ 200。在CAD 平台下绘制时首先是要建立相应的图层,分别用不同颜色和线型加以区分,以便于用户对断面线、格网线、图框线等信息判断。然后是建立相应的图框和格网,格网的作用是为了方便用户能够在图纸上直接量取断面的距离和高程信息。接着就是要将项目的基本信息进行录入,主要是项目的人员信息和单位信息。最后,要完成断面线的绘制,将地面特征点逐一展现在图上并连线,即绘出断面图。
断面图绘制程序设计主要技术难点在于如何根据地面特征点高程的变化来确保合理容纳适量的断面线。因为,通常一张断面图只能容纳有限的断面线,要确保断面线既不超出图框范围又不造成空间浪费,需要采取合理的算法来进行约束。根据本文的研究和实验,可采用计算每个断面最大高差的形式来确定每条断面的占用空间,这样就可准确计算出各断面图容纳的断面梳理。
4 结语
道路断面图绘制是道路勘测的基本任务,目前对断面图绘制程序的开发案例也比较多,但多数只局限于单位的内部利用,各单位开发的绘图程序只针对本单位所涉及的业务种类,并不具有通用性,如何开发出具通用性的绘图程序将是日后的一个方向。作者也在积极做这方面的尝试,尝试用C# 语言和脚本技术结合的方法进行程序开发,使得程序功能更加完善,能够脱离CAD 环境运行,已有初步成果,将在日后的论文中发表。
本文来源:https://www.010zaixian.com/shiyongwen/1652427.htm