怎么获取复制后的图元,用程序,建立一个新的....
已知选择集A,将选择集A复制到另外一个处,怎么获取复制后的图元,并用程序,建立一个新的选集B。在此谢谢各位大神了。
(defun SsEntnext (en / ss)
"SsEntnext 返回某图元后的图元集并设为当前 (SsEntnext en)"
(setq ss (ssadd))
(while (setq en (entnext en)) (ssadd en ss))
(if (and ss (> (sslength ss) 0))
(progn (command "select" ss "") (ssget "p"))
)
)
(defun c:tt ()
(setq s0 (entlast))
(repeat 10 (command "line" "non" '(0 0) "non"'(1000 1000) ""))
(setq ss (SsEntnext s0))
(sssetfirst nil ss)
(princ)
) 本帖最后由 e2002 于 2024-12-19 14:29 编辑
caoyongjun 发表于 2024-12-19 12:41
感谢,我的意思是不用鼠标点选,实现复制后的图元构成一个新的选集B,只能提供一个选集A的条件。
选择集实际上只是在用户与 AutoCAD 交互时选择对象的集合,对于用户写的程序来说,通常都是转换为图元名或图元对象的 List, 然后遍历处理。对象的 Copy 操作,是有返回值的,返回值就是 Copy出来的新的对象的 objID,显然也是遍历后创建出新的一系列的元素为 objID 的 newList, 你只需要处理这个 newList即可。除非你是在写一个子函数,需要有一个类型为 SelectionSet 的返回值。 ;取得copy后梁截面选择集
(setq enlast (entlast))
(setq ss0 (ssget))
(setq ss1 (ssadd))
(command "copy" ss0 "" "non" pt0 "non" pt1)
(while
(setq enlast (entnext enlast))
(ssadd enlast ss1)
)
本帖最后由 飞雪神光 于 2024-12-19 12:15 编辑
(entlast) 和(entnext ty) 配合收集明经上看到过好多
如何获得某个command后生成的所有物体 - AutoLISP/Visual LISP 编程技术 - AutoCAD论坛 - 明经CAD社区 - Powered by Discuz! (mjtd.com)
Bao_lai 发表于 2024-12-19 12:22
感谢,我的意思是不用鼠标点选,实现复制后的图元构成一个新的选集B,只能提供一个选集A的条件。
提供一个选集A的条件
不用鼠标点选
copySSA-->SSB(新的选集B)
换个思路
原地 copy ssA
move ssA 至新位置
==SSB
有了SSB想处理什么?
caoyongjun 发表于 2024-12-19 12:41
感谢,我的意思是不用鼠标点选,实现复制后的图元构成一个新的选集B,只能提供一个选集A的条件。
你这样说,把大家整得一头雾水。不用鼠标点选,那选择集A,是怎么来的? 同样的问题,你发了好几个帖了,至今没有得到答案,跟你表达能力有很大的关系。
页:
[1]
2