【Visual Lisp】Visual Lisp屬性與方法


說明:
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")   刪除對象

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM