明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 495|回复: 2

[提问] 窗选择相同标注样式的标注 如何循环追加选择集

[复制链接]
发表于 2023-10-16 17:19 | 显示全部楼层 |阅读模式
  1. ;;;;;窗选择相同标注样式的标注
  2. (defun c:SX ()
  3.   (setq ss (ssadd)) ; 创建一个空选择集 SS
  4.   (if (setq sst  (Cdr(Assoc 3 (Entget (Car(Entsel "\n选择要标记的标注:"))))))
  5.         (progn
  6.     (setq pt1 (getpoint "\n指定第一点:"))
  7.     (while (/= pt1 nil)
  8.           (setq pt2 (getcorner pt1 "\n指定对角点:"))
  9.     (setq ss1 (ssget "w" pt1 pt2 (list '(0 . "DIMENSION") (cons 3 sst))))
  10.     (setq ss (ssand ss ss1))
  11.     (setq pt1 (getpoint "\n指定第一点:")))   
  12.     (sssetfirst nil ss)        
  13.     ))
  14. (princ)
  15. )


  16. (defun ssand (ss ss1 / i en)
  17. (setq i 0)
  18. (while (< i (sslength ss1))
  19.   (setq en (ssname ss1 i)) ; 获取SS1中的第i个选择项
  20.   (if (not (null en))
  21.     (ssadd en ss) ; 将选择项添加到SS选择集中
  22.   )
  23.   (setq i (1+ i))
  24. )
  25. )
窗选择相同标注样式的标注 如何循环追加选择集 并且每次选择 都把选择集亮显  写了这个不对 实现不了  也不会写了 求助各位大神帮助
发表于 2023-10-16 18:57 | 显示全部楼层
  1. ;;;;;窗选择相同标注样式的标注
  2. (defun c:SX (/ pt1 pt2 ss ss1 ssand sst)
  3.         (defun ssand (ss ss1 / i en)
  4.                 (setq i 0)
  5.                 (if (and ss1 (> (sslength ss1) 0))
  6.                         (while (< i (sslength ss1))
  7.                                 (setq en (ssname ss1 i)) ; 获取SS1中的第i个选择项
  8.                                 (ssadd en ss) ; 将选择项添加到SS选择集中
  9.                                 (setq i (1+ i))
  10.                         )
  11.                 )
  12.                 ss
  13.         )
  14.   (setq ss (ssadd)) ; 创建一个空选择集 SS
  15.   (if (setq sst  (Cdr(Assoc 3 (Entget (Car(Entsel "\n选择要标记的标注:"))))))
  16.                 (progn
  17.                         (setq pt1 (getpoint "\n指定第一点:"))
  18.                         (while pt1
  19.                                 (setq pt2 (getcorner pt1 "\n指定对角点:"))
  20.                                 (setq ss1 (ssget "w" pt1 pt2 (list '(0 . "DIMENSION") (cons 3 sst))))
  21.                                 (setq ss (ssand ss ss1))
  22.                                 (setq pt1 (getpoint "\n指定第一点:"))
  23.                         )   
  24.                         (sssetfirst nil ss)        
  25.     )
  26.         )
  27.         (princ)
  28. )

评分

参与人数 2明经币 +2 收起 理由
bssurvey + 1 赞一个!
自贡黄明儒 + 1 感谢相助

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2023-10-17 07:00 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2023-10-17 07:03 编辑
我喜欢用选择集相加

;;1 [功能] 图元列表->选择集(或者选择集相加)
(defun lst->ss (Lst)
  (apply '(if command-s command-s vl-cmdf) (cons "_.select" (append Lst (list ""))))
  (ssget "_p")
)

(ssadd [ename [ss]])
如果不带参数调用 ssadd 函数,它将创建不含任何成员的选择集(空选择集)。如果调用本函数时,仅提供图元名参数 ename,它将创建一个仅含该图元的选择集。如果调用本函数时同时提供了图元名参数和选择集 ss,ssadd 将把指定图元加入到该选择集中。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-25 14:14 , Processed in 0.168693 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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