获取vla对象的层名称
你好我将下面的代码片段作为lisp代码的一部分
(setq obj1 (vlax-ename->vla-object (car (entsel "\nPick object 1"))))
您能帮我获取obj1的层名称吗。
我试过了
(setq VLA_OBJ_LAYER (vla-get-layer obj1))
(setq VLA_ACT_DOC (vla-get-ActiveDocument (vlax-get-Acad-Object)))
(setq LAYERNAME (vla-Item (vla-get-Layers VLA_ACT_DOC) VLA_OBJ_LAYER))
但它会出错。
谢谢
(setq LAYERNAME (vla-get-layer obj1))
完美的非常感谢您的帮助Marko Ribar。 FWIW您的尝试应写成:
(setq LAYERNAME (vla-get-layer obj1))
(setq VLA_ACT_DOC (vla-get-ActiveDocument (vlax-get-Acad-Object)))
(setq VLA_OBJ_LAYER (vla-Item (vla-get-Layers VLA_ACT_DOC) LAYERNAME))
因此,您只需反转“VLA\u OBJ\u LAYER”和“LAYERNAME”的符号名,以引用其(正确)值。 你会发现这非常方便,它会显示属性,其中很多属性你可以用VLA-get-xxxxxxx obj获得。你也可以做相反的事情,使用VLA-PUT-xxxxxx obj来更改值。
;;;===================================================================;
;;; DumpIt ;
;;;-------------------------------------------------------------------;
;;; Dump all methods and properties for selected objects ;
;;;===================================================================;
(defun C:DumpIt ( / ent)
(while (setq ent (entsel))
(vlax-Dump-Object
(vlax-Ename->Vla-Object (car ent))
T )
)
(princ)
)
; EndPoint = (513.775 345.565 0.0)
; Layer = "DEFAULT"
; Length (RO) = 250.296
; Linetype = "ByLayer"
; LinetypeScale = 1.0
; Lineweight = -1
; Material = "ByLayer"
; Normal = (0.0 0.0 1.0)
; ObjectID (RO) = 42
; ObjectName (RO) = "AcDbLine"
; OwnerID (RO) = 43
; PlotStyleName = "ByLayer"
; StartPoint = (263.479 345.565 0.0)
; Thickness = 0.0
要获得这些方法,您需要包括vlax dump对象的“T”,如下所示:
(vlax-dump-object (vlax-ename->vla-object (car ent)) t) 谢谢修复
页:
[1]