AutoLISPVisualLISP教程学习教程.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《AutoLISPVisualLISP教程学习教程.pptx》由会员分享,可在线阅读,更多相关《AutoLISPVisualLISP教程学习教程.pptx(87页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 ActiveX ActiveX AutomationAutomation是一种新的方法,通过它可以用编程的方式操作AutoCADAutoCAD图形。在许多操作AutoCADAutoCAD图形对象的实例中,ActiveXActiveX的速度比传统的AutoLISPAutoLISP函数要快。在某些情况下,例如在反应器回调函数中访问图形对象时,只能使用ActiveXActiveX。许多语言和环境可以使用ActiveXActiveX编程界面,如C+C+、Visual Visual BasicBasic、JavaJava和DelphiDelphi等。在AutoLISPAutoLISP中使用Active
2、XActiveX对象,其模型、属性和方法和在其他编程环境中使用的ActiveXActiveX对象完全相同。如果要在AutoLISP中使用ActiveX函数,必须首先调用vl-load-com函数来初始化ActiveX环境。vl-load-com函数首先检查是否加载了ActiveX支持的函数,如果已加载,该函数不做任何工作,否则将加载ActiveX和其他Visual LISP扩展部分的函数。本章所有实例的前提是已调用了vl-load-com函数。第1页/共87页10.1 AutoCAD10.1 AutoCAD对象模型 对象是ActiveXActiveX应用程序的主要组成部分。例如,直线、圆弧、多
3、义线和圆等都被称为图形对象。但在使用ActiveXActiveX时,以下AutoCADAutoCAD概念也被称为对象:样式设置对象,如线型(linetype)(linetype)、文本样式(style)(style)和尺寸样式(dimstyle)(dimstyle)等。组织结构对象,如图层(layer)(layer)和块(block)(block)等。图形显示对象,如视图(view)(view)和视口(viewport)(viewport)。图形的模型空间(modelspace)(modelspace)和图纸空间(paperspace)(paperspace)。甚至连图形和AutoCADAut
4、oCAD本身都被认为是对象。AutoCAD用层次结构来组织它的对象。结构的根是应用程序对象,即AutoCAD本身。该层次结构被称为AutoCAD的对象模型,见图10-1。第2页/共87页图10-1 AutoCAD对象模型图 第3页/共87页 AutoCADAutoCAD的所有对象都有一个或多个属性。属性用于描述对象。例如,圆具有半径、面积、线型等属性,通过半径、面积、线型等属性描述一个具体的圆。椭圆具有面积和线型属性,虽然没有半径这个属性,但可以用其长轴和短轴的比例来描述它。下一级对象也是其上级对象的属性。AutoCADAutoCAD的对象还包括方法,它们是为特定类型的对象所提供的操作。某些方
5、法可应用于大多数图形对象,例如,MirrorMirror(镜像)和MoveMove(平移)方法。而另一些方法,如OffsetOffset(等距线)只能应用到圆弧、圆、椭圆和直线等少数几种图形对象。AutoCAD通过集合将所有对象进行分类,例如,块集合是由 AutoCAD图形中的所有块定义组成的,而模型空间集合则包括模型空间中的所有的图形对象(圆、直线、多义线等)。第4页/共87页10.2.110.2.1访问AutoCADAutoCAD应用程序1.1.获取AutoCADAutoCAD应用程序 AutoCADAutoCAD应用程序即AutoCADAutoCAD本身,是AutoCADAutoCAD所
6、有对象的根对象,是访问所有AutoCADAutoCAD对象的起点。获取AutoCADAutoCAD应用程序对象,只能通过函数vlax-get-acad-objectvlax-get-acad-object,格式如下:(setq myacad(vlax-get-acad-object)该函数没有参数,返回指向AutoCAD应用程序的指针#,返回值的数据类型为VLA,即VLISP ActiveX对象。该表达式将指向AutoCAD应用程序的指针赋给了变量myacad。第5页/共87页2.2.了解AutoCADAutoCAD应用程序的属性和方法(vlax-dump-object vlax-dump-o
7、bject VLAVLA对象 TT),该函数的功能是列出指定VLAVLA对象的属性和方法,参数为VLAVLA对象,如果未设置T T,只列出指定VLAVLA对象的属性。例如(vlax-dump-object myacad t)(vlax-dump-object myacad t)返回;IAcadApplication:An instance of the AutoCAD application;IAcadApplication:An instance of the AutoCAD application;Property valuesProperty values:;ActiveDocument
8、=#;ActiveDocument=#;Application(RO)=#;Application(RO)=#;Caption(RO)=AutoCAD 2006 Drawing1.dwg;Caption(RO)=AutoCAD 2006 Drawing1.dwg;Documents(RO)=#;Documents(RO)=#;FullName(RO)=C:Program FilesAutoCAD 2006acad.exe;FullName(RO)=C:Program FilesAutoCAD 2006acad.exe;Height=730;Height=730;HWND(RO)=66224;H
9、WND(RO)=66224第6页/共87页;LocaleId(RO)=1033;LocaleId(RO)=1033;MenuBar(RO)=#;MenuBar(RO)=#;MenuGroups(RO)=#;MenuGroups(RO)=#;Name(RO)=AutoCAD;Name(RO)=AutoCAD;Path(RO)=C:Program FilesAutoCAD 2006;Path(RO)=C:Program FilesAutoCAD 2006;Preferences(RO)=#;Preferences(RO)=#;StatusId(RO)=.Indexed contents not s
10、hown.;StatusId(RO)=.Indexed contents not shown.;VBE(RO)=AutoCAD:Problem in loading VBA;VBE(RO)=AutoCAD:Problem in loading VBA;Version(RO)=16.2s(LMS Tech);Version(RO)=16.2s(LMS Tech);Visible=-1;Visible=-1;Width=1020;Width=1020;WindowLeft=2;WindowLeft=2;WindowState=1;WindowState=1;WindowTop=2;WindowTo
11、p=2第7页/共87页;Methods supported:Methods supported:;Eval(1);Eval(1);GetAcadState();GetAcadState();GetInterfaceObject(1);GetInterfaceObject(1);ListArx();ListArx();LoadArx(1);LoadArx(1);LoadDVB(1);LoadDVB(1);Quit();Quit();RunMacro(1);RunMacro(1);UnloadArx(1);UnloadArx(1);UnloadDVB(1);UnloadDVB(1);Update(
12、);Update();ZoomAll();ZoomAll();ZoomCenter(2);ZoomCenter(2);ZoomExtents();ZoomExtents();ZoomPickWindow();ZoomPickWindow();ZoomPrevious();ZoomPrevious();ZoomScaled(2);ZoomScaled(2);ZoomWindow(2);ZoomWindow(2)第8页/共87页 在Property Property valuesvalues(属性)部份列出了AutoCADAutoCAD应用程序具有ActiveDocumentActiveDocum
13、ent(活动的文档)、ApplicationApplication(应用程序的指针)、CaptionCaption(标题)、FullNameFullName(可执行文件名)等属性。其中标记为#VLA-OBJECT#的属性是VLAVLA对象。例如,ActiveDocumentActiveDocument(活动的文档)、Documents Documents(一般文档)、MenuBar MenuBar(菜单条)、MenuGroups MenuGroups(菜单组)和Preferences Preferences(设置)这些对象属于VLAVLA对象,它们可以被继续访问,引出下一级ActiveXAct
14、iveX对象,了解它们的属性和方法。带有标记(RO)(RO)的属性是只读的,不能被修改,例如属性Caption Caption(RO)(RO)=AutoCAD AutoCAD 2006 2006 Drawing1.dwgDrawing1.dwg,表示AutoCADAutoCAD应用程序的标题是AutoCAD AutoCAD 2006 2006 Drawing1.dwgDrawing1.dwg,它是只读的,不能被修改。在Methods supported(支持的方法)部份列出了可以对过AutoCAD应用程序施加Eval、GetAcadState、GetInterface Object等操作。第9
15、页/共87页10.2.210.2.2访问其他AutoCADAutoCAD对象 获取AutoCADAutoCAD应用程序这个根对象之后,沿着AutoCADAutoCAD对象模型图,就可以将其作为起点,逐级访问它的下一级VLAVLA对象。获取AutoCADAutoCAD应用程序之外的对象,是一个前缀为vla-get-vla-get-的函数,格式如下:(vla-get-property objectvla-get-property object)参数objectobject必须是VLAVLA对象,propertyproperty是objectobject的VLAVLA对象类型的属性。该属性可通过vl
16、ax-dump-objectvlax-dump-object函数获得。假定本作业依次绘制了一条起点为(10,20)(10,20)终点为(60,20)(60,20)的直线和圆心为(35,20)(35,20)半径为2525的一个圆。按照以下步骤,可以沿着AutoCADAutoCAD对象模型图所示的AutoCADAutoCAD应用程序活动文档模型空间图形对象的顺序,访问这条直线和这个圆。第10页/共87页1.1.获取AutoCADAutoCAD应用程序对象 (setq myacad(vlax-get-acad-object)(setq myacad(vlax-get-acad-object);返回A
17、utoCADAutoCAD应用程序的指针#VLA-OBJECT#00b5e51c,将其赋给变量myacad myacad。2.2.了解AutoCADAutoCAD应用程序的属性 (vlax-dump-object(vlax-dump-object myacad)myacad);返 回 的 属 性 信 息 中 有 以 下 一 行:;ActiveDocument=#。ActiveDocument是AutoCAD应用程序的属性之一,也是AutoCAD应用程序的下一级VLA对象。3.3.获取活动文档程序对象 (setq(setq mydoc(vla-get-ActiveDocument mydoc(v
18、la-get-ActiveDocument myacad)myacad);返回活动文档的 指 针#,将 其 赋 给 变 量mydoc。第11页/共87页4.4.了解活动文档的属性(vlax-dump-object mydoc)(vlax-dump-object mydoc)返回的属性信息中有以下一行:;ModelSpace;ModelSpace(RO)(RO)=#VLA-OBJECT#011c1e04。ModelSpaceModelSpace是活动文档的属性之一,也是活动文档的下一级VLAVLA对象。5.5.获取模型空间对象(setq myms(vla-get-ModelSpace mydoc
19、)(setq myms(vla-get-ModelSpace mydoc)返回模型空间的指针#VLA-OBJECT#011c1e04,将其赋给变量mymsmyms。6.6.了解活动文档的属性和方法(vlax-dump-object myms t)(vlax-dump-object myms t)返回的属性信息中有以下一行:;Count(RO)=2;Count(RO)=2。说明该模型空间当前有两个图形对象。返 回 的 方 法 信 息 中 有 Add3DfaceAdd3Dface、Add3DmeshAdd3Dmesh、Add3DpolyAdd3Dpoly、AddArcAddArc、AddAttri
20、buteAddAttribute、AddBoxAddBox、AddCircleAddCircle、ItemItem等许多方法。其中 Item是根据序号获取图形对象,第一个图形对象的序号为0。第12页/共87页7.7.获取模型空间的第一个图形对象(setq myline(vla-item myms 0)(setq myline(vla-item myms 0)返 回 第 一 个 图 形 对 象,即 这 条 直 线 的 指 针#VLA-OBJECT#IAcadLine 011b9e74,将其赋给变量mylinemyline。8.8.了解这条直线的属性和方法(vlax-dump-object myl
21、ine t)(vlax-dump-object myline t)返回有关这条直线属性的信息如下:;Property values:;Property values:;Angle(RO)=0.0;Angle(RO)=0.0;Application(RO)=#;Application(RO)=#;Delta(RO)=(50.0 0.0 0.0);Delta(RO)=(50.0 0.0 0.0);Document(RO)=#;Document(RO)=#;EndPoint=(60.0 20.0 0.0);EndPoint=(60.0 20.0 0.0)第13页/共87页;Handle(RO)=81
22、;Handle(RO)=81;HasExtensionDictionary(RO)=0;HasExtensionDictionary(RO)=0;Hyperlinks(RO)=#;Hyperlinks(RO)=#;Layer=0;Layer=0;Length(RO)=50.0;Length(RO)=50.0;Linetype=ByLayer;Linetype=ByLayer;LinetypeScale=1.0;LinetypeScale=1.0;Lineweight=-1;Lineweight=-1;Normal=(0.0 0.0 1.0);Normal=(0.0 0.0 1.0);Objec
23、tID(RO)=2129985160;ObjectID(RO)=2129985160;ObjectName(RO)=AcDbLine;ObjectName(RO)=AcDbLine;OwnerID(RO)=2129984760;OwnerID(RO)=2129984760;PlotStyleName=ByLayer;PlotStyleName=ByLayer;StartPoint=(10.0 20.0 0.0);StartPoint=(10.0 20.0 0.0);Thickness=0.0;Thickness=0.0;TrueColor=#;TrueColor=#;Visible=-1;Vi
24、sible=-1第14页/共87页 从以上有关这条直线属性的信息中,可以了解到这条直线与X X轴正方向夹角为0 0、三个坐标的增量分别是(50.0(50.0 0.0 0.0 0.0)0.0)、终点坐标是(60.0(60.0 20.0 20.0 0.0)0.0)、句柄是8181、所在图层的名字是00、长度为50.050.0、线型名是ByLayerByLayer、线型比例为1.01.0、线宽为-1-1(默认)、厚度方向为(0.0(0.0 0.0 0.0 1.0)1.0)、打印样式名是ByLayerByLayer、起点坐标是(10.0 20.0 0.0)(10.0 20.0 0.0)、厚度为 0.0
25、0.0。返回这条直线的有关方法的信息如下:;Methods supported:;Methods supported:;ArrayPolar(3);ArrayPolar(3);ArrayRectangular(6);ArrayRectangular(6);Copy();Copy();Delete();Delete();GetBoundingBox(2);GetBoundingBox(2);GetExtensionDictionary();GetExtensionDictionary()第15页/共87页;GetXData(3);GetXData(3);Highlight(1);Highligh
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AutoLISPVisualLISP 教程 学习
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内