明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2953|回复: 5

[已解答] 如何获取COPY后的选择集实体

[复制链接]
发表于 2016-1-19 17:13:05 | 显示全部楼层 |阅读模式
如题,如何获取COPY后的选择集实体,在论坛找了类似的帖子,好像都没有解决。

(setq ss (ssget));  选择集A
(command "copy" ss "" (getpoint)   '(0 0 0)); 如何获得类似代码执行后的选择集呢?

目前我知道笨点的方法就是遍历SS,然后得到一个复制一个,然后加入新的选择集,大家有没有更高效的方法?
 楼主| 发表于 2016-1-19 17:34:25 | 显示全部楼层
速度好慢,求高效的代码。
  1. ;原地拷贝,并返回一个新的选择集
  2. (defun get_newss (ss / n ss2 en)
  3.   (setq n -1
  4.         ss2(ssadd))
  5.   (while (setq en(ssname ss (setq n(1+ n))))
  6.     (command "copy" en "" "@" "@")
  7.     (ssadd(entlast) ss2)
  8.   )
  9.   ss2)

  10. (setq ss (get_newss (ssget)))
发表于 2016-1-19 17:52:20 | 显示全部楼层
两个方法:
1)拷贝前设定一个标记实体ENTLAST,拷贝后从标记实体EXTNEXT直到NIL
2)拷贝前选择所有实体为选择集A,拷贝后再全选,Remove选择集A

点评

请提供第二种办法的代码?  发表于 2019-5-26 20:43

评分

参与人数 1明经币 +1 收起 理由
hbgsw + 1 赞一个!

查看全部评分

 楼主| 发表于 2016-1-20 08:54:57 | 显示全部楼层
kozmosovia 发表于 2016-1-19 17:52
两个方法:
1)拷贝前设定一个标记实体ENTLAST,拷贝后从标记实体EXTNEXT直到NIL
2)拷贝前选择所有实体为 ...

这个想法不错,谢谢了,按照您这个思路在去写代码。。
 楼主| 发表于 2016-1-20 14:02:58 | 显示全部楼层
  1. ;;;============获得COPY后的实体集
  2. (defun c:2t ( / en ss ss2)
  3.   (setq en(entlast)
  4.         ss2(ssadd))
  5.   (while (or(not ss)(= ss ""))(setq ss(ssget)))
  6.   (command "copy" ss "" pause pause)
  7.   (while (setq en(entnext en))
  8.     (ssadd en ss2)
  9.    )
  10.   (sssetfirst nil ss2)
  11.   (princ)
  12. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-23 08:19 , Processed in 0.195273 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表