明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 777|回复: 25

[提问] 求教!如何获得复制后的选择集

  [复制链接]
发表于 2024-8-20 19:15:37 | 显示全部楼层 |阅读模式
  1. (setq ss1 (ssget "X"))
  2. (command-s "COPY" (ssget) "" pt1 pt2)
  3. (setq ss2 (ssget "X"))
  4. (command-s "select" ss2 "r" ss1 "")
  5. (setq ss3 (ssget "P"))
这是目前我用的方法、
但是文件内图形如果很多就会有点卡,

想请教一下大家有没有其他方法、感谢!

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-8-20 23:29:41 | 显示全部楼层
有些函数还没接触,我是这么处理的
(setq ss1 (ssadd))
      (setq i 0)
      (repeat (sslength ss)
        (setq ent (ssname ss i))
        (command "._copy" ent "" pt1 pt2)
        (ssadd (entlast) ss1)
        (setq i (1+ i))
      );end_repeat
回复 支持 1 反对 0

使用道具 举报

发表于 2024-8-20 20:12:21 | 显示全部楼层
;by
;20240820

(defun c:tt(/ &ss &ss1 en_last)
        (setq en_Last (entlast))
        (setq &ss (ssadd))
        (princ "\n选择要复制的对象")
        (setq &ss1 (ssget))
        (command "copy" &ss1 "")
        (while (= 1 (logand 1 (getvar 'cmdactive)))(command "\\"))
  (while (setq en_Last (entnext en_Last)) (ssadd en_Last &ss))
        (sssetfirst nil &ss)
)

评分

参与人数 1明经币 +1 收起 理由
xiaocainiao + 1 很给力!

查看全部评分

发表于 2024-8-20 19:28:25 | 显示全部楼层
本帖最后由 kozmosovia 于 2024-8-20 19:30 编辑

copy之前获取entlast作为标记实体,copy之后循环entnext这个标记实体。
这个是获取实体列表的


(Defun AQX:NewObjectsFrom (obj / RTN)
  (while (setq obj (entnext obj)) (setq rtn (cons obj rtn)))
  (reverse rtn)
)


评分

参与人数 1明经币 +1 收起 理由
xiaocainiao + 1 很给力!

查看全部评分

 楼主| 发表于 2024-8-20 19:32:54 | 显示全部楼层
kozmosovia 发表于 2024-8-20 19:28
copy之前获取entlast作为标记实体,copy之后循环entnext这个标记实体。
这个是获取实体列表的

谢谢!这个有点高级了、想问一下这个对于选择集也可以吗、我主要是想获取复制后的选择集
发表于 2024-8-20 19:49:41 | 显示全部楼层
你可以有列表转为选择集,或者直接在函数中吧cons改写为ssadd返回选择集。
不过选择集一般后面的处理上,还是要循环一个个实体处理,除非又用command
 楼主| 发表于 2024-8-20 19:58:48 | 显示全部楼层
kozmosovia 发表于 2024-8-20 19:49
你可以有列表转为选择集,或者直接在函数中吧cons改写为ssadd返回选择集。
不过选择集一般后面的处理上, ...

谢谢、刚刚在论坛里面又搜到另外一种方法、就是用ssmemb函数对复制前后的两个选择集作比较、相当于选择集作差集
发表于 2024-8-20 21:01:09 | 显示全部楼层
高级有点看不懂
发表于 2024-8-20 21:15:42 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2024-8-20 21:19 编辑

挺简单的啊,获取当前尾巴,然后复制粘贴,
从尾巴用链表方式获取之后的每个图元.
妥妥的游离指针标记法.
通过next行为,还印证了数据库是尾插法,不是树形图.
 楼主| 发表于 2024-8-20 21:21:49 | 显示全部楼层

谢谢、这个可以、我要好好理解一下entnext的用法了
 楼主| 发表于 2024-8-20 21:28:47 | 显示全部楼层
kozmosovia 发表于 2024-8-20 19:49
你可以有列表转为选择集,或者直接在函数中吧cons改写为ssadd返回选择集。
不过选择集一般后面的处理上, ...

刚看了一下entnext的函数说明、这回理解了、谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-22 18:33 , Processed in 0.166577 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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