欢迎来到天天文库
浏览记录
ID:46167121
大小:1.08 MB
页数:87页
时间:2019-11-21
《在AutoLISP中使用ActiveX对象》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章在AutoLISP中使用ActiveX对象ActiveXAutomation是一种新的方法,通过它可以用编程的方式操作AutoCAD图形。在许多操作AutoCAD图形对象的实例中,ActiveX的速度比传统的AutoLISP函数要快。在某些情况下,例如在反应器回调函数中访问图形对象时,只能使用ActiveX。许多语言和环境可以使用ActiveX编程界面,如C++、VisualBasic、Java和Delphi等。在AutoLISP中使用ActiveX对象,其模型、属性和方法和在其他编程环境中使用的ActiveX对象完全相同。如果要在AutoLISP中使用ActiveX函数,必须首
2、先调用vl-load-com函数来初始化ActiveX环境。vl-load-com函数首先检查是否加载了ActiveX支持的函数,如果已加载,该函数不做任何工作,否则将加载ActiveX和其他VisualLISP扩展部分的函数。本章所有实例的前提是已调用了vl-load-com函数。10.1AutoCAD对象模型对象是ActiveX应用程序的主要组成部分。例如,直线、圆弧、多义线和圆等都被称为图形对象。但在使用ActiveX时,以下AutoCAD概念也被称为对象:样式设置对象,如线型(linetype)、文本样式(style)和尺寸样式(dimstyle)等。组织结构对象,如图层(l
3、ayer)和块(block)等。图形显示对象,如视图(view)和视口(viewport)。图形的模型空间(modelspace)和图纸空间(paperspace)。甚至连图形和AutoCAD本身都被认为是对象。AutoCAD用层次结构来组织它的对象。结构的根是应用程序对象,即AutoCAD本身。该层次结构被称为AutoCAD的对象模型,见图10-1。图10-1AutoCAD对象模型图AutoCAD的所有对象都有一个或多个属性。属性用于描述对象。例如,圆具有半径、面积、线型等属性,通过半径、面积、线型等属性描述一个具体的圆。椭圆具有面积和线型属性,虽然没有半径这个属性,但可以用其长轴
4、和短轴的比例来描述它。下一级对象也是其上级对象的属性。AutoCAD的对象还包括方法,它们是为特定类型的对象所提供的操作。某些方法可应用于大多数图形对象,例如,Mirror(镜像)和Move(平移)方法。而另一些方法,如Offset(等距线)只能应用到圆弧、圆、椭圆和直线等少数几种图形对象。AutoCAD通过集合将所有对象进行分类,例如,块集合是由AutoCAD图形中的所有块定义组成的,而模型空间集合则包括模型空间中的所有的图形对象(圆、直线、多义线等)。10.2.1访问AutoCAD应用程序1.获取AutoCAD应用程序AutoCAD应用程序即AutoCAD本身,是AutoCAD所有对
5、象的根对象,是访问所有AutoCAD对象的起点。获取AutoCAD应用程序对象,只能通过函数vlax-get-acad-object,格式如下:(setqmyacad(vlax-get-acad-object))该函数没有参数,返回指向AutoCAD应用程序的指针#,返回值的数据类型为VLA,即VLISPActiveX对象。该表达式将指向AutoCAD应用程序的指针赋给了变量myacad。2.了解AutoCAD应用程序的属性和方法(vlax-dump-objectVLA对象[T]),该函数的功能是列出指定VLA对象的
6、属性和方法,参数为VLA对象,如果未设置T,只列出指定VLA对象的属性。例如(vlax-dump-objectmyacadt)返回;IAcadApplication:AninstanceoftheAutoCADapplication;Propertyvalues:;ActiveDocument=#;Application(RO)=#;Caption(RO)="AutoCAD2006–[Drawing1.dwg]";Documents(RO)=#7、-OBJECTIAcadDocuments011b9ba0>;FullName(RO)="C:\ProgramFiles\AutoCAD2006\acad.exe";Height=730;HWND(RO)=66224;LocaleId(RO)=1033;MenuBar(RO)=#;MenuGroups(RO)=#
7、-OBJECTIAcadDocuments011b9ba0>;FullName(RO)="C:\ProgramFiles\AutoCAD2006\acad.exe";Height=730;HWND(RO)=66224;LocaleId(RO)=1033;MenuBar(RO)=#;MenuGroups(RO)=#
此文档下载收益归作者所有