楚留香 发表于 2015-8-8 05:14:29

如何得到面域之间布尔运算差值之后的新面域呢?

本帖最后由 楚留香 于 2015-8-8 05:23 编辑

1、以前都是通过entlast得到最后的图元名字;
2、可是通过布尔运算差值得的新图元确不能通过这个函数获得;
3、我用选择的办法查询的新图元的名字,确实是新的,可是不通过选择直接得到最后生成的图元名字呢?
4、如果不能判断新的图元产生,怎样能知道布尔运算成功了呢?恳请高手解答一下,谢谢!

434939575 发表于 2015-8-8 09:50:40

(defun c:uni (/ osmode_bak ss e getss);UNI后转换为PLINE      
(defun getss (e / ss)
    (setq ss (ssadd))
    (while (setq e (entnext e))
      (setq ss (ssadd e ss))
    );while
    ss
)
(setvar "CMDECHO" 0)
(Setq osmode_bak (getvar "osmode"))
(Setvar "osmode" 0)
(setq ss (ssget))
(setq e (entlast))
(command ".region" ss "")
(command ".union" (getss e) "")
(setq e (entlast))
(command ".Explode" (entlast))
(if (= 0 (getvar "peditaccept"))
         (setvar "peditaccept" 1)
                                  )      ;if
(command "_.pedit" "m" (getss e) "" "j" "0.005" "")
(Setvar "osmode" osmode_bak)
(setvar "CMDECHO" 1)
(princ)
)

楚留香 发表于 2015-8-8 23:13:02

基本搞清楚了:
1、CAD面域布尔差集计算时,差集后形成的图元名与面积大的图元名一致,不是新增加图元名;
2、CAD面域布尔并集计算时,并集后形成的图元名与面积大的图元名一致,不是新增加图元名;
3、所以entlast是得不到准确的名字的;
4、感兴趣的可以用(entsel)函数测试下验证;
页: [1]
查看完整版本: 如何得到面域之间布尔运算差值之后的新面域呢?