CAD智能@未来 发表于 2024-10-31 11:21:18

选择集处理函数

本帖最后由 CAD智能@未来 于 2025-2-12 20:37 编辑

;获取选择集的图元列表
(setq ents (mapcar
      'cadr
          (vl-remove-if
            '(lambda (x)
            (< (car x) 0))
                (ssnamex ss)
          )
      )
)
;获取选择集端点集
(setq pts(apply
      'append
          (mapcar
            '(lambda (x)
            (mapcar
                'cdr
                  (vl-remove-if-not
                        '(lambda (y)
                        (= 10 (car y))
                        )
                        (entget x)
                  )
            )
            )
            ents
          )
      )
)
;获取选择集表文字内容
(setq str_lst(mapcar
      '(lambda(x)
          (cdr
            (assoc 1 (entget x))
          )
      )
          ents
      )
)
;删除图元列表
(mapcar '(lambda (x) (entdel x)) ents)

不一样地设计 发表于 2024-10-31 15:36:54

感谢分享,很有用啊

w379106181 发表于 2024-11-2 08:14:56


感谢大佬分享

zmzk 发表于 2024-12-6 15:19:55

版主,有示例么,如何用?》

cq4920 发表于 2024-12-7 02:41:39

反过来 有表转选择集的吗?

zmzk 发表于 2024-12-7 07:04:38

在别的地方复制过来的,你看下能用么
;9..表与选择集之间转换P
;By caiqs

;;;选择集变表 2007/8/30 师兄 QQ 361865648
(defun ss->lst (ss / retu)
(setq retu (apply 'append (ssnamex ss)))
(setq retu (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) retu))
)
;;;测试
(setq ss (ssget));_构建选择集
(princ (ss->lst ss))
;;;表变选择集 2007/8/30 师兄 QQ 361865648
(defun lst->ss(lst / ss)
(setq ss(ssadd))
(last(mapcar '(lambda (x) (ssadd x ss)) lst)))

;;;测试
(setq lst(list (car(entsel)) (car(entsel))))
(lst->ss lst)

yefei812678 发表于 2025-1-25 11:09:26

谢谢分享谢谢分享谢谢分享

muai2010 发表于 2025-1-25 16:57:48

留名后面看看如何使用
页: [1]
查看完整版本: 选择集处理函数