852456 发表于 2018-10-10 16:27:11

我有个重复坐标的点集合 怎么去除重复项

'((616787.0 4.90479e+006) (616897.0 4.9048e+006) (616902.0 4.90471e+006) (616795.0 4.90471e+006) (616787.0 4.90479e+006) (616897.0 4.9048e+006))这里有个6个坐标列表 其中有两个是重复的 怎么删除重复项 并且位置不变



dingtiedt 发表于 2018-10-10 16:52:13

本帖最后由 dingtiedt 于 2018-10-10 17:17 编辑

删除表中重复数据,保留图元名,并统计表中相同数量
http://bbs.mjtd.com/forum.php?mo ... 370&fromuid=7309019
(出处: 明经CAD社区)

(vl-remove-if '(lambda (x) (equal (car x) (caar lst))) lst)


852456 发表于 2018-10-10 17:34:42

谢谢,以成功解决

lisperado 发表于 2018-10-10 18:59:46

;Lee Mac
(defun LM:Unique ( l )
    (if l (cons (car l) (LM:Unique (vl-remove (car l) (cdr l)))))
)


嗨!请留意!
(setq lst
'((616787.0 4.90479e+006) (616897.0 4.9048e+006) (616902.0 4.90471e+006) (616795.0 4.90471e+006) (616787.0 4.90479e+006) (616897.0 4.9048e+006))
)

;LM 递归返回
‘((616787.0 4.90479e+006) (616897.0 4.9048e+006) (616902.0 4.90471e+006) (616795.0 4.90471e+006))
787 897 902 795, X值没重复

; 楼上VL函数返回
((616897.0 4.9048e+006) (616902.0 4.90471e+006) (616795.0 4.90471e+006) (616897.0 4.9048e+006))
897 902 795 897, X值有重复


(equal
(LM:Unique lst)
(vl-remove-if '(lambda (x) (equal (car x) (caar lst))) lst)
1e-5
)

nil
;结果不一致

852456 发表于 2018-10-12 10:37:36

lisperado 发表于 2018-10-10 18:59
嗨!请留意!
(setq lst
'((616787.0 4.90479e+006) (616897.0 4.9048e+006) (616902.0 4.90471e+006 ...

谢谢你虽然看不懂 但是两个我都试了下还是你的我用着对
页: [1]
查看完整版本: 我有个重复坐标的点集合 怎么去除重复项