它不是AutoLISP函数,而是ActiveX对象的属性和方法。您可以在开发人员帮助中的ActiveX和VBA参考中找到它。虽然使用了VBA语法,但在AutoLISP语法中使用它们并不困难。
画一条线,在命令行中键入并拾取线:
- Command: (vl-load-com)
- Command: (setq vObj(vlax-ename->vla-object(car(entsel))))
- Select object: #<VLA-OBJECT IAcadLine 026386b4>
现在你有了你行的ActiveX对象。通过vlax dump对象函数查看所有属性和方法:
- Command: (vlax-dump-object vObj T)
- ; IAcadLine: AutoCAD Line Interface
- ; Property values:
- ; Angle (RO) = 0.657912
- ; Application (RO) = #<VLA-OBJECT IAcadApplication 00d73d3c>
- ; Delta (RO) = (584.602 451.76 0.0)
- ; Document (RO) = #<VLA-OBJECT IAcadDocument 090902a8>
- ; EndPoint = (1887.85 1143.92 0.0)
- ; Handle (RO) = "1AD"
- ; HasExtensionDictionary (RO) = 0
- ; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 0edfe97c>
- ; Layer = "0"
- ; Length (RO) = 738.815
- ; Linetype = "ByLayer"
- ; LinetypeScale = 1.0
- ; Lineweight = -1
- ; Material = "ByLayer"
- ; Normal = (0.0 0.0 1.0)
- ; ObjectID (RO) = 2130342760
- ; ObjectName (RO) = "AcDbLine"
- ; OwnerID (RO) = 2130337016
- ; PlotStyleName = "ByLayer"
- ; StartPoint = (1303.24 692.161 0.0)
- ; Thickness = 0.0
- ; TrueColor = #<VLA-OBJECT IAcadAcCmColor 0ee0de10>
- ; Visible = -1
- ; Methods supported:
- ; 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 ()
- T
现在获取对象颜色:
- Command: (vla-get-color vObj)
- 256
并将其更改为红色:
- Command: (vla-put-Color vObj 1)
- nil
如您所见,vla函数是对象属性。vla get-用于获取属性,vla put-用于更改属性。
现在将偏移方法应用于直线:
- Command: (setq Res(vla-offset vObj -15))
- #<variant 8201 ...>
变量Res是带有新对象的变量safearray。将其转换为列表:
- Command: (vlax-safearray->list(vlax-variant-value Res))
- (#<VLA-OBJECT IAcadLine 02638954>)
|