欢迎来到天天文库
浏览记录
ID:37781875
大小:31.50 KB
页数:4页
时间:2019-05-31
《用VB对AutoCAD进行二次开发》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、用VB对AutoCAD进行二次开发
2、用VB对AutoCAD进行二次开发AutoCAD一直是CAD市场中的主流产品。随着AutoCAD的日益普及,在其上进行二次开发的工具也不断更新。从早期的AutoLisp、ADS、DCL到现在流行的ObjectARX、ActiveXAutomation、VisualLisp,均可十分方便地对AutoCAD进行二次开发。本文主要讨论关于运用VisualBasic对AutoCAD基于ActiveXAutomation的二次开发技术。选用ActiveX有两个原因,一是因为VisualBasic的
3、普及性与易用性,二是采用这种方法进行二次开发可方便地实现与其它图形软件的接口,如与SolidWorks实现实体造型与二维绘图的结合,以及根据用户的特殊需要开发出一定功能的软件。 二、ActiveXAutomation技术 AutoCAD中的ActiveXAutomation是微软公司ActiveX规范的具体应用。它通过基于ActiveX的自动化对象,为其他应用程序提供了访问AutoCAD内部功能的方法,是AutoCAD最新的开发接口。在运行时,AutoCAD与其他应用程序之间的关系是服务器与客户的关系,开发人员使用支持
4、ActiveX规范的编程语言(如VB、Dephi等)能通过访问AutoCAD的对象模型,把AutoCAD的强大功能集成到应用程序中.AutoCAD的对象模型是一种树型结构模型,根为"AutoCADApplication",AutoCAD中的所有对象都是AutoCADApplication的子对象。图1所示为AutoCAD对象模型的层次结构树,其中父对象与子对象之间的关系并不是对象继承关系,而是包含关系。 图1AutoCAD中ActiveX对象的总结构图 三、ActiveXAutomation的使用方法 1.Appli
5、cation对象 如果在计算机系统上安装了AutoCAD,则Windows会自动将其所有的信息注册到系统注册表里。那么在启动VisualBasic后,用户可以象调用VB自己的对象一样调用AutoCAD所提供的ActiveX。 在编程、调试或运行时至少应该有一个AutoCAD副本在运行。可以通过以下的代码创建AutoCAD对象。 DimAcadAppasObject’定义一个对象 OnErrorResumeNext SetAcadApp=GetObject(,"AutoCAD.Application") IfEr
6、rThen’如果没有一个AutoCAD副本在运行 Err.Clear SetAcadApp=CreateObject("AutoCAD.Application") AcadApp.Visable=True’启动一个AutoCAD副本并设为可见 IfErrThen MsgBoxErr.Description’如果失败,给出错误提示 ExitSub EndIf EndIf 2.Preferences与Document对象 与AutoCAD中的Preferences对话框的作用相同,通过Preferences
7、对象可以读取或设置AutoCAD的一些基本设置。Preferences对象通过Application的Preferences属性返回。 DimAcadPrefasObject SetAcadPref=AcadApp.Preferences 比如,用户可通过Preferences对象进行如下的设置 AcadPref.Cursorsize=100 AcadPref.DisplayScreenMenu=acTrue AcadPref.DisplayScrollBars=Check1.value Document对象
8、表示AutoCAD中中当前打开的文档,对AutoCAD中的任何其它操作都需用到Document对象,该对象可以通过ActiveDocument属性返回。 DimAcadDocasObject SetAcadDoc=AcadApp.ActiveDocument AutoDesk公司使用了集合的概念。在Document对象中有14个集合,具体如图1所示。与VB中的集合一样,这些集合都支持Add、Item方法与Count属性。例如Add方法可以向该集合中添加一个对象,Item(X)可以的得到该集合中的第X个对象,Count
9、属性可以得到该集合中的对象的个数。 在一个AutoCAD副本运行时,只能同时打开一个Document。可以调用Document的New、Save方法以及Saved属性来打开或保存一个AutoCAD文档。 IfNotAcadDoc.SavedThen AcadDoc.Save Else SetA
此文档下载收益归作者所有