hehoubin 发表于 2013-10-16 08:59:28

非常感谢

hehoubin 发表于 2013-10-16 09:16:49

回复10楼
这个好象只支持第2种图形

图形1 和图形2同时支持。

819534890 发表于 2013-10-16 10:34:45

本帖最后由 819534890 于 2013-10-16 10:42 编辑

hehoubin 发表于 2013-10-16 09:16 static/image/common/back.gif
回复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)
)

hehoubin 发表于 2013-10-16 10:54:22

THANKS~~~~~非常感谢

ZZXXQQ 发表于 2013-10-16 22:36:51

10楼改了。

ps122hb 发表于 2013-10-22 08:45:30

ZZXXQQ 发表于 2013-10-16 08:30 static/image/common/back.gif


试了一下,果然厉害

孙玉坤 发表于 2017-9-4 07:20:04

顶ddddddddddddddddddd

萧●﹏●明 发表于 2017-10-21 23:28:22

看看

xinxirong 发表于 2017-10-22 09:02:32

用region就行

fsafaffa 发表于 2017-10-22 13:36:52

这是并集,有交集或差集吗
页: 1 [2] 3
查看完整版本: RE: 已解决区域并集分解成多段线的程序,