669423907 发表于 2012-7-5 21:30:38

求炸块与炸组结合

在论坛收集了两个好程序:一个是炸块的,一个是炸组的

如何把两个程序合二为一呢?能让其有块炸块有组炸组!(先选后炸)谢谢!

;炸开嵌套块(无痕.2004.4+菡萏.2012.04.09
(defun c:xx(/ *error* ss qf)
(defun *error* (msg)
    (setvar "qaflags" qf)
    (princ msg)
    (princ)
    )
(setq qf (getvar "qaflags"))
(setvar "qaflags" 1)
(princ"\n炸块")
(setq ss (ssget '((0 . "INSERT" ))))
(while (setq ss (ssget "P" '((0 . "INSERT" ))))
(command ".explode" ss ""))
(setvar "qaflags" qf)
(princ)
)
;炸组(wwwliuyu 2008.08.21)
(defun c:xxx()
(if(setq en(entsel "选择要炸开的组: "))
    (progn
      (setq gr(cdr(assoc 0 (entget(cdr(assoc 330(entget(car en))))))))
      (if (= "GROUP" gr)
(entdel (cdr(assoc 330(entget(car en)))))
(prompt "所选对象没有被分组!")
)
      )
    )
(princ)
)

print1985 发表于 2012-7-5 21:30:39

试试 不知道是不是这样;;; 炸开嵌套块或组-阿甘修改2012.7.14
(defun c:xx (/ *error* ent gr i msg n qf ss)
(defun *error* (msg)
    (setvar "qaflags" qf)
    (princ msg)
    (princ)
)
(setq qf (getvar "qaflags"))
(setvar "qaflags" 1)
(princ "\n选择要炸开的块或组")
(setq ss (ssget))
(setq n (sslength ss))
(setq i (- n 1))
(repeat n                             ; 先删除组
    (setq ent (ssname ss i))
    (setq gr (cdr (assoc 0 (entget (cdr (assoc 330 (entget ent)))))))
    (if (= "GROUP" gr)
      (entdel (cdr (assoc 330 (entget ent))))
    )
    (setq i (1- i))
)
(while (setq ss (ssget "P" '((0 . "INSERT")))) ; 再炸开嵌套块
    (command ".explode" ss "")
)
(setvar "qaflags" qf)
(princ)
)

669423907 发表于 2012-7-14 08:00:10

上浮一下,哪位大师方便帮帮忙?

669423907 发表于 2012-7-14 16:20:16

怪事!!!
我的发帖时间是:         2012-7-5 21:30:38 ,
print1985 的回帖时间是:2012-7-5 21:30:39 ,
只相差一秒!!!!!
我今天早上登陆时系统都没有提示已有回复!!!!
什么情况!!!!!!!!!!!!!

dasha321 发表于 2020-9-9 23:16:50

用不了呢,为什么啊?

huxu823 发表于 2024-3-4 21:00:17

感谢分享,正在找这个功能
页: [1]
查看完整版本: 求炸块与炸组结合