明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2559|回复: 6

[基础] [求助]如何删除X相同的点表 并按X排序

[复制链接]
发表于 2010-9-1 15:18:00 | 显示全部楼层 |阅读模式

请大家帮助

 

((18 20)  (40 15)  (18 50)  (30 50)  (40 25) >>>>>>((18 20) (30 50) (40 15))

保留的点为X相同的其中任一点即可

发表于 2010-9-1 19:40:00 | 显示全部楼层
;; 保留的点为X相同的其中任一点
;; (x-sort '((18 20)  (40 15)  (18 50)  (30 50)  (40 25))) → '((18 20) (30 50) (40 15))
(defun x-sort (lst / lst1 lst2 a e1 e2)
  (setq lst1 '()
 lst2 '()
  )
  (foreach a lst
    (if (not (member (car a) lst1))
      (setq lst1 (cons (car a) lst1)
     lst2 (cons a lst2)
      )
    )
  )
  (vl-sort lst2 '(lambda (e1 e2) (< (car e1) (car e2))))
)
 楼主| 发表于 2010-9-1 20:22:00 | 显示全部楼层

谢谢版主相助

 

 

借版主程式改了一个

;如何删除y相同的点表 并按y排序
;; 保留的点为y相同的其中任一点
;; (x-sort '((18 20)  (40 15)  (18 50)  (30 50)  (40 25))) → '((40 15) (18 20) (40 25) (18 50))
;(setq lst '((18 20)  (40 15)  (18 50)  (30 50)  (40 25)))

(defun y-sort (lst / lst1 lst2 a e1 e2)
  (setq lst1 '()
 lst2 '()
  )
  (foreach a lst
    (if (not (member (cadr a) lst1))
      (setq lst1 (cons (cadr a) lst1)
     lst2 (cons a lst2)
      )
    )
  )
  (vl-sort lst2 '(lambda (e1 e2) (< (cadr e1) (cadr e2))))
)

发表于 2010-12-16 23:38:11 | 显示全部楼层
顶   不知道用的上用不上
发表于 2012-4-20 16:26:38 | 显示全部楼层
点如果有重合的怎么办呢
发表于 2012-4-20 21:17:46 | 显示全部楼层
强悍、、、、、
发表于 2013-12-18 21:01:30 | 显示全部楼层
正好用到这个代码,试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-26 00:54 , Processed in 0.172205 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表