找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 826|回复: 16

[讨论]:关于删除一坐标点列表中x或y坐标值相同的元素

[复制链接]
发表于 2004-6-12 10:41:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
请教各位一个问题,怎么用lisp实现删除点列表x或y坐标值相同的点。或是用vl-remove。
最好有用lisp实现的。不知道哪位大侠有这个程序。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-6-12 11:57:29 | 显示全部楼层
那个函数不行的
我试过
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-12 13:04:32 | 显示全部楼层
用lisp了,能实现吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-12 18:24:08 | 显示全部楼层
最初由 playboy 发布
[B]那个函数不行的
我试过 [/B]

为什么不行?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-13 10:27:27 | 显示全部楼层
如果节点有重复的
不能合理的判断替换哪一个坐标
所以不行的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-13 10:46:56 | 显示全部楼层
怎么才算合理?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-14 04:36:16 | 显示全部楼层

Re: [讨论]:关于删除一坐标点列表中x或y坐标值相同的元素

最初由 lzy9788 发布
[B]请教各位一个问题,怎么用lisp实现删除点列表x或y坐标值相同的点。或是用vl-remove。
最好有用lisp实现的。不知道哪位大侠有这个程序。 [/B]


说说具体要求, 是都删除还是保留哪一个?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-14 07:34:41 | 显示全部楼层

  1.   [FONT=courier new]
  2. (defun del_tpt (lst jd / my_lst item lst1)
  3.   (setq my_lst '())
  4.   (while (> (length lst) 0)
  5.     (setq my_lst (cons (car lst) my_lst)
  6.         lst (cdr lst))
  7.     (setq lst1 lst)
  8.     (foreach item lst1
  9.       (if (equal (car my_lst) item jd)
  10.         (setq  lst (vl-remove item lst))
  11.         )
  12.       )
  13.     )
  14.   (reverse my_lst)
  15.   )
  16.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-14 10:23:58 | 显示全部楼层
要保留其中一个
to 青铜长老,我有一愚问:你的那个jd是个什么……,在测试时我不会用这个jd.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-14 11:09:36 | 显示全部楼层
最初由 lijiao 发布
[B][CODE]
  
(defun del_tpt (lst jd / my_lst item lst1)
  (setq my_lst '())
  (while (> (length lst) 0)
    (setq my_lst (cons (car lst) my_lst)
        lst (cdr lst))
    (setq lst1 lst)
    (foreach item lst1
      (if (equal (car my_lst) item jd)
        (setq  lst (vl-remove item lst))
        )
      )
    )
  (reverse my_lst)
  ) [/B]


此程序有误: (equal (car my_lst) item jd)应该为
(if (equal (car (car my_lst))(car item) jd)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-14 13:11:54 | 显示全部楼层
最初由 lzy9788 发布
[B]要保留其中一个
to 青铜长老,我有一愚问:你的那个jd是个什么……,在测试时我不会用这个jd. [/B]

JD就是精度,比如(1.00001 2 3)和(1.001 2 3)是否是重合的点?
*******************************
TO LSJJM:程序没有错误,不知你是否测试过,这是我的测试:

  1.   [FONT=courier new]
  2. _$ (setq pt '((0 0 0.001) (0 0 0) (0 0 0) (0 0 0) (1 1 1) (1 1 1) (2 2 2)))
  3. ((0 0 0.001) (0 0 0) (0 0 0) (0 0 0) (1 1 1) (1 1 1) (2 2 2))
  4. _$ (del_tpt pt 0.001)
  5. ((0 0 0.001) (0 0 0) (1 1 1) (2 2 2))
  6. _$ (del_tpt pt 0.01)
  7. ((0 0 0.001) (1 1 1) (2 2 2))  [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-14 19:46:26 | 显示全部楼层
深一层car就是将x相同的点排除,而不是在精度内x,y,z相同的点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-14 20:56:29 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-15 08:08:51 | 显示全部楼层
最初由 lijiao 发布
[B].....TO LSJJM:程序没有错误,不知你是否测试过...[/B]


1. 没有测试过怎么gan说呀?
(setq pt '((0 0 0.001) (0 0 0) (0 0 0) (0 0 0) (1 1 1) (1 1 1) (2 2 2)))
jd =0.001
测试结果: ((0 0 0.001) (0 0 0) (1 1 1) (2 2 2))
将程序中(equal (car my_lst) item jd) 改为(if (equal (car (car my_lst))(car item) jd)返回正确结果:((0 0 0.001) (1 1 1) (2 2 2))
2. 从函数和表达式内容和逻辑意义看, lst /my_lst是点表, 那么(car my_lst) 就是一个点, (equal (car my_lst) item jd) 判别的是两个点是否相等(重合). 而不是1楼楼主说的x/y坐标值相同.
3. 如果是删除重合点使用acet函数更简单:
(defun del_tpt (lst jd )
   (acet-list-remove-duplicates lst jd)
)
返回和你程序相同结果.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-15 15:37:12 | 显示全部楼层
(SETQ PTS '((121.158 252.669 0.0) (121.158 89.6678 0.0) (374.959 252.669 0.0) (374.959 89.6678 0.0)))
(SETQ PT (del_tpt PTS 0.01))
这样求出来的PT并没有除掉X坐标相同的项。
请长老看看.
按lsjjm 的就能达到我要的效果了。
多谢两位长老相助。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-16 21:50 , Processed in 0.336178 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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