说明:
Visual Lisp属性的获取、赋值和方法的执行有多种形式。然而对于初学者来说一次性就要全部掌握显然是没有必要的,有时候每种方法都是通用的功能都一样我们就没有必要把所有方法都记住。我们只需要掌握常用的通用性最强的即可。这里方法和属性只用下面几种方式,对于方法名和属性名统一用双引号 “” ,且第一个字母大写,避免混乱。
知识点:
;;;查看对象的属性和方法
(vlax-dump-object obj T)
;;;方法与属性是否适用于某对象
(vlax-property-available-p obj "Property")
(vlax-method-applicable-p obj "Method")
;;;获取属性与修改属性
(vla-get-属性 obj)
(vla-put-属性 obj 参数)
(vlax-get-property obj "Property")
(vlax-put-property obj "Property" 参数)
;;;执行方法
(vlax-invoke-method obj "Method" [方法的参数]...)
例子:
01.查看对象的属性和方法
(vlax-dump-object(vlax-ename->vla-object(car(entsel)))T)
点选一个圆
;特性值:
; Application (RO) = #<VLA-OBJECT IAcadApplication 00d73d3c>
; Area = 12131.9
; Center = (141.556 338.87 0.0)
; Circumference = 390.453
; Diameter = 124.285
; Document (RO) = #<VLA-OBJECT IAcadDocument 01e31958>
; Handle (RO) = "7F"
; HasExtensionDictionary (RO) = 0
; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 01fb1c04>
; Layer = "0"
; Linetype = "ByLayer"
; LinetypeScale = 1.0
; Lineweight = -1
; Material = "ByLayer"
; Normal = (0.0 0.0 1.0)
; ObjectID (RO) = 2130292792
; ObjectName (RO) = "AcDbCircle"
; OwnerID (RO) = 2130263976
; PlotStyleName = "ByLayer"
; Radius = 62.1425
; Thickness = 0.0
; TrueColor = #<VLA-OBJECT IAcadAcCmColor 0ce59030>
; Visible = -1
;支持的方法
; ArrayPolar (3)
; ArrayRectangular (6)
; Copy ()
; Delete ()
; GetBoundingBox (2)
; GetExtensionDictionary ()
; GetXData (3)
; Highlight (1)
; IntersectWith (2)
; Mirror (2)
; Mirror3D (3)
; Move (2)
; Offset (1)
; Rotate (2)
; Rotate3D (3)
; ScaleEntity (2)
; SetXData (2)
; TransformBy (1)
; Update ()
02.属性和方法是否适用于某对象
(vlax-property-available-p obj "Length") 如果obj是一个圆,返回nil
(vlax-method-applicable-p obj "Move") 如果obj是一个圆,返回T
03.获取属性与修改属性
(vla-get-Color obj) 返回obj的颜色值
(vla-put-Color obj 1) 将obj颜色改为1号色
(vlax-get-property obj "Color") 返回obj的颜色值
(vlax-put-property obj "Color" 1) 将obj颜色改为1号色
04.执行方法
(vlax-invoke-method obj "Delet") 删除对象