ssget一次选择后分组
用ssget获取圆 多段线和直线的代码如下(setq ss1 (ssget '((0 . "LINE"))))
(setq ss2 (ssget '((0 . "CIRCLE"))))
(setq ss3 (ssget '((0 . "LWPOLYLINE"))))
如此一来,就要出现了三次选择,觉得有点点麻烦。
如何能一次选择后按图元类型分配到三个组里面呢?
(setq ents (ss-ents (ssget ":s")));获取图元列表
(group-ents ents '("CIRCLE" "LINE" "LWPOLYLINE"));分组
至于分组后能干什么,就看自己的用途了~~~
相关函数
;选择集到图元列表
(defun ss-ents(ss / i en ents)
(setq i 0)
(repeat (sslength ss)
(setq en (ssname ss i)
ents (cons en ents)
i (1+ i)
)
)
ents
)
;图元列表按类型分组
(defun group-ents (ents tylst / ty s1 s2 en)
(foreach ty tylst
(setq s1 '())
(foreach en ents
(if (= (cdr(assoc 0 (entget en))) ty)
(setq s1 (cons en s1))
)
)
(setq s1 (cons ty s1))
(setq s2 (cons s1 s2))
)
(reverse s2)
) (setq ss (ssget))
(setq ss1 (ssget "p" '((0 . "LINE"))))
(command "select" ss "")
(setq ss2 (ssget "p" '((0 . "CIRCLE"))))
(command "select" ss "")
(setq ss3 (ssget "p" '((0 . "LWPOLYLINE")))) 好像对文字无效 666先收藏了 本帖最后由 77077 于 2014-10-19 00:10 编辑
相关问题
http://bbs.mjtd.com/thread-84990-1-1.html
命令: (setq ents (ss-ents (ssget ":s")))
(<图元名: 7efbd430> <图元名: 7efbd438> <图元名: 7efbd440> <图元名: 7efbd448> <图元名: 7efbd450> <图元名: 7efbd458> <图元名: 7efbd460> <图元名: 7efbd468> <图元名: 7efbd470>)
命令: (group-ents ents '("CIRCLE" "LINE" "LWPOLYLINE"))
(("CIRCLE" <图元名: 7efbd458> <图元名: 7efbd450> <图元名: 7efbd448>)
("LINE" <图元名: 7efbd440> <图元名: 7efbd438> <图元名: 7efbd430>)
("LWPOLYLINE" <图元名: 7efbd470> <图元名: 7efbd468> <图元名: 7efbd460>)
)
比较实用.支持! 学习了,mark 这个很实用 按图层信息分组要怎么写呢 小师傅 发表于 2015-5-5 13:22 static/image/common/back.gif
按图层信息分组要怎么写呢;; 需要e派工具箱(XCAD)的支持
(defun c:tt ()
(if (setq ss (ssget))
(setq lst (xyp-count1 (mapcar '(lambda (x) (list (xyp-DXF 8 x) x)) (xyp-ss2list ss))))
)
(princ)
) xyp1964 发表于 2015-5-5 13:35 static/image/common/back.gif
谢谢院长的及时回复
页:
[1]
2