



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用VB对AutoCAD进行二次开发|用VB对AutoCAD进行二次开发A utoCAD一直是CAD市场中的主流产品。随着AutoCAD的日益普及,在其上进行二次开发的工具也不断更新。从早期的Auto Lisp、ADS、 DCL到现在流行的 Object ARX、ActiveX Automation、Visual Lisp,均可十分方便地对AutoCAD进行二次开发。本文主要讨论关于运用Visual Basic对AutoCAD基于ActiveX Automation的二次开发技术。选用 ActiveX有两个原因,一是因为Visual Basic的普及性与易用性,二是采用这种方法进行二次开发可方便地实现与其它图形软件的接口,如与Solid Works实现实体造型与二维绘图的结合,以及根据用户的特殊需要开发出一定功能的软件。二、ActiveX Automation技术AutoCAD中的ActiveX Automation是微软公司ActiveX规范的具体应用。它通过基于ActiveX的自动化对象,为其他应用程序提供了访问AutoCAD内部功能的方法,是AutoCAD最新的开发接口。在运行时,AutoCAD与其他应用程序之间的关系是服务器与客户的关系,开发人员使用支持ActiveX规范的编程语言(如VB、Dephi等)能通过访问AutoCAD的对象模型,把AutoCAD的强大功能集成到应用程序中.AutoCAD的对象模型是一种树型结构模型,根为AutoCAD Application,AutoCAD中的所有对象都是AutoCAD Application的子对象。图1所示为AutoCAD对象模型的层次结构树,其中父对象与子对象之间的关系并不是对象继承关系,而是包含关系。图1 AutoCAD中ActiveX对象的总结构图三、ActiveX Automation的使用方法1. Application对象如果在计算机系统上安装了AutoCAD,则Windows会自动将其所有的信息注册到系统注册表里。那么在启动Visual Basic后,用户可以象调用VB自己的对象一样调用AutoCAD所提供的ActiveX。在编程、调试或运行时至少应该有一个AutoCAD副本在运行。可以通过以下的代码创建AutoCAD对象。Dim AcadApp as Object 定义一个对象On Error Resume NextSet AcadApp =GetObject(,AutoCAD.Application)If Err Then 如果没有一个AutoCAD副本在运行Err.ClearSet AcadApp =CreateObject(AutoCAD.Application)AcadApp.Visable =True 启动一个AutoCAD副本并设为可见If Err ThenMsgBox Err.Description 如果失败,给出错误提示Exit SubEnd IfEnd If 2. Preferences与Document对象与AutoCAD中的Preferences对话框的作用相同,通过Preferences对象可以读取或设置AutoCAD的一些基本设置。Preferences对象通过Application的Preferences属性返回。Dim AcadPref as ObjectSet AcadPref = AcadApp.Preferences比如,用户可通过Preferences对象进行如下的设置AcadPref.Cursorsize =100AcadPref.DisplayScreenMenu =acTrueAcadPref.DisplayScrollBars =Check1.valueDocument对象表示AutoCAD中中当前打开的文档,对AutoCAD中的任何其它操作都需用到Document对象,该对象可以通过ActiveDocument属性返回。Dim AcadDoc as ObjectSet AcadDoc = AcadApp.ActiveDocumentAutoDesk公司使用了集合的概念。在Document对象中有14个集合,具体如图1所示。与VB中的集合一样,这些集合都支持Add、Item方法与Count属性。例如Add方法可以向该集合中添加一个对象,Item(X)可以的得到该集合中的第X个对象,Count属性可以得到该集合中的对象的个数。在一个AutoCAD副本运行时,只能同时打开一个 Document。可以调用Document的New、Save方法以及Saved属性来打开或保存一个AutoCAD文档。If Not AcadDoc.Saved ThenAcadDoc.SaveElseSet AcadDoc =AcadDoc.New(acad)End If3. 创建、查询与修改AutoCAD图形对象在创建AutoCAD图形对象之前,首先必须定义并创建ModelSpace与PaperSpace集合对象。这两个对象可通过Document对象的ModelSpace属性与PaperSpace属性返回。Dim moSpace as Object,paSpace as ObjectSet moSpace = AcadDoc.ModelSpaceSet paSpace = AcadDoc.PaperSpace所有关于图形对象操作的方法与属性都包含在这两个对象中。创建文本对象:Dim moSpace as Object Set moSpace =AcadDoc.ModelSpaceDim Pnt(0 to 2) as Double 定义一个AutoCAD三维点Dim TextH as Double 定义字符高度Dim Textstr as String 定义字符变量Dim TextObj as Object 定义一个AutoCAD文本对象Pnt(0) =2:Pnt(1) =4: Pnt(2) =0 初始化坐标TextH =1TexrStr =“This is a test”Set TextObj=moSpace.AddText(TextStr,Pnt,TextH) 创建文本对象查询与修改图形对象有时用户不但要创建图形对象,更多的情况是修改或控制已存在的对象,这就需要对已创建的对象进行查询,从而得到所要操作的对象。可以通过属性来得到图形对象的个数。Dim noMSOBJ as String,noPSOBJ as StringNoMSOBJ=Str(moSpace.Count)NoPSOBJ=Str(paSpace.Count)MsgBox Object:Mspace=& noMSOBJ & ;Pspace=& noPSOBJ用户也可以通过For.Loop语句来遍历所有的图形对象或是通过方法来得到某个具体的对象。下面的代码说明了如何来修改当前中的对象,如果对象为一直线,则修改其颜色为红色,否则不做任何改动。Dim ent as objectFor each ent in mospaceIf ent.entityname= acdline thenEnt.color=acredEnt.updateEnd If Next需要注意:如果对图形对象做了改动,则需要调用 Update方法在AutoCAD窗口中重画该对象。同样,可以得到Model Space中最后生成的图形对象。Dim ent as objectSet ent = moSpace.Item(moSpace.Count-1)4. 非图形对象除了ModelSpace与PaperSpace集合,Document对象中另外12个集合中的对象都是非图形对象,如Layers集合包含了AutoCAD当前文档中所有的层,而Linetypes和TextStyles则分别为线型对象与字符型对象的集合。创建层可以调用Layers集合的Add方法创建层。以下代码创建一个名称为LAYER1,颜色为洋红色的层。Dim layerobj as objectSet layerobj =acadDoc.Layers.Add(LAYER1)Layerobj.Colors=acMagenta视口以下的代码使用ActiveSpace属性设置一个活动的Space,然后调用Viewports集合的Add方法创建一个名为NEW_VIEWPORT的视口。当视口建立后,Split方法可使原视口与新视口呈上下排列,最后,ActiveViewport属性使新视口成为活动视口。Dim vport as objectAcadDoc.ActiveSpace=acModelSpaceSet vport=AcadDoc.Viewports.Add(NEW_VIEWPORT)Vport.Split acViewport2VerticalSet AcadDoc.ActiveViewport=vport 5.用户输入Document对象中还包含有一个很重要的子对象Utility,Utility对象提供了一些其它的实用功能,如用户输入控制(user-input)。user-input方法可以在AutoCAD的命令提示行中提示用户输入,并显示相应的输入数据类型。这种类型的输入对于屏幕坐标系,实体选择,短字符与数字的输入有着极为重要的应用。以下的代码定义了Utility对象。Dim AcadUtil as objectSet AcadUtil =AcadDoc.Utility每个user-input方法都在AutoCAD的命令行里给出了适当的输入提示并返回相应的数据类型。如:GetString返回一个字符串,GetPoint返回一个点(三个双精度数值)。也可以调用InitializeUserInput方法进行更高级的输入设置。用户可以定义一个变量:NL=Chr(13)+Chr(10),将这个变量用于输入提示的开始处。四、结束语AutoCAD 的ActiveX Automation技术的出现,标志着AutoCAD 的二次开发技术取得了历史性转折。首先,它首
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校安全培训给学生
- 住培岗前培训
- 肿瘤患者疗后监测体系构建
- 子宫内膜息肉超声诊断与应用
- 【MOOC答案】《人工智能基础》(国防科技大学)章节作业慕课答案
- 肿瘤病人化疗后便秘护理
- 教培招生培训
- 主题教育动员部署会
- 外科护理工作讲解
- 2025年虚拟现实在地理信息系统教育中的应用技术成果鉴定报告
- AHU维修与保养记录
- CMBS尽调清单目录
- 机械原理课程设计-自动打印机设计说明书
- 建设工程消防设计审查申报表
- 2020新版个人征信报告模板
- FBI教你破解身体语言(完整版)(54页)ppt课件
- 内科护理学消化系统试习题及答案
- 华北电力大学-任建文-电力系统PPT(第1章)
- 《文殊真实名经》
- 对敏视达雷达回波进行基于PHIDP的dBZ和ZDR订正_2014年4月5日~18日
- 苏教版五年级数学下册-复习知识点整理资料(共9页)
评论
0/150
提交评论