Тема: Как программно "взорвать" блоки?

(command "_explode" ss) не работает, где ss - набор, сформированный как (ssget "X" '((0 . "INSERT") (8 . "имя_слоя"))).
Дело в том, что команда explode требует указания блока вместе с точкой, то есть её устроил бы выход ф-ии (entsel), а не (ssget).
Как быть?

Re: Как программно "взорвать" блоки?

Как быть?

Например вот так.

(setq nabor (ssget "X" '((0 . "INSERT") (8 . "имя_слоя"))))
(setq x 0)
(while (/= (ssname nabor x) nil)
(vla-explode (vlax-ename->vla-object (ssname nabor x)))
(setq x (+ x 1)))

Re: Как программно "взорвать" блоки?

Код Makson, не сработает, если блок имеет разные масштабы по X,Y,Z

(setq nabor (ssget "X" '((0 . "INSERT"))))
(setq x 0) 
(while (setq blk (ssname nabor x))
  (command "_.EXPLODE" blk)
(setq x (+ x 1)))

Re: Как программно "взорвать" блоки?

  (setq SS (ssget "X" '((0 . "INSERT") (8 . "имя_слоя"))))
  (vl-cmdf "._-GROUP" "_C" "TEMP" "" SS "")
  (vl-cmdf "._EXPLODE" "_G" "TEMP")
  (vl-cmdf "._-GROUP" "_E" "TEMP")

Re: Как программно "взорвать" блоки?

(sssetfirst nil (ssget "X" '((0 . "INSERT") (8 . "имя_слоя"))))
(command "_explode")

Re: Как программно "взорвать" блоки?

_CB_, спасибо, это то что надо - команде передаётся сразу весь набор. Это значительно быстрее, чем перебирать по одному примитиву, особенно когда блоков тысячи.
VovKa, наверное, ваш код тоже работает быстро, не разбирался.
Всем спасибо, тема закрыта.