菜卷鱼 发表于 2020-4-7 15:10:52

图形炸开之后,重新选中零散的图形

图形炸开之后,如何重新选中之前一直不知道如何操作,
突然之间来了想法解决了。

1,首先自义定义一个选择集减去选择集的程序 ss-ss (自己动手去写)
2,炸块之前,先创建所有图元的选择集 (setq ss1(ssget "a"))
3,然后 选择要炸的块 (setq ss_block(ssget ))
4 , 然后排除 要炸的块,得到无关图元选择集 (setq ss_out (ss-ss ss1 ss_block))
5 , 炸块,获得所有图元的选择集 (setq ss2(ssget "a"))
6,用炸块之后所有图元的选择集,减去无关图元选择集(ss-ss ss2 ss_out)


以上仅供参考,图档内容比较多时,可能处理比较慢

Gu_xl 发表于 2020-4-7 15:50:59

炸完块后紧接着用(setq ss (ssget "p"))就可以得到炸完后的实体对象!

菜卷鱼 发表于 2020-4-10 09:20:52

前生 发表于 2020-4-9 23:50
这个正解。我一直这么用。

我也找到了
(defun ENT_FROM(e / ss sn)
;;;;返回自实体E之后生成的实体选择集;;;;Desgined by byghbcx
(if (/= (type e) (quote ENAME))
    (alert "Parameter ERROR in ENT_FROM")
    )
(setq ss (ssadd))
(while e
    (setq e (entnext e))
    (ife
      (progn
(setq sn (cdr (assoc 0 (entget e))))
(if (not (member sn
       (quote
         ("ATTRIB" "VERTEX" "SEQEND")
         )
       )
   )
    (setq ss (ssadd e ss))
    )
)
      )
    )
ss
)

hpy 发表于 2020-4-7 19:56:28

用这个试试,copy 、mirror都可以。忘了这是谁的代码。
(setq ss (ssadd))
(setq ent (entlast))
(command "explode" en)
(while (setq ent (entnext ent))
         (ssadd ent ss)
)

菜卷鱼 发表于 2020-4-7 16:22:38

Gu_xl 发表于 2020-4-7 15:50
炸完块后紧接着用(setq ss (ssget "p"))就可以得到炸完后的实体对象!

用copy之后,新生成的图形呢?

无名之辈 发表于 2020-4-9 16:05:58

前来学习学习

前生 发表于 2020-4-9 23:50:53

hpy 发表于 2020-4-7 19:56
用这个试试,copy 、mirror都可以。忘了这是谁的代码。
(setq ss (ssadd))
(setq ent (entlast))


这个正解。我一直这么用。

you_zy 发表于 2020-4-10 09:29:10

用vla-explode,返回结果就是你想要的

前生 发表于 2020-4-10 22:44:25

you_zy 发表于 2020-4-10 09:29
用vla-explode,返回结果就是你想要的

VLA-EXPLODE似乎是COPY+explode

you_zy 发表于 2020-4-16 10:17:14

前生 发表于 2020-4-10 22:44
VLA-EXPLODE似乎是COPY+explode

VLA-EXPLODE是分解原图块,但是原图块依然存在,并且原位复制出图块内的所有图元
页: [1] 2
查看完整版本: 图形炸开之后,重新选中零散的图形