命令生成的对象做成选择集
如题。我想把命令生成的对象,用LSP做成一个选择集。如:我用镜像命令生成了三条直线,我想把它做成选择集。
(setq ss(ssget "p")) 行吗 xj6019 发表于 2021-1-8 20:47
(setq ss(ssget "p")) 行吗
;;返回图元名之后所有图元选择集
;;(setq ss(Cc_get-last-ss en))
(defun Cc_get-last-ss (ent / ss)
(if (not ent)
(progn
(setq ss (ssadd (setq ent (entnext))))
)
(progn
(setq ss (ssadd))
)
)
(while (and
(setq ent (entnext ent))
)
(ssadd ent ss)
)
(if (= 0 (sslength ss))
(progn
nil
)
(progn
ss
)
)
)
:lol已经解决了。 (ssget "L") 生成一个选择集,该选择集由最后被增加到图形数据库中的那个可见对象组成,
所以每生成一个对象就把这个对象添加到独立选择集中,最后在把选择集合并
楼主能帮忙加个快捷命令吗,不会用 没那么复杂,用entlast函数就可以,下面是一个例子,选择两点command生成一条直线,然后用entlast将生成的直线赋予一个名称,然后利用ssadd将直线加入到选择集,如果图元比较多,则可以写成循环,没生成一个图元操作一次
(defun c:q3 ()
(setq p1 (getpoint "\n选择一个点"))
(setq p2 (getpoint "\n选择另一个点"))
(command "line"p1 p2 "")
(setq L1 (entlast))
(setq ss0(ssadd))
(ssadd l1 ss0) (print 2)
(command "COPY" ss0 "" p1 p2 "")(print 2);验证这条直线是否被加入到选择集,如果能复制出来,说明的确的被加入了这个选择集。最后的(print 2)是我个人的习惯,最后能打印出2说明程序完整的执行了,
) you_boss 发表于 2021-4-27 15:08
没那么复杂,用entlast函数就可以,下面是一个例子,选择两点command生成一条直线,然后用entlast将生成的 ...
挺好用的。能帮忙写一个lsp,画一个圆,然后标注这个圆的直径吗。我用excel vba画圆然后标注直径,标注直径有时成功有时出错
页:
[1]