暮雨晨曦 发表于 2023-10-16 17:19:50

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

;;;;;窗选择相同标注样式的标注
(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))
)
)窗选择相同标注样式的标注 如何循环追加选择集 并且每次选择 都把选择集亮显写了这个不对 实现不了也不会写了 求助各位大神帮助

飞雪神光 发表于 2023-10-16 18:57:50

;;;;;窗选择相同标注样式的标注
(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:00:21

本帖最后由 自贡黄明儒 于 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]
查看完整版本: 窗选择相同标注样式的标注 如何循环追加选择集