AutoCAD中用VBA进行二次开发论文:AutoCAD中用VBA进行二次开发在工程测量中的应用_第1页
AutoCAD中用VBA进行二次开发论文:AutoCAD中用VBA进行二次开发在工程测量中的应用_第2页
AutoCAD中用VBA进行二次开发论文:AutoCAD中用VBA进行二次开发在工程测量中的应用_第3页
AutoCAD中用VBA进行二次开发论文:AutoCAD中用VBA进行二次开发在工程测量中的应用_第4页
AutoCAD中用VBA进行二次开发论文:AutoCAD中用VBA进行二次开发在工程测量中的应用_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、AutoCAD中用VBA进行二次开发论文:AutoCAD中用VBA进行二次开发在工程测量中的应用摘要:用VBA在AutoCAD平台上进行二次开发,创立非常好的应用程序,让那些绘制重复的测量绘图工作能自动执行,帮助我们自动地高效率地完成绘图任务。笔者应用生产实用的二个例题来说明AutoCAD中用VBA进行二次开发在工程测量中的应用。 中图分类号:TP391.72文献标识码:A文章编号:1007-9416202105-0119-02 1、AutoCAD与VBA AutoCAD是由Autodesk公司开发的工程绘图软件,是工程制图人员常用的绘图软件之一,功能十分强大,在测量工程领域广泛应用,Auto

2、CAD除了具有强大的绘图功能,开放式体系结构也允许第三方开发者为它编写应用程序,显著增加了绘图工作效率。 VBA是Visual Basic for Applications的英文缩写,是由Microsoft创立的,它是一个功能强大的定制程序开发工具,用来自动执行任务的一个编程环境。VBA为AutoCAD的二次开发提供类似Visual BasicVB语言所拥有的功能,引入了对象的程序设计环境,为开发者提供了用来创立图形用户界面GUI的可拖拉工具和用来与AutoCAD对象交互的编程语言。 工程技术人员绘制图形时,也许会重复地一遍遍地执行着相同的绘图任务。如在地下管线测量任务时,一条街道上存在着具有

3、各种不同属性的管线通讯管线、军用光缆、上水管线、污水管线等,测量人员要用全站仪将成千上万的各种管线的特征点坐标测量出来,在AutoCAD上将这些具有相同属性的管线点连接起来绘制成综合管线图。用手工在AutoCAD上连接这些特征点绘制成管线图,那是一项乏味的、重复的、极低效率的工作,而且会由于绘图人员的工作疲劳和疏忽产生错误。如果我们的工程技术人员可以使用VBA在AutoCAD平台上进行二次开发,根据管线绘图任务定制应用程序,就可以帮助我们自动高效率地完成管线绘图任务。 2、为什么要使用VBA进行AutoCAD二次开发 使用VBA进行AutoCAD二次开发有哪些优点呢?最明显的优点是VBA要比A

4、uto Lisp /Visual LISP、C+易学。基于Auto Lisp或C+语言来对AutoCAD进行二次开发的程序,对于一个非计算机编程技术专业的工程技术人员来说,前者的语言的因语句过于繁杂而难懂,后者与AutoCAD的接口技术过于繁琐而难以掌握。而用VBA进行AutoCAD二次开发,工程技术人员通过一段时间VBA的学习,就能够编写出许多能够满足特定绘图功能的VBA宏,甚至可以开发工程领域的设计、计算、绘图程序了。 AutoCAD2000所包含的VBA与Auto LISP的情形类似,即VBA与AutoCAD一起共享地址空间,与AutoCAD执行于同一处理程序,而与DCL、Auto LI

5、SP /Visual LISP相比,VBA在制作对话框方面有明显的优势,所以它也是适于取代DCL、Auto LISP /Visual LISP的二次开发工具。此外,VBA工程可以独立内嵌在AutoCAD图面中,为工程技术人员发布应用程序上有很大的用处与灵活性。 此外,VBA可以整合其它具有VBA功能的应用程序的能力。这使得AutoCAD可以成为其它应用程序(如Word、Excel或Access)的Automation控制器。通过AutoCAD ActiveX Automation接口,VBA将信息传送给AutoCAD,而AutoCADVBA也允许VBA环境与AutoCAD同时执行,并通过Act

6、iveX Automation接口提供AutoCAD的程序。因此,AutoCAD、ActiveX Automation与VBA的结合,不仅可以操作AutoCAD的内部对象,还可以使用不同的程序语言,如,Exedl VBA、Word VBA、等来访问这些对象,在它们之间接收或传送数据。 3、使用VBA对AutoCAD进行二次开发的技术要点 ActiveX对象模型AutoCADObjects是AutoCADActiveX技术的根底,每一个对象都代表着AutoCAD的一个构图元素,编程人员可以通过VBA代码来访问。AutoCAD是按层结构来组织对象的。Application是最顶部层级的对象,可以间

7、接或直接地访问模型中的所有对象;它的下面是Preferences与Document,其中Document对象包含:PaperSpace、ModelSpace、Plot、Utility与Blocks等对象,可调用当前的AutoCAD图形,而Preferences对象用来访问反映Options对话框中各页面的对象,并可进行选项设置;AutoCAD中最底层的对象是点、线、圆、图块等能画出的图形。通常情形,AutoCADObjects只能访问其下一层级的对象,但是在代码中用ThisDrwing表示的被激活文档,它是可以间接地访问其上面层级的Application对象.的。 我们用VBA来对AutoCA

8、D进行二次开发,首先要学习并掌握AutoCADObjects的各项属性、事件和方法,才能在程序的编写过程中灵活地运用。 4、使用VBA对AutoCAD进行二次开发在测量工作的应用实例 实例一:举一个简单例子说明在VBA 编程环境下如何通过ActiveXObjects实现将CAD上所有圆对象的圆心X、Y坐标和圆半径写入已有的Access数据库表中,这些技术和代码同样可用于有ActiveX功能的其它数据库。 1第一步在C: 下建立名为Data的Access数据库。2创立名为circle的表格,输入字段名cirX、cirY、和radius,定义它们的数据类型为数字。3退出数据库设计并关闭数据库。4运

9、行AutoCAD,在模型空间中绘制一些圆形、直线、多边形。5在命令行输入VBAIDE回车,翻开AutoCAD VB Editor,在下拉菜单中选择工具引用,在Microsoft DAO 3.51 Object Library选项前打勾, 单击确定。6插入用户窗体UserForm,插入如下图的标签和命令按钮。7输入如下代码至命令按钮cmdSave的Click事件程序。 Private Sub cmdsave_Click() Dim DataObject As Database Dim Circlerecord As Recordset Dim CircleObject As AcadCircle

10、 Dim count As Integer Set DataObject = OpenDatabase("c: Data.mdb ") Set Circlerecord = dataob.OpenRecordset("Circle") For count = 0 To ThisDrawing.ModelSpace.count - 1 If ThisDrawing.ModelSpace.Item(count).ObjectName = "AcDbCircle"Then Circlerecord.AddNew Set CircleObje

11、c = ThisDrawing.ModelSpace.Item(count) Circlerecord!cirx = CircleObject.cirPoint(0) Circlerecord!ciry = CircleObject.CirPoint(1) Circlerecord! radius = CircleObject. radius End If Next CircleObject.Update Circlerecord.Close DataObject.Close Set Circlerecord = Nothing Set DataObject = Nothing MsgBox

12、("save Circle data to database") Unload Me End Sub 实例二:从没有高程点位图层的数字地形图中取出高程及对应点位坐标数据用以计算土方量可以简略编写以下代码。 Sub test() Dim OutPoint(0 To 2)As Double Dim TextObjecct As AcadText Dim i As Integer Open "f:OutPutPointCoor.txt" For Output As #1 For i = 0 To ThisDrawing.ModelSpace.Count - 1 If ThisDrawing.ModelSpace(i).ObjectName = "AcDbText" Then Set TextObjecct = ThisDrawing.ModelSpace(i) If TextObjecct.Layer = "ZJ" And TextObjecct.Height <1.5 Then Print #1, TextObjecct.TextString, TextObjecct.InsertionPoint(0), TextObjecct.InsertionPoint(1)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论