窗选择相同标注样式的标注 如何循环追加选择集
;;;;;窗选择相同标注样式的标注(defun c:SX ()
(setq ss (ssadd)) ; 创建一个空选择集 SS
(if (setq sst(Cdr(Assoc 3 (Entget (Car(Entsel "\n选择要标记的标注:"))))))
(progn
(setq pt1 (getpoint "\n指定第一点:"))
(while (/= pt1 nil)
(setq pt2 (getcorner pt1 "\n指定对角点:"))
(setq ss1 (ssget "w" pt1 pt2 (list '(0 . "DIMENSION") (cons 3 sst))))
(setq ss (ssand ss ss1))
(setq pt1 (getpoint "\n指定第一点:")))
(sssetfirst nil ss)
))
(princ)
)
(defun ssand (ss ss1 / i en)
(setq i 0)
(while (< i (sslength ss1))
(setq en (ssname ss1 i)) ; 获取SS1中的第i个选择项
(if (not (null en))
(ssadd en ss) ; 将选择项添加到SS选择集中
)
(setq i (1+ i))
)
)窗选择相同标注样式的标注 如何循环追加选择集 并且每次选择 都把选择集亮显写了这个不对 实现不了也不会写了 求助各位大神帮助
;;;;;窗选择相同标注样式的标注
(defun c:SX (/ pt1 pt2 ss ss1 ssand sst)
(defun ssand (ss ss1 / i en)
(setq i 0)
(if (and ss1 (> (sslength ss1) 0))
(while (< i (sslength ss1))
(setq en (ssname ss1 i)) ; 获取SS1中的第i个选择项
(ssadd en ss) ; 将选择项添加到SS选择集中
(setq i (1+ i))
)
)
ss
)
(setq ss (ssadd)) ; 创建一个空选择集 SS
(if (setq sst(Cdr(Assoc 3 (Entget (Car(Entsel "\n选择要标记的标注:"))))))
(progn
(setq pt1 (getpoint "\n指定第一点:"))
(while pt1
(setq pt2 (getcorner pt1 "\n指定对角点:"))
(setq ss1 (ssget "w" pt1 pt2 (list '(0 . "DIMENSION") (cons 3 sst))))
(setq ss (ssand ss ss1))
(setq pt1 (getpoint "\n指定第一点:"))
)
(sssetfirst nil ss)
)
)
(princ)
) 本帖最后由 自贡黄明儒 于 2023-10-17 07:03 编辑
飞雪神光 发表于 2023-10-16 18:57
我喜欢用选择集相加
;;1 [功能] 图元列表->选择集(或者选择集相加)
(defun lst->ss (Lst)
(apply '(if command-s command-s vl-cmdf) (cons "_.select" (append Lst (list ""))))
(ssget "_p")
)
(ssadd ])
如果不带参数调用 ssadd 函数,它将创建不含任何成员的选择集(空选择集)。如果调用本函数时,仅提供图元名参数 ename,它将创建一个仅含该图元的选择集。如果调用本函数时同时提供了图元名参数和选择集 ss,ssadd 将把指定图元加入到该选择集中。
页:
[1]