本帖最后由 819534890 于 2013-10-16 10:42 编辑
hehoubin 发表于 2013-10-16 09:16 
回复10楼
这个好象只支持第2种图形
在ZZXXQQ版主的基础上作了修改,满足了你的要求:
把这句(command ".explode" "L" "" ".EXPLODE" "P" "")
拆分成2句,并作出判断
(command ".explode" "L" "")
;如果炸开一次后,里面的图形依然是面域(说明有多个子面域),那么需要继续炸开;否则是单个面域,不需要再炸开了。
(setq ss2 (ssget "_p"))
(if (= "REGION" (cdr ( assoc 0 (entget (ssname ss2 0)))))
(command ".EXPLODE" "P" "")
)
 - (defun c:bj2 (/ ss s1 e)
- (setvar "CMDECHO" 0)
- (if (setq ss (ssget '((0 . "ARC,CIRCLE,LINE,*POLYLINE")))) (progn
- (setq e (entlast))
- (setq s1 (ssadd))
- (command ".region" ss "")
- (while (setq e (entnext e)) (ssadd e s1))
- (command ".union" s1 "")
- (setvar "QAFLAGS" 1)
- (command ".explode" "L" "")
- (setq ss2 (ssget "_p"))
- (if (= "REGION" (cdr ( assoc 0 (entget (ssname ss2 0)))))
- (command ".EXPLODE" "P" "")
- )
- (setvar "QAFLAGS" 0)
- ; (setvar "PEDITACCEPT" 0)
- (command "_.pedit" "_M" "P" "" "_J" "0" "")
- ; (setvar "PEDITACCEPT" 1)
- ))
- (setvar "CMDECHO" 1)
- (princ)
- )
|