求教!如何获得复制后的选择集
(setq ss1 (ssget "X"))(command-s "COPY" (ssget) "" pt1 pt2)
(setq ss2 (ssget "X"))
(command-s "select" ss2 "r" ss1 "")
(setq ss3 (ssget "P"))这是目前我用的方法、
但是文件内图形如果很多就会有点卡,
想请教一下大家有没有其他方法、感谢!
有些函数还没接触,我是这么处理的
(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
;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)
)
本帖最后由 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)
)
kozmosovia 发表于 2024-8-20 19:28
copy之前获取entlast作为标记实体,copy之后循环entnext这个标记实体。
这个是获取实体列表的
谢谢!这个有点高级了、想问一下这个对于选择集也可以吗、我主要是想获取复制后的选择集 你可以有列表转为选择集,或者直接在函数中吧cons改写为ssadd返回选择集。
不过选择集一般后面的处理上,还是要循环一个个实体处理,除非又用command kozmosovia 发表于 2024-8-20 19:49
你可以有列表转为选择集,或者直接在函数中吧cons改写为ssadd返回选择集。
不过选择集一般后面的处理上, ...
谢谢、刚刚在论坛里面又搜到另外一种方法、就是用ssmemb函数对复制前后的两个选择集作比较、相当于选择集作差集 高级有点看不懂 本帖最后由 你有种再说一遍 于 2024-8-20 21:19 编辑
muai2010 发表于 2024-8-20 21:01
高级有点看不懂
挺简单的啊,获取当前尾巴,然后复制粘贴,
从尾巴用链表方式获取之后的每个图元.
妥妥的游离指针标记法.
通过next行为,还印证了数据库是尾插法,不是树形图. tigcat 发表于 2024-8-20 20:12
;by
;20240820
谢谢、这个可以、我要好好理解一下entnext的用法了 kozmosovia 发表于 2024-8-20 19:49
你可以有列表转为选择集,或者直接在函数中吧cons改写为ssadd返回选择集。
不过选择集一般后面的处理上, ...
刚看了一下entnext的函数说明、这回理解了、谢谢