xiaocainiao 发表于 2024-8-20 19:15:37

求教!如何获得复制后的选择集

(setq ss1 (ssget "X"))
(command-s "COPY" (ssget) "" pt1 pt2)
(setq ss2 (ssget "X"))
(command-s "select" ss2 "r" ss1 "")
(setq ss3 (ssget "P"))这是目前我用的方法、
但是文件内图形如果很多就会有点卡,

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

xxyyzzlg 发表于 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

tigcat 发表于 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)
)

kozmosovia 发表于 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)
)


xiaocainiao 发表于 2024-8-20 19:32:54

kozmosovia 发表于 2024-8-20 19:28
copy之前获取entlast作为标记实体,copy之后循环entnext这个标记实体。
这个是获取实体列表的



谢谢!这个有点高级了、想问一下这个对于选择集也可以吗、我主要是想获取复制后的选择集

kozmosovia 发表于 2024-8-20 19:49:41

你可以有列表转为选择集,或者直接在函数中吧cons改写为ssadd返回选择集。
不过选择集一般后面的处理上,还是要循环一个个实体处理,除非又用command

xiaocainiao 发表于 2024-8-20 19:58:48

kozmosovia 发表于 2024-8-20 19:49
你可以有列表转为选择集,或者直接在函数中吧cons改写为ssadd返回选择集。
不过选择集一般后面的处理上, ...

谢谢、刚刚在论坛里面又搜到另外一种方法、就是用ssmemb函数对复制前后的两个选择集作比较、相当于选择集作差集

muai2010 发表于 2024-8-20 21:01:09

高级有点看不懂

你有种再说一遍 发表于 2024-8-20 21:15:42

本帖最后由 你有种再说一遍 于 2024-8-20 21:19 编辑

muai2010 发表于 2024-8-20 21:01
高级有点看不懂
挺简单的啊,获取当前尾巴,然后复制粘贴,
从尾巴用链表方式获取之后的每个图元.
妥妥的游离指针标记法.
通过next行为,还印证了数据库是尾插法,不是树形图.

xiaocainiao 发表于 2024-8-20 21:21:49

tigcat 发表于 2024-8-20 20:12
;by
;20240820



谢谢、这个可以、我要好好理解一下entnext的用法了

xiaocainiao 发表于 2024-8-20 21:28:47

kozmosovia 发表于 2024-8-20 19:49
你可以有列表转为选择集,或者直接在函数中吧cons改写为ssadd返回选择集。
不过选择集一般后面的处理上, ...

刚看了一下entnext的函数说明、这回理解了、谢谢
页: [1] 2 3
查看完整版本: 求教!如何获得复制后的选择集