- 1、本文档共87页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章AutoLISP和Visual_LISP
10.3.2 将Visual Basic环境下的语句改写为AutoLISP表达式 先分析Visual Basic环境下的语句: RetVal = object.AddLine(StartPoint,EndPoint) RetVal是返回值,object是AddLine的上一级对象,StartPoint和EndPoint是AddLine函数的参数。 在VLISP ActiveX环境下,模型空间是直线对象的上一级对象,模型空间对象作为AddLine的第一个参数,StartPoint和EndPoint作为AddLine 的其余参数。返回值赋给变量myline。 valx-3d-point是VLISP ActiveX的函数,其功能是将AutoLISP的3维点转换为ActiveX要求的变体类型的数据。 采用AutoLISP表达式为: (setq myline(vla-addline myms (vlax-3d-point (10 20)) (vlax-3d-point (80 30)))) 其中myms是模型空间对象的指针,获取该指针的表达式如下: (setq myacad (vlax-get-acad-object)) (setq mydoc(vla-get-ActiveDocument myacad)) (setq myms(vla-get-ModelSpace mydoc)) vlax-3d-point是VLISP ActiveX的函数,其功能是将AutoLISP的2维或3维点转换为ActiveX要求的变体类型的数据。 二者的转换关系见图10-9。 图10-9 Visual Basic环境下的语句与AutoLISP表达式的对应关系 ? 整数 实数 字符串 VLA对象 变体 安全数组 :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数据类型的关系 10.3.4 VLISP扩充的数据类型 为了实现ActiveX的功能,VLISP扩充了一些数据类型,这些数据类型是以前AutoLISP所没有的。 1. 变体(variant) 要想使用ActiveX方法,就必须遵守它的数据声明的规则。对于数量、高度、半径这些数据ActiveX允许AutoLISP使用整型或实型的数据,它可以自动将其转换为长整数或双精度的数据类型,见表10-1。对于起点、终点、圆心这些数据必须经过必要的转换,才能为ActiveX所用。 变体实质上是自定义的数据结构,它可以包括不同类型的数据。例如字符串、整数和数组都可以表示为变体。变体的主要特点是数据的类型和值存放在一起。这种自定义的特点,在向ActiveX服务器传递参数时非常有用,因为它使得基于任何语言的服务器都能理解这样的数据。 (1)创建变体 创建变体用vlax-make-variant函数,调用的格式如下: (vlax-make-variant [值] [类型]) 如果省略参数的值和类型,创建的变体将为vlax-vbEmpty类型(未初始化)。类型是指变体的类型,见表10-2。表示变体的类型时,可以用它的值,如整型用2,也可以用预定义的类型常量,如vlax-vbInteger,最好用预定义的类型常量,因为在后续的AutoCAD版本中类型的值可能会有变化。 该函数返
文档评论(0)