关于ssget "P"函数的疑问,希望高手解决
(defun c:tz (/ ss sl i el pr dn lyr addlyr layers)(vl-load-com)
(command "layer" "n" "管件层" "")
(command "layer" "c" 6 "管件层" "")
(defun addlyr (lyr)
(vla-add layers lyr)
)
(if (setq ss (ssget '((0 . "TCH_PIPE"))))
(progn
(setq sl (sslength ss)
i sl
layers (vla-get-layers
(vla-get-activedocument (vlax-get-acad-object))
)
)
(repeat sl
(setq el(entget (ssname ss (setq i (1- i))))
pr(cdr (assoc 301 el))
dn(cdr (assoc 140 el))
lyr (strcat pr (rtos dn 2 0))
)
(if (tblsearch "layer" lyr)
nil
(addlyr lyr)
)
(entmod (subst (cons 8 lyr) (assoc 8 el) el))
)
)
)
(command "_explode" (ssget "P") "")
(command "_explode" (ssget "P") "")
(princ)
)
---------------------------------------------------
(command "_explode" (ssget "P") "")
只能炸掉上次框选内范围内选中的对象 如何炸掉框选范围内所有的对象(选中和没选中的)呢?
选择框选对象,建议用getpoint 和getcorner指定对角点,然后用ssget的 c模式或w模式建立选择集,因为已经知道对角点,那么多次ssget c 或w都可以建立选择集。
這樣可以嗎?
(setq ssx (ssget))
(setq ss (ssget "p" '((0 . "TCH_PIPE"))))
...
(command "_explode" ssx "") ...
(setvar "QAFLAGS" 1)
(command "_.EXPLODE" "P" "")
(command "_.EXPLODE" "P" "")
(setvar "QAFLAGS" 0)
... 谢谢各位,思路都不错
页:
[1]