明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1384|回复: 6

命令生成的对象做成选择集

[复制链接]
发表于 2021-1-8 09:15:26 | 显示全部楼层 |阅读模式
如题。我想把命令生成的对象,用LSP做成一个选择集。
   如:我用镜像命令生成了三条直线,我想把它做成选择集。
发表于 2021-1-8 20:47:35 | 显示全部楼层
  (setq ss(ssget "p"))   行吗
 楼主| 发表于 2021-1-9 08:43:48 | 显示全部楼层
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
    )
  )
)
  已经解决了。
发表于 2021-4-9 15:00:56 | 显示全部楼层
(ssget "L") 生成一个选择集,该选择集由最后被增加到图形数据库中的那个可见对象组成,
所以每生成一个对象就把这个对象添加到独立选择集中,最后在把选择集合并
发表于 2021-4-9 19:06:04 | 显示全部楼层
楼主能帮忙加个快捷命令吗,不会用
发表于 2021-4-27 15:08:44 | 显示全部楼层
没那么复杂,用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说明程序完整的执行了,
)
发表于 2021-4-27 19:01:00 | 显示全部楼层
you_boss 发表于 2021-4-27 15:08
没那么复杂,用entlast函数就可以,下面是一个例子,选择两点command生成一条直线,然后用entlast将生成的 ...

挺好用的。能帮忙写一个lsp,画一个圆,然后标注这个圆的直径吗。我用excel vba画圆然后标注直径,标注直径有时成功有时出错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 12:46 , Processed in 0.142222 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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