如何用lsp炸开图中所有的块
这样!
(DEFUN C:TEST ()(command "_.EXPLODE" (ssget "X" (list (cons 0 "INSERT"))))
(princ)
)
超级慢的方法是這樣,快一點的問秋楓吧!
;;超级慢的方法(DEFUN C:TEST ()
(setq N 1)
(princ)
(while (setq AAA (ssget "X"
(list (cons 0 "INSERT") (cons 410 (getvar "ctab")))
)
)
(command "_.EXPLODE" AAA)
(setq aaa nil)
(setq N (1+ N))
(princ)
))
炸开图块,就是将block空间的对象移动到modelspace空间中来,用copyobjects吧
.
就用vl的activex模型中的explode方法,不是挺好的。用一个递归就可以炸开所有的。
南子兄看不懂你说的方法,再说清楚点好吗????
用vl的activex模型中的explode方法
(defun VXEXPODE (ENT / OBJLST)(setq OBJLST (vlax-safearray->list
(vlax-variant-value
(vla-explode
ENT
)
)
)
)
(vla-delete ENT)
(foreach MEMB OBJLST
(if (= (vla-get-objectname MEMB) "AcDbBlockReference")
(VXEXPODE MEMB)
)
)
(princ)
)
(vl-load-com)
(defun C:EEXP (/ N SS)
(setq SS (getstring "\nAll(A)/<Select objects>: "))
(if (/= SS "")
(ssget "X"
(list (cons 0 "INSERT") (cons 410 (getvar "CTAB")))
)
(ssget '((0 . "INSERT")))
)
(vlax-for ENT (vla-get-activeselectionset
(vla-get-activedocument (vlax-get-acad-object))
)
(VXEXPODE ENT)
)
)
辛苦啦。
他这个方法不是很好。有explode方法干嘛不用。
页:
[1]
2