zhaosujun 发表于 2002-11-1 16:32:00

如何用lsp炸开图中所有的块

发表于 2002-11-3 00:15:00

这样!

(DEFUN C:TEST ()
(command "_.EXPLODE" (ssget "X" (list (cons 0 "INSERT"))))
(princ)
)

龙龙仔 发表于 2002-11-1 17:12:00

超级慢的方法是這樣,快一點的問秋楓吧!

;;超级慢的方法
(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)
))

南子 发表于 2002-11-2 01:21:00

炸开图块,就是将block空间的对象移动到modelspace空间中来,用copyobjects吧

cy956 发表于 2002-11-2 02:23:00

.

秋枫 发表于 2002-11-2 14:16:00

就用vl的activex模型中的explode方法,不是挺好的。用一个递归就可以炸开所有的。

龙龙仔 发表于 2002-11-6 16:59:00

南子兄看不懂你说的方法,再说清楚点好吗????

龙龙仔 发表于 2002-11-7 16:00:00

用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)
)
)

秋枫 发表于 2002-11-7 23:26:00

辛苦啦。

秋枫 发表于 2002-11-7 23:27:00

他这个方法不是很好。有explode方法干嘛不用。

页: [1] 2
查看完整版本: 如何用lsp炸开图中所有的块