首页 基于VB的AutoCAD二次开发与图形自动生成技术

基于VB的AutoCAD二次开发与图形自动生成技术

举报
开通vip

基于VB的AutoCAD二次开发与图形自动生成技术 第22卷 第1期 2006年1月 森 林 工 程 FDREST ENGlNEERING Vo1.22 No.I Jan.,2006 基于 VB的 AutoCAD二次开发与图形自动生成技术 赵永平 ,郝赛男2,于 娇3,刘空军3 (1.哈尔滨工业大学,哈尔滨 150090;2.海伦市公路管理处.黑龙江 海伦 152300;3.黑龙江工程学院,哈尔滨 150050) 摘 要:通过例程分析对Aut~-_AD二次开发实现自动成图的几种不同方法的基本原理和特点。重点介绍了 利用VI3的Act...

基于VB的AutoCAD二次开发与图形自动生成技术
第22卷 第1期 2006年1月 森 林 工 程 FDREST ENGlNEERING Vo1.22 No.I Jan.,2006 基于 VB的 AutoCAD二次开发与图形自动生成技术 赵永平 ,郝赛男2,于 娇3,刘空军3 (1.哈尔滨工业大学,哈尔滨 150090;2.海伦市公路管理处.黑龙江 海伦 152300;3.黑龙江工程学院,哈尔滨 150050) 摘 要:通过例程分析对Aut~-_AD二次开发实现自动成图的几种不同方法的基本原理和特点。重点介绍了 利用VI3的ActiveX技术进行AutoCAD图形 自动生成的原理、方法与特点,提出了自动成图的程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 思路和流 程。 关键词:AutoCAD;自动成图;程序设计;AetiveX技术;图形操作 中圈分类号:TP3ll 文献标识码:A 文章编号:1001—006X(2006)01—0061—04 VB-Imsed Secondary Development Oil AutoCAD and Graph Auto-producing Techniqms/Zhao Yongping(Harbin In— stitute of Technology,Harbin 150090),Hao Sainan(Hailun Road Administration,Hailun 152300,Heilon~iang Prov— ince),Yu Jiao,Liu Kong~un(Heilongiiang Institute of Engineering,Harbin 150050) Abstract:The paper has analyzed the basic principle and characteristics of some graph auto-producing methods in secondary development on Auto.M)through the example programs.The principle,method and characteristics of graph auto-producing in Aut~AD by ActiveX technique of VB are emphatically introduced.and the program design ideas and technological process are put forward. Key words:AutoCAD;auto-producing graph;program design ;ActiveX technique;graph operation 1 引 言 AutoCAD工程图形处理软件以其完善的绘图 功能、良好的用户界面、易学易用的特点,受到了 广大工程技术人员的普遍欢迎。一个重要原因就在 于它开放的结构体系,即用户可以根据自己的需 要,对其进行二次开发,最大限度地满足用户的特 殊 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 。 本文结合笔者几年来开发公路CAD应用软件 中的经验,阐述自动成图程序设计的几种常用方法 及其特点。 2.对AutoCAD 进行自动成图的二次开发常用方法 2.1 利用Autolisp或Visual Lisp语言编程实现自 动成图 Lisp(List processing language)是一种计算机 的表处理语言。是迄今人工智能学科领域应用最广 泛的一种程序语言。Autolisp语言是一种嵌入在 AutoCAD内部的 Lisp编程语言。是 Lisp语言和 Autolisp有机结合的产物。它是开发 AutoCAD 的 最主要的工具之一。利用Autolisp语言编程可以把 收稿日期:2oo5一O7—26 基金项目:黑龙江省科技攻关项目 (GZ04AI24) 第一作者简介:赵永平 (1962一),男。内蒙古人。教授,硕 士研究生,研究方向:道路工程。 一 个非常繁琐的图形绘制过程编入到一个命令下, 成为AutoCAD 的一个直接命令。应用时,只要在 AutoCAD环境的命令 (Command)提示符下输入 该命令,就可自动生成所要求的图形。Visual Lisp 是为加速Autolisp程序开发而设计的、支持Win— dows操作系统的软件工具,它使 Autolisp语言的 编程、修改、测试与调试变得更加容易。 2.2 利用ADS e语言编程实现自动成图 ADS(AutoCAD development system)即Auto— CAD 开发系统,是一种开发 AutoCAD应用程序的 高级e语言程序的环境。对于 AutoCAD 而言,应 用e语言来编写基于AD S的应用程序,与利用Au. tolisp语言编写程序的效果相同。用 c语言编写的 ADS程序,可用于 Rll版以上的 DOS版及 Win— dows版。ADS直接利用用户熟悉的各种流行的C 程序编译器。按约定的模式,将应用程序编译成可 执行文件在AutoCAD环境下运行。在AutoCAD环 境下运行一个编译好的ADS应用程序,与运行 Autolisp应用程序十分类似。 2.3 利用AutoCAD 脚本文件 (*.set)进行自动 成图 AutoCAD脚本文件 (*.set)即为一系列的绘 图指令的集合。AutoCAD 执行脚本文件时。将自 动对其中的所有指令从头至尾逐行执行。下面一段 维普资讯 http://www.cqvip.com 62 森 林 工 程 第 22卷 指令就是绘制一个矩形框,并标注一段汉字的脚本 文件。假定该文件名为draw.scr。注意扩展名必须 是$cr,否则不能执行。 Line 一 一 l0, 10 — 50,10 一 一 Line 一 一 50,30 一 Line ⋯ l0,30 一 Line 一 一 l0, l0 一 Text 一 15,5 — 3 — 0 一 黑龙江工程学院一 运行脚本文件时,只要在Command提示符下 键入script,即 Co mmand:~ript 然后根据提示进行操作,从选择文件框中选定 draw.$cr文件。则AutoCAD便会执行脚本文件中 的全部指令。 (注意,指令中的 “一”符号代表空 格,是必不可少的。) 上述脚本文件是纯文本文件。如果用文本文件 的编辑软件 (如记事本NotePad)直接编写脚本文 件,不仅极易出错,而且效率也非常低,没有实际 意义。在实际应用时,可通过用高级语言编程,由 计算机自动生成所要求的脚本文件。可以使用如 VB、C、VC、VF、FORTRAN等任何一种高级语 言,以建立顺序文件的方式建立脚本文件。 另外也可用高级语言编写 DXF图形交换文件 的方式实现自动成图功能。其原理与SCR文件格 式相同。生成DXF文件后,在AutoCAD下使用命 令DXFIN即可生成所需的图形文件。 2.4 利用VB进行AutoCAD二次开发 用VB进行 AutoCAD二次开发,是基于新的 ActiveX自动化界面技术 (ActiveX Automation In. terrace)。AutoCAD ActiveX技术使用户可以通过 AutoCAD暴露出来的信息,用其他应用程序 (如 VB)通过编程从AutoCAD内部或外部来控制和操 纵AutoCAD。可以用 VB语言编程,将 AutoCAD 当成 VB程序中的一个图形窗口,对其进行打开、 绘图、编辑、打印和关闭等操作。用VB进行Au。 toCAD二次开发,简单易学,功能强大,非常适宜 图形参数化设计。本文重点介绍利用 Ⅶ 进行自动 成图的程序设计原理及方法。 3 利用VB进行AutoCAD自动成图的基本原理 与技术支持 VB的计算处理功能是非常强大的,但其绘图 功能较弱。为解决这一问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 ,VB软件包提供了大 量扩展模块,称为ActiveX部件。它们是一些可重 复使用的程序代码和数据,它是由ActiveX技术所 创建的由一个或多个对象组成的。利用这些拓展部 件,VB具有非常强大的对各种应用软件进行操作 的附加功能,如VB可操控Excel、Word等。利用 其中的AutoCAD ActiveX部件VB可获取对 Auto CAD进行操作的控制句柄,直接控制AutoCAD的 一 系列操作,这样就使VB具有了AutoCAD的绘 图功能。 当然用VB语言编程进行 AutoCAD 二次开发, 首先要将 VB与 AutoCAD连接并运行起来,这需 要以下两个步骤: (1)在编写VB’代码前,在 VB编程环境中引 用 AutoCAD 对象库 (连接AutoCAD)。 (2)编写VB程序代码,创建AutoCAD 对象, 启动运行 AutoCAD。 在VB与 AutoCAD 连接后,就可以利用该 AutoCAD对象及其下级对象的属性和方法等实现 用VB语言在 AutoCAD环境中的图形绘制和编辑 等操作。 3.1 AutoCAD 应用程序对象库的引用 引用AutoCAD对象库须在 VB编程环境中从 “工程”菜单中选择 “引用”命令,打开引用对话 框,选中AutoCAD 2000 Type Library复选框。(本 方法只支持 AutoCAD 2000及以上版本。) 3.2 创建AutoCAD对象,启动运行AutoCAD 创建AutoCAD对象采用对象变量来完成。首 先声明变量类型,然后使用 Set语句将 AutoCAD 对象赋给变量 (启动运行AutoCAD )。如拟创建的 AutoCAD 应用程序对象 (application)的变量名为 AcadApp,则 Dim AcadApp AS AcadApplication’声明变量 AcadApp的类型为 AutoCAD 应用程序 Set AcadApp= GetObject(,”AutoCAD.A- pplication”)’赋值已启动的AutoCAD 或: Set AcadApp=CreateObject(”AutoCAD .A— pplication”)’启动运行AutoCAD AutoCAD对象的变量分几个层次。最高层次 为application(称为AutoCAD应用程序对象),以 下的层次才是具体的AutoCAD操作层面 (如Doc. uments等)。可以通过 AutoCAD应用程序对象 (Application)的属性或方法逐级向下访问其所有 下级对象。例如,本文4.2.2节中创建圆曲线的程 序段就是通过 AutoCAD应用程序对象变量AcadA— pp的ActiveDoeument属性访问ModelSpaee属性。 维普资讯 http://www.cqvip.com 第 1期 赵永平,等:基于VB的AutoCAD--次开发与图形自动生成技术 63 再通过ModelSpace对象的AddCircle方法,在模型 空间创建一个圆对象,并使用Set语句将圆对象引 用赋给变量circleObj(即按指定的圆心和半径绘出 圆曲线)。 程序设计时只要在需运行Aut~M3的窗体的 代码窗体中输入下面代码,窗体加载时,就可以启 动运行 AutoCAD。 Dim AeadApp As AcadApplication’在窗体代码声 明段定义AeadApp变量类型 Private Sub Form — Load()’加载窗体时,自动启 动AutoCAD On Error Resume Next Set AeadApp GetObject(,”AutoCAD.Applic. ation”)’已启动AutoCAD时执行本指令 If El1r Then Err.Clear Set AcadApp= CreateObject(”AutoCAD.A— pplieation”)’未启动运行AutoCAD时执行本指令 End If AcadApp.Visible=True’显示 AutoCAD界面 End Sub 注意,任何对 AutoCAD的程序操作均要预先 进行AutoCAD的连接与启动运行,即上面的程序 段必须在其他AutoCAD的操作之前预先执行。当 然该段程序也可设计为一个独立的子过程,如SUb Link — AutoCAD(),当触发某条件时运行该子过 程,启动AutoCAD。 4 VB进行AutoCAD自动成图的程序设计方法 4.1 图形文件的使用 AutoCAD图形的绘制、编辑均在其图形文件 中进行,因此首先应掌握用VB控制AutoCAD图 形文件的操作。 (1)创建新图形文件:在创建 AutoCAD对象 AcadApp,并启动运行 AutoCAD后,即可用下列 代码创建新图形文件 (以命令按钮 Commandl新 建): Private Sub Commandl Click() AcadApp.Documents.Add End Sub (2)打开已有图形文件:用~ ments对象的 Open方法,打开一个已有的图形文件。 Private Sub Commandl — C1ick() Dim MytileName AS String MyfileName=”C:\aead2000\Sample\ campus.dwg’’ If Dir(MyfileName)<> ””Then’Dir函 数用来检查该文件是否存在 AeadApp.Documents.Open MyfileName Else MsgBox(”文件”&MyfileName&”不 存在”) End If End SU b (3)保存图形文件:用活动文档对象 Active— Document的Save或SaveAs 方法,以当前文件名和 路径保存图形文件或另存。 AeadApp.ActiveDocument.Save AeadApp.ActiveDocument.SaveAs”C:\Us. er\Mydwg.dwg” (4)关闭图形文件用Close方法,以当前文件 名和路径保存修改后的图形文件,然后关文件。 AcadApp.ActiveDoeument.Close 用Close(False)方法,不保存图形文件的修 改,关闭文件。 AcadApp.ActiveDocument.Close(False) (5)退出AutOCAD用Quit方法。 AcadApp.Quit 4.2 图形操作命令的程序设计 AutoCAD的主要功能之一就是绘制各种二维 或三维图形,用 vB编程实现 AutoCAD绘图,就 是用Add方法在AutoCAD模型空间 (ModelSpace) 创建二维或三维图形对象,也可以在图纸空间 (PaperSpace)或块 (Block)中创建对象。如绘直 线、曲线、实心面、图案填充和光栅图像等Auto— CAD实体的创建。 4.2.1 创建直线 只要给出两个端点坐标,就可以很容易地创建 直线Line。用AddLine方法创建直线,应用该方法 时要给出直线的起点与终点的三维坐标。如拟创建 两点 (15,20,0)与 (50,75,0)之间的直线, 程序代码如下: Private Sub Commandl CIick() Dim lineObj AS AeadLine’申明变量 lineObj 为AutoCAD直线类型 Dim startPoint(0 To 2)AS Double,endPoint (0 To 2)AS Double startPoint(O)=15:startPoint(1)=20:st artPoint(2)=0 维普资讯 http://www.cqvip.com 64 森 林 工 程 第22卷 endPoint(0)=50:endPoint(1)=75:end. Point(2)=0 Set lineObj=AcadApp.ActiveDocument.MOd— elSpace. 一 End Sub 4.2.2 创建曲线 VB可以在 AutoCAD中创建圆、弧、椭圆和 样条曲线等多种曲线对象,所有这些曲线都是在当 前WCS中的XY平面创建的。 用AddCircle方法可以创建圆,应用该方法时 要给出圆心的 3D坐标与半径。如创建圆心为 (20,30,0),半径为5的圆的程序代码为: Private Sub Commandl — C1ick() Dim circleObj AS AcadCircle’申明变量 c cleObj为AutoCAD圆曲线类型 Dim centerPoint(O T0 2)AS Double,radius AS Double centerPoint(0)=20:centerPoint(1)=30: centerPoint(2)=0 radius 5 Set circleObj= AcadApp.ActiveDocument.Mo— delSpaee.AddCircle(centerPoint,radius)’创建圆 End Sub 用AddArc方法可以创建圆弧,应用该方法时 要给出圆心的3D坐标、半径、起始角及终止角 (逆时针方向,弧度)。语法如下所示: Set arcObj=AcadApp.ActiveDocument.Mode— ISpace.AddArc 一 (Center,Radius,StartAngle,EndAn. gle) 4.3 应用子过程进行图形操作的程序设计 如上所述,可以通过一段程序代码实现对某图 形进行一次操作 (如创建/绘制、编辑、删除等)。 但这种程序设计方法效率太低,不适合于大规模的 程序开发。较先进的编程方法是使用子过程 (子程 序),把大量的常用图形操作命令逐一编写为一个 个独立子过程,在需要时直接调用子过程,这样可 大大提高编程效率。而且为便于同一工程的其他窗 体调用,这些子过程最好存放在 VB的模块文件中 (如Tools.bas),使其成为通用指令。如前面例举 的在两点间绘直线的图形操作子过程如下: Subline — Se(xl,yl,x2。y2)’两点间绘直线。起 点 (xl,y1),终点 (x2,y2) Dim sp(2)As Double。ep(2)As Double sp(0)=xl:sp(1)=yl:sp(2)=0 ep(0)=x2:ep(1)=y2:ep(2)=0 Set lineObj= AcadApp.ActiveDocument.Mod. elSpaee.AddLine(sp,ep)’创建直线 End Sub 创建圆心为 (x,Y,0),半径为radius的圆的 子过程为: Sub circle — cr(X,y,radius)’绘圆曲线,给定圆 心坐标及半径。 Dim cp(0 To 2)As Double centerPoint(0)=x:centerPoint(1) Y: centerPoint(2)=0 Set circleObj=AcadApp.ActiveDocument.Mo— delSpace.AddCircle(centerPoint,radius)’创建圆 End Sub 按照以上方法可以编写出各种图形操作子过 程,作为工具库保存下来,并且根据需要不断进行 扩充、完善、积累,形成一套非常全面实用的图形 库。 5 结束语 对于以上几种不同的AutoCAD二次开发技术 的分析可知,对于计算机水平较高的专业人员,可 首选 ADS或 Lisp编程技术开发专业 CAD应用程 序,但 Lisp语言更适宜编写一些小型专用命令。 对于初学者来说,可应用自己所熟悉的计算机语 言。如VB、C语言等高级语言编制SCR格式脚本 文件或DXF格式图形交换文件的应用程序,则更 有事半功倍的效果。该法的特点是程序设计简单、 运行速度快,但需要把SCR或DXF格式文件转换 为图形文件 (DWG格式)。利用VB的ActiveX部 件开发AutoCAD 应用软件具有编程简易,功能强 大,且一次成图的特点,对于有一定 VB编程能力 的专业人员来说,是一种更为先进的手段,值得推 广。 【参 考 文 献】 [1]赵永平.公路路线CAD程序设计 [M].哈尔滨:东北大学出 版杜,2003. [2】北京希望电脑公司.VisualBasic编程高手 [M】.北京:希望电 子出版社。2000. [3]许金良。黄安录.道路与桥梁工程计算机绘图 [M].北京: 人民交通出版杜.2004. [责任编辑:董希斌】 维普资讯 http://www.cqvip.com
本文档为【基于VB的AutoCAD二次开发与图形自动生成技术】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_747935
暂无简介~
格式:pdf
大小:243KB
软件:PDF阅读器
页数:4
分类:金融/投资/证券
上传时间:2011-10-29
浏览量:45