holypower2011 发表于 2025-3-21 10:59:30

选择集二次筛选

例如,先用(setq ss1 (ssget))获取选择集,然后再用ssget筛选出其中的图层layer2上的多段线作为ss2,筛选出其中的直线作为ss3,如果不使用遍历选择集中的所有实体可以做到吗?以下用法cad不支持:(setq ss2 (ssget "X" (list (cons 0 "LWPOLYLINE") (cons 8 "Layer2")) ss1))

xyp1964 发表于 2025-3-21 22:44:34

(defun c:tt ()
(if (setq ss (ssget))
    (progn
      (setq ss2 (ssget "p" '((0 . "LWPOLYLINE") (8 . "Layer2"))))
      (command "select" ss "")
      (setq ss3 (ssget "p" '((0 . "LINE"))))
    )
)
(princ)
)

lijiao 发表于 2025-3-21 11:34:13

把X换成P试试

统一网名 发表于 2025-3-21 13:57:10

(defun c:tt(/ ss ss1 ss2 )
(setq ss (ssget));多选
(command "select" ss"");选中所有
(setq ss1 (ssget "p" '((0 . "LINE"))))
(command "select" ss "");选中所有
(setq ss2 (ssget "p" '((0 . "CIRCLE"))))
(setq v1(sslength ss1) v2(sslength ss2))       
)

参考一下

holypower2011 发表于 2025-3-21 16:06:29

统一网名 发表于 2025-3-21 13:57
(defun c:tt(/ ss ss1 ss2 )
(setq ss (ssget));多选
(command "select" ss"");选中所有


选中所有是可以,不过这个就达不到想要的效果了。这需要全图筛选

统一网名 发表于 2025-3-21 17:17:43

holypower2011 发表于 2025-3-21 16:06
选中所有是可以,不过这个就达不到想要的效果了。这需要全图筛选

做个参考,自己改一下就可以了
页: [1]
查看完整版本: 选择集二次筛选