用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)
- )
|