大家好!
最近准备写一个程序,碰到了难点了,大致如下:
首先有一个选择集 (setq ss (ssget '( (0 . "CIRCLE") )) )
我需要把里面不是同心的圆放入到选择集SS1里面 ,自己想了个笨办法但是图元多了就容易卡死
求大家帮我优化一下,或者出个好的方案。谢谢了!
- (defun c:tt ( )
- (setq ss (ssget '( (0 . "CIRCLE") )) )
- (setq LST_ENT '()
- I 0
- )
- (repeat (sslength SS)
- (setq LST_ENT (cons (assoc 10 (entget(ssname ss i))) LST_ENT)
- I (1+ I)
- )
- )
- (setq LST_ENT(delsames LST_ENT 0.0001));不是同心圆的点表
- (setq i 0 )
- (setq ss1 (ssadd) );空选择集
- (repeat (length LST_ENT)
- (setq sso (ssget "p" (list '(0 . "CIRCLE") (cons 10 (cdr (nth i LST_ENT)))))
- ss1(ssadd (ssname sso 0) ss1)
- i (1+ i)
- )
- (vl-cmdf "_.select" ss "")
- )
- )
- (defun delsames(l1 rcz / a l l2);;带容差去重(重复过的不出现)
- (while(setq a(car l1)l2(vl-remove-if'(lambda (x)(equal a x rcz))(cdr l1)))
- (if(=(1+(length l2))(length l1))(setq l(cons a l)))
- (setq l1 l2))
- (if(=(1+(length l2))(length l1))(setq l(cons a l)))
- (reverse l))
|