预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第26卷第1期现代测绘Vol.26,No.1 2003年2月ModernSurveyingandMappingFeb.2003 VB在基于AutoCAD的数字测图系统开发中的应用 贡云兰,闻道秋X (东南大学交通学院,南京210096) 摘要本文通过具体的几个实例较详细地介绍了如何应用VB开发基于AutoCAD的数字测图系统,说明利用VB 开发AutoCAD要比用其它方法简单、方便,且能实现功能较强的数字测图系统。 关键词VBAutoCADActiveXAutomation对象数字测图系统 中图分类号:P208文献标识码:B 制者,服务器是被控制者。在这里VB是客户程序, 1引言 AutoCADR14是服务器程序,服务器程序包含了一些 随着GIS的迅速发展,工程设计要求的提高,测列的暴露对象,只要提供一定的接口,就可以使任何 绘部门提供的地形图资料必须是数字地图。因Au2对象实现自动化。 toCAD具有强大的图形处理与编辑功能,提供了标AutoCAD-R14作为服务程序,其暴露给客户程 准的、通用的数据格式,是当今国内外最为流行的计序的对象、属性和方法保存在类型库中,这个库文件 算机辅助绘图软件,所以许多专业性很强的工程绘名为Acad.tld,位于AutoCAD的目录中。库中并不 图软件都是基于AutoCAD二次开发的。AutoCAD保存对象本身,只是保存创建对象的类的信息。在 R14以前的版本提供的二次开发工具AutoLisp(解释使用AutoCAD应用程序暴露的对象之前,要先引用 型过程语言)和ADS(结构化的面向过程的开发工它的类型库。引用操作如下: 具)比较复杂烦琐,许多人难以掌握,如AutoLISP语打开VisualBasic,进入编程界面;从工程菜单中 言表处理功能较强,但在计算算法上较弱,在一定程选择“引用”,弹出引用对话框;在引用对话框中,选 度上限制了AutoCAD的二次开发。择AutoCADR14ObjectLibrary。 随着微软平台一统天下局面的出现,微软提出AutoCAD应用程序对外暴露了68个对象,这些 了各应用程序间通讯的统一标准———ActiveX自动对象按照从属关系,有层次地组织在一起,图1所 化技术,它倡导在Windows平台下,各应用程序间相示: 互调用,相互协作。AutoDesk对此积极响应,于是在从上面看出,AutoCADApplication对象是VB应 AutoCAD-R14的开发后期,诞生了又一开发方法用程序与AutoCAD之间连接的关键,只有通过Ap2 ———利用ActiveXAutomation技术。plication对象才能获得Document对象,ModelSpace VB是最为常用的支持ActiveXAutomation技术和PaperSpace等一系列下级子对象。下面的一段 的开发工具,是真正的面向对象的开发工具,其语言代码将VB与AutoCAD链接。如果成功则返回Ap2 简单,功能强大,提供了大量控件,可用于设计界面plication对象,并获得ModelSpace和PaperSpace等 和实现各种功能(包括数据库管理)。因它继承了原子对象。 Basic的许多内容,相对于其它语言要易于掌握。本DimacadAppAsObject DimpreferenceAsObject 文就讨论了用VB开发基于AutoCAD的数字测图系 DimacadDocAsObject 统。DimmoSpaceAsObject DimpaSpaceAsObject 2VB与AutoCAD连接OnErrorResumeNext SetacadApp=GetObject(,“AutoCAD.Application”) Active-XAutomation技术由客户程序(Client) IfErrThen 和服务器程序(Server)组成,客户程序是操纵者与控 X作者简介:贡云兰,女,1964年生,东南大学交通学院工程制图教研室讲师。 闻道秋,男,1964年生,硕士,东南大学交通学院测绘工程系副教授。 ©1995-2005TsinghuaTongfangOpticalDiscCo.,Ltd.Allrightsreserved. 03现代测绘第26卷 图1 Err.ClearSetriver=acadDoc.layers.Add“河流”() SetacadApp=CreateObject“(AutoCAD.Application”)River.color=acblue“河流”图层上实体随层颜色为兰色, IfErrThen线型river-line-type MsgBoxErr.DescriptionEndIfRiver.linetype=“river-linetype” En