过滤相同坐标问题目
用vl-sort排序时能过滤掉相同坐标<br/>不用vl-sort排序,想过滤掉相同坐标如何实现???<br/> <p>(defun test (lst / a lst2)<br/> (while (setq a (car lst)<br/> lst2 (cons a lst2)<br/> lst (vl-remove-if '(lambda (x) (equal a x 1e-7)) lst)<br/> )<br/> )<br/> (reverse lst2)<br/>)</p> 谢谢2楼的回复~~<br/>我刚才表达的不是很清楚<br/><br/>举个例子:<br/>图纸上有N个圆~~其中有某些圆是重叠的(并不知道重叠圆的位置)<br/>需要全部选择这些圆~~<br/>并逐个提取圆心坐标~~<br/>例:提取一个圆心坐标~~对比表中是否含有这个坐标<br/>如没有~则将该坐标加入到表中~~并提取该圆的半径进行统计个数<br/>如有,则不将该坐标加入到表,也不提取半径进行个数累加。<br/>直到将这些圆坐标全部提取对比完毕<br/><br/>不知能否实现<br/> 顶一下 本帖最后由 作者 于 2008-6-1 16:08:57 编辑 <br /><br /> <p>;;排除掉多余同心圆,返回圆半径列表</p><p>(defun c:ttt (/ ss i en ent cnt lst1 lst2)<br/> (if (setq ss (ssget '((0 . "CIRCLE"))))<br/> (progn<br/> (repeat (setq i (sslength ss))<br/> (setq en (ssname ss (setq i (1- i)))<br/> ent (entget en)<br/> cnt (cdr (assoc 10 ent))<br/> r (vl-catch-all-apply<br/> '(lambda ()<br/> (foreach p lst1<br/> (if (equal cnt p 1e-6) (exit))<br/> )<br/> )<br/> )<br/> )<br/> (if (not (vl-catch-all-error-p r))<br/> (setq lst1 (cons cnt lst1)<br/> lst2 (cons (cdr (assoc 40 ent)) lst2)<br/> )<br/> )<br/> )<br/> )<br/> )<br/> (reverse lst2)<br/>)</p><p></p><p></p><p></p> 本帖最后由 作者 于 2008-6-1 18:35:20 编辑 <br /><br /> <p>楼上的程序有问题啊。</p><p>返回了不同坐标的园的半径。</p>需要把40改为10 <p>能过滤重复的直线或者point点吗?如果可以,就能优化dwg了。</p> <p>论坛有这样的帖子,搜索一下</p> 坐标数组排序(过滤重复)(setq lst '((1 3 0)(4 4 0)(2 5 0)(6 8 0)(1 3 0)(4 4 0)(2 5 0)(6 8 0)))
(setq ile (vl-list-length lst))
(setq i 0)
(repeat ile
(foreach n lst
(if
(equal (nth i lst) n 0.00001)
(progn
(setq lst0 (vl-remove (nth i lst) lst))
(setq lst (cons (nth i lst) lst0))
(setq ile (vl-list-length lst))
)
)
)
(setq i (1+ i))
)
;;y坐标按小~大排序
(setq lsty (vl-sort lst
(function
(lambda (e1 e2)
(< (cadr e1) (cadr e2))
)
)
)
)
;;X坐标按小~大排序
(setq lstx (vl-sort lsty
(function
(lambda (e1 e2)
(< (car e1) (car e2))
)
)
)
)
出输y坐标按小~大排序结果((1 3 0) (4 4 0) (2 5 0) (6 8 0))
出输X坐标按小~大排序结果((1 3 0) (2 5 0) (4 4 0) (6 8 0))
有沒有方法做線性排序?
例如有數個座標點都在一直線上,
例如 '((3 3 0) (2 2 0) (5 5 0) (1 1 0) (4 4 0) (0 0 0))
應該如何做才能將它們排序成
'((0 0 0) (1 1 0) (2 2 0) (3 3 0) (4 4 0) (5 5 0)) 或
'((5 5 0) (4 4 0) (3 3 0) (2 2 0) (1 1 0) (0 0 0))
页:
[1]
2