欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    AutoLISPVisualLISP教程学习教程.pptx

    • 资源ID:87174637       资源大小:576.02KB        全文页数:87页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    AutoLISPVisualLISP教程学习教程.pptx

    ActiveX ActiveX AutomationAutomation是一种新的方法,通过它可以用编程的方式操作AutoCADAutoCAD图形。在许多操作AutoCADAutoCAD图形对象的实例中,ActiveXActiveX的速度比传统的AutoLISPAutoLISP函数要快。在某些情况下,例如在反应器回调函数中访问图形对象时,只能使用ActiveXActiveX。许多语言和环境可以使用ActiveXActiveX编程界面,如C+C+、Visual Visual BasicBasic、JavaJava和DelphiDelphi等。在AutoLISPAutoLISP中使用ActiveXActiveX对象,其模型、属性和方法和在其他编程环境中使用的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应用程序的主要组成部分。例如,直线、圆弧、多义线和圆等都被称为图形对象。但在使用ActiveXActiveX时,以下AutoCADAutoCAD概念也被称为对象:样式设置对象,如线型(linetype)(linetype)、文本样式(style)(style)和尺寸样式(dimstyle)(dimstyle)等。组织结构对象,如图层(layer)(layer)和块(block)(block)等。图形显示对象,如视图(view)(view)和视口(viewport)(viewport)。图形的模型空间(modelspace)(modelspace)和图纸空间(paperspace)(paperspace)。甚至连图形和AutoCADAutoCAD本身都被认为是对象。AutoCAD用层次结构来组织它的对象。结构的根是应用程序对象,即AutoCAD本身。该层次结构被称为AutoCAD的对象模型,见图10-1。第2页/共87页图10-1 AutoCAD对象模型图 第3页/共87页 AutoCADAutoCAD的所有对象都有一个或多个属性。属性用于描述对象。例如,圆具有半径、面积、线型等属性,通过半径、面积、线型等属性描述一个具体的圆。椭圆具有面积和线型属性,虽然没有半径这个属性,但可以用其长轴和短轴的比例来描述它。下一级对象也是其上级对象的属性。AutoCADAutoCAD的对象还包括方法,它们是为特定类型的对象所提供的操作。某些方法可应用于大多数图形对象,例如,MirrorMirror(镜像)和MoveMove(平移)方法。而另一些方法,如OffsetOffset(等距线)只能应用到圆弧、圆、椭圆和直线等少数几种图形对象。AutoCAD通过集合将所有对象进行分类,例如,块集合是由 AutoCAD图形中的所有块定义组成的,而模型空间集合则包括模型空间中的所有的图形对象(圆、直线、多义线等)。第4页/共87页10.2.110.2.1访问AutoCADAutoCAD应用程序1.1.获取AutoCADAutoCAD应用程序 AutoCADAutoCAD应用程序即AutoCADAutoCAD本身,是AutoCADAutoCAD所有对象的根对象,是访问所有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-object 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=#;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;HWND(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 shown.;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;WindowTop=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();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应用程序具有ActiveDocumentActiveDocument(活动的文档)、ApplicationApplication(应用程序的指针)、CaptionCaption(标题)、FullNameFullName(可执行文件名)等属性。其中标记为#VLA-OBJECT#的属性是VLAVLA对象。例如,ActiveDocumentActiveDocument(活动的文档)、Documents Documents(一般文档)、MenuBar MenuBar(菜单条)、MenuGroups MenuGroups(菜单组)和Preferences Preferences(设置)这些对象属于VLAVLA对象,它们可以被继续访问,引出下一级ActiveXActiveX对象,了解它们的属性和方法。带有标记(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页/共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对象类型的属性。该属性可通过vlax-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);返回AutoCADAutoCAD应用程序的指针#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(vla-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)(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、AddAttributeAddAttribute、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 myline 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;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);ObjectID(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;Visible=-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.00.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);Highlight(1);IntersectWith(2);IntersectWith(2);Mirror(2);Mirror(2);Mirror3D(3);Mirror3D(3);Move(2);Move(2);Offset(1);Offset(1);Rotate(2);Rotate(2);Rotate3D(3);Rotate3D(3);ScaleEntity(2);ScaleEntity(2);SetXData(2);SetXData(2);TransformBy(1);TransformBy(1);Update();Update()第16页/共87页 从以上有关这个圆有关方法的信息中,可以了解到对这个圆可以施加ArrayPolarArrayPolar(环形阵列)、ArrayRectangularArrayRectangular(矩形阵列)、CopyCopy(复制)、DeleteDelete(删除)、GetBoundingBoxGetBoundingBox (包容盒)、GetExtensionDictionaryGetExtensionDictionary (获取延长方向)、GetXDataGetXData (获取扩展数据)、HighlightHighlight (高亮显示)、IntersectWithIntersectWith(交点)、MirrorMirror(镜像)、Mirror3DMirror3D(三维镜像)、MoveMove(平移)、OffsetOffset(等距)、RotateRotate(旋转)、Rotate3DRotate3D(三维旋转)、ScaleEntityScaleEntity(比例缩 放)、SetXDataSetXData(设 置 扩 展 数 据)、TransformByTransformBy(变 换)、UpdateUpdate(更新)这些操作。第17页/共87页9.9.获取模型空间的第二个图形对象 (setq mycircle(vla-item myms 1)(setq mycircle(vla-item myms 1)返回第二个图形对象,即圆的指针#VLA-OBJECT#011bed74,将其赋给变量mylinemyline。10.10.了解这个圆的属性和方法(vlax-dump-object mycircle t)(vlax-dump-object mycircle t)返回有关这个圆的属性信息中大部分与直线相同,不同的部份有AreaArea(面积)=1963.51963.5、CenterCenter(圆心)=(35.0(35.0 20.0 20.0 0.0)0.0)、CircumferenceCircumference(周长)=157.08157.08、DiameterDiameter(直径)=50.050.0和RadiusRadius(半径)=25.0=25.0。返回有关这个圆的方法信息中与直线完全相同。第18页/共87页10.2.3 10.2.3 使用检验工具了解AutoCADAutoCAD对象的属性 上一节介绍了通过函数了解AutoCADAutoCAD对象和这些对象的属性与方法,本节介绍利用检验工具了解AutoCADAutoCAD对象的属性。按照上一节的顺序用检验工具了解AutoCADAutoCAD应用程序、活动文档、模型空间和图形对象的步骤如下:1.1.获取AutoCADAutoCAD应用程序对象 (setq myacad(vlax-get-acad-object)(setq myacad(vlax-get-acad-object)返回AutoCADAutoCAD应用程序的指针#VLA-OBJECT#IAcadApplication 00b5e51c,将其赋给变量myacad myacad。第19页/共87页2.2.了解AutoCADAutoCAD应用程序对象 要了解VLA对象的属性,首先选取择指向该对象的变量。选取myacad,然后单击按钮,将弹出图10-2 所示AutoCAD应用程序的检验窗口。图10-2 AutoCAD应用程序的检验窗口第20页/共87页3.3.了解活动文档的属性 双击上图所示AutoCAD应用程序的检验窗口的Active Document属性,将弹出图10-3所示活动文档的检验窗口。图10-3 活动文档的检验窗口第21页/共87页4.4.了解模型空间的属性 双击活动文档的检验窗口的ModelSpace属性,将弹出图10-4所示模型空间检验窗口。在该窗口可以看到属性Count的值为2,说明在模型空间当前有两个图形对象。图10-4 模型空间检验窗口第22页/共87页5.5.了解直线的属性 由于模型空间的检验窗口没有直线的VLAVLA对象,所以必须以下表达式获取这条直线的VLAVLA对象。(setq myacad(vlax-get-acad-object)(setq myacad(vlax-get-acad-object)(setq mydoc(vla-get-ActiveDocument myacad)(setq mydoc(vla-get-ActiveDocument myacad)(setq myms(vla-get-ModelSpace mydoc)(setq myms(vla-get-ModelSpace mydoc)(setq myline(vla-item myms 0)(setq myline(vla-item myms 0)以上表达式获取了这条直线的VLA对象的指针,并将其赋给了myline变量。选取myline,然后单击按钮 ,将弹出图10-5所示这条直线的检验窗口。第23页/共87页图10-5 直线的检验窗口 第24页/共87页6.6.了解圆的属性 同样的理由,必须以下表达式获取这个圆的VLAVLA对象。(setq mycircle(vla-item myms 1)(setq mycircle(vla-item myms 1)图10-6 圆的检验窗口 以上表达式获取了这个圆的对象的指针,并将其赋给了mycircle变量。选取mycircle,然后单击按钮 ,将弹出图10-6所示这个圆的检验窗口。不难看出,用检验窗口显示有关VLA对象的属性,与10.2.1节通过vlax-dump-object函数显示有关VLA对象的属性基本相同。第25页/共87页10.2.410.2.4通过HelpHelp功能了解AutoCADAutoCAD对象通过HelpHelp功能了解AutoCADAutoCAD对象的步骤是:在VLISPVLISP环境下,按功能键F1F1;在随后显示的AutoCAD AutoCAD 2006 2006 Help:Developer Help:Developer DocumentationDocumentation对话框的目录选项卡内双击 ;在展开的目录树上双击 ;在ObjectsObjects目录下双击AutoCADAutoCAD图形对象,例如双击 ,即可显示图10107 7所示有关直线对象方法和属性的信息。第26页/共87页图107有关直线对象方法和属性的帮助信息 第27页/共87页 以上帮助信息告诉用户创建一条直线用AddlineAddline方法,编辑直线用第一列显示的各种方法,第二列显示了直线的全部属性。至此已介绍了了解AutoCADAutoCAD对象的属性通过帮助功能显示的不难看出,用检验窗口显示有关VLAVLA对象的属性,与10.210.2节通过vlax-dump-objectvlax-dump-object函数显示有关VLAVLA对象的属性基本相同。10.3 10.3 在Visual LISPVisual LISP函数中使用ActiveXActiveX方法10.3.110.3.1通过HelpHelp功能详细了解AutoCADAutoCAD图形对象的方法 上一节的帮助功能和10.210.2节的vlax-dump-objectvlax-dump-object函数都提供了AutoCADAutoCAD图形对象的方法,但这只是一些方法的名称,下面以了解创建一条直线的AddlineAddline方法为例,介绍详细了解AutoCADAutoCAD图形对象的方法。双击图10107 7所示有关直线对象帮助信息中的蓝色带下划线的超文本AddlineAddline,显示有关创建直线的语法,见图10108 8。第28页/共87页图108创建直线的语法 第29页/共87页 对于Visual Visual LISPLISP的用户来说,该语法很陌生,因为它是为Visual Visual BasicBasic用户定义的。在Visual Visual BasicBasic环境下,AddLineAddLine的语法定义如下:RetVal=object.AddLine(StarPoint,EndPoint)RetVal=object.AddLine(StarPoint,EndPoint)其中objectobject是模型空间、图纸空间或图块对象的集合,StarPointStarPoint、EndPointEndPoint是VariantVariant(3 3个双精度类型元素组成的变体)的数据类型,返回值是直线对象。因此确定Visual Visual LISPLISP函数的创建直线的方法还需要做以下两件事:(1 1)将Visual BasicVisual Basic环境下的语句改写为AutoLISPAutoLISP表达式。(2)将AutoLISP的数据转换为ActiveX所需类型的数据。第30页/共87页10.3.2 10.3.2 将Visual BasicVisual Basic环境下的语句改写为AutoLISPAutoLISP表达式 先分析Visual BasicVisual Basic环境下的语句:RetVal=object.AddLine(StartPoint,EndPoint)RetVal=object.AddLine(StartPoint,EndPoint)RetValRetVal是返回值,objectobject是AddLineAddLine的上一级对象,StartPointStartPoint和EndPointEndPoint是AddLineAddLine函数的参数。在VLISP ActiveX环境下,模型空间是直线对象的上一级对象,模型空间对象作为AddLine的第一个参数,StartPoint和EndPoint作为AddLine 的其余参数。返回值赋给变量myline。valx-3d-point是VLISP ActiveX的函数,其功能是将AutoLISP的3维点转换为ActiveX要求的变体类型的数据。第31页/共87页采用AutoLISPAutoLISP表达式为:(setq(setq myline(vla-addline myline(vla-addline myms myms(vlax-3d-point(vlax-3d-point(10(10 20)20)(vlax-3d-(vlax-3d-point(80 30)point(80 30)其中mymsmyms是模型空间对象的指针,获取该指针的表达式如下:(setq myacad(vlax-get-acad-object)(setq myacad(vlax-get-acad-object)(setq mydoc(vla-get-ActiveDocument myacad)(setq mydoc(vla-get-ActiveDocument myacad)(setq myms(vla-get-ModelSpace mydoc)(setq myms(vla-get-ModelSpace mydoc)vlax-3d-pointvlax-3d-point是VLISP VLISP ActiveXActiveX的函数,其功能是将AutoLISPAutoLISP的2 2维或3 3维点转换为ActiveXActiveX要求的变体类型的数据。二者的转换关系见图10-9。图10-9 Visual Basic环境下的语句与AutoLISP表达式的对应关系 第32页/共87页 整数 实数 字符串 VLAVLA对象 变体 安全数组 :vlax_true:vlax_false:vlax_true:vlax_false单字节字符 +布尔类型 +整数 +长整数 +单精度实数 +双精度实数 +对象 +字符串 +变体 +数组 +10.3.3 ActiveX能够自动进行转换的AutoLISP的一些数据类型 AutoLISP和ActiveX有些数据类型的定义是类似的,当ActiveX遇到这样类型的数据时,能够自动进行转换。表10-1所示为ActiveX要求的数据类型和Auto LISP数据类型的关系表。表的第1列为ActiveX要求的数据类型,表的第1行为AutoLISP的数据类型。如果表格的交叉处有加号(+),表示这样的ActiveX数据类型时可以直接使用相应的AutoLISP数据类型。表10-1 AutoLISP数据类型和ActiveX数据类型的关系 第33页/共87页10.3.4 VLISP10.3.4 VLISP扩充的数据类型 为了实现ActiveXActiveX的功能,VLISPVLISP扩充了一些数据类型,这些数据类型是以前AutoLISPAutoLISP所没有的。1.1.变体(variantvariant)要想使用ActiveXActiveX方法,就必须遵守它的数据声明的规则。对于数量、高度、半径这些数据ActiveXActiveX允许AutoLISPAutoLISP使用整型或实型的数据,它可以自动将其转换为长整数或双精度的数据类型,见表10-110-1。对于起点、终点、圆心这些数据必须经过必要的转换,才能为ActiveXActiveX所用。变体实质上是自定义的数据结构,它可以包括不同类型的数据。例如字符串、整数和数组都可以表示为变体。变体的主要特点是数据的类型和值存放在一起。这种自定义的特点,在向ActiveXActiveX服务器传递参数时非常有用,因为它使得基于任何语言的服务器都能理解这样的数据。第34页/共87页(1 1)创建变体 创建变体用vlax-make-variantvlax-make-variant函数,调用的格式如下:(vlax-make-variant(vlax-make-variant 值 类型)如果省略参数的值和类型,创建的变体将为vlax-vbEmptyvlax-vbEmpty类型(未初始化)。类型是指变体的类型,见表10-210-2。表示变体的类型时,可以用它的值,如整型用2 2,也可以用预定义的类型常量,如vlax-vbIntegervlax-vbInteger,最好用预定义的类型常量,因为在后续的AutoCADAutoCAD版本中类型的值可能会有变化。该函数返回的值为所创建的变体。如果省略参数类型,该函数根据LISP数据值的类型来确定默认的ActiveX数据类型,见表10-3。第35页/共87页类型 值 含义Vlax-vbEmpty Vlax-vbEmpty 预定义的变体0 0 未初始化(默认值)Vlax-vbNull 1 Vlax-vbNull 1 空数据Vlax-vbInteger 2 Vlax-vbInteger 2 整数型Vlax-vbLong 3 Vlax-vbLong 3 长整数型Vlax-vbSingle 4 Vlax-vbSingle 4 单精度浮点数Vlax-vbDouble 5 Vlax-vbDouble 5 双精度浮点数Vlax-vbString 8 Vlax-vbString 8 字符串Vlax-vbObject 9 Vlax-vbObject 9 对象Vlax-vbBoolean 11 Vlax-vbBoolean 11 布尔值Vlax-vbArray 8192 Vlax-vbArray 8192 数组表10-2 10-2 预定义的变体类型及其含义第36页/共87页LISPLISP数据值的类型 默认的数据类型Nil vlax-vbEmptyNil vlax-vbEmptyvlax-null vlax-vbNullvlax-null vlax-vbNullInteger vlax-vbLongInteger vlax-vbLongReal vlax-vbDoubleReal vlax-vbDoubleString vlax-vbStringString vlax-vbStringVLA-object vlax-vbObjectVLA-object vlax-vbObjectvlax-truevlax-true、vlax-false vlax-vbBooleanvlax-false vlax-vbBooleanVariant Variant 与初始值的类型相同vlax-make-safearray vlax-vbArrayvlax-make-safearray vlax-vbArray表10-3 LISP数据类型与默认的ActiveX数据类型对照表 第37页/共87页以下是一些创建变体的表达式:(setq(setq varnil(vlax-make-variant)varnil(vlax-make-variant);返回#variant#0,创建了未初始化的变体,变体的类型为0 0即vlax-vbEmptyvlax-vbEmpty,值为nilnil。(setq varint(vlax-make-variant 50 vlax-vbInteger)(setq varint(vlax-make-variant 50 vlax-vbInteger);返回#variant#50,创建了整型变体,变体的类型为2 2即vlax-vlax-vbIntegervbInteger,值为5050。(setq(setq varlng(vlax-make-variant varlng(vla

    注意事项

    本文(AutoLISPVisualLISP教程学习教程.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开