【发布时间】:2020-06-09 22:18:22
【问题描述】:
我想使用 AutoLISP ObjectDBX 方法删除块内图的所有属性。
下面的程序运行良好:它删除了图形中所有块的属性,但是当我在块编辑器中编辑这个块时,我看到所有属性仍然存在。
我想我需要从块的定义中删除这个属性。
;[dwgin]--input drawing file
;[dwgout]-- Output drawing fath with name
;function 'LM:GetDocumentObject' lee mac function to open drawing in ObjectDBX method
(defun DBXAttDelete ( dwgin dwgout / doc flg val )
(if (setq doc (LM:GetDocumentObject dwgin))
(progn
(vlax-for lyt (vla-get-layouts doc)
(vlax-for obj (vla-get-block lyt)
(if (and (= "AcDbBlockReference" (vla-get-objectname obj))
(= :vlax-true (vla-get-hasattributes obj))
)
(foreach att (vlax-invoke obj 'getattributes)
(if (vl-catch-all-error-p (setq err (vl-catch-all-apply 'vla-delete (list att))))
(princ (strcat "\nERROR: " (vl-catch-all-error-message err)))
)
)
)
)
)
(vla-saveas doc dwgout)
(vlax-release-object doc)
flg
)
(prompt (strcat "\nThe drawing \"" dwgin "\" was not found or could not be accessed."))
)
)
你能帮忙找出我需要改进/纠正这个程序的地方吗?
【问题讨论】:
-
您需要从 BlockTableRecord 中删除属性定义,而不是 BlockReference。
标签: lisp autocad autocad-plugin autolisp autocad-scripts