明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 712|回复: 8

[已解答] 表提重复

[复制链接]
发表于 2016-3-18 13:49 | 显示全部楼层 |阅读模式
下表请帮忙提重复:
第一项坐标系相同,第二项图层名相同,第三项数值相同
满中以上3个要求移除此项
(
  ((-1739.11 -1629.18 0.0) "STRIP" 2.79 <图元名: 7fffef9bac0>)
  ((-1739.11 -1629.18 0.0) "STRIP" 2.79 <图元名: 7fffef9b980>)
  ((-1739.11 -1629.18 0.0) "STRIP" 2.81 <图元名: 7fffef9bxx0>)
)

得到结果
(
  ((-1739.11 -1629.18 0.0) "STRIP" 2.79 <图元名: 7fffef9bac0>)
  ((-1739.11 -1629.18 0.0) "STRIP" 2.81 <图元名: 7fffef9bxx0>)
)
发表于 2016-3-18 16:38 | 显示全部楼层
本帖最后由 fan_zh 于 2016-3-18 17:16 编辑


返回的最后一项图元名还需要吗,冒失没有用
去除最后一项后,用下面函数
(defun delsame(l1 / l2);;表中去除重复元素(重复过的取第一次出现)
  (while(setq l2(cons(car l1)l2)l1(vl-remove(car l1)(cdr l1))))
  (reverse l2))

莫名其妙的点评 ,发个公开函数又怎么了?
发布些对初学者有用的东西却老受到一些人的排斥
总有些心理阴暗的人却在做着为人师表的行径




点评

解禁了,就从良吧!尊重别人也等于尊重自己!  发表于 2016-3-18 16:43
 楼主| 发表于 2016-3-18 16:59 | 显示全部楼层
fan_zh 发表于 2016-3-18 16:38
返回的最后一项图元名还需要吗,冒失没有用
去除最后一项后,用下面函数
(defun delsame(l1 / l2);;表中 ...

就是要保留图元名,不然早完成了

得到结果
(
  ((-1739.11 -1629.18 0.0) "STRIP" 2.79 <图元名: 7fffef9bac0>)
  ((-1739.11 -1629.18 0.0) "STRIP" 2.81 <图元名: 7fffef9bxx0>)
)
发表于 2016-3-18 17:05 | 显示全部楼层
那你保留哪个图元名呢,第一个?

点评

同坐标,同图层,同大小 这3个约束条件下,保留第一个或是随意哪个,没关系  发表于 2016-3-18 17:08
 楼主| 发表于 2016-3-18 17:09 | 显示全部楼层
fan_zh 发表于 2016-3-18 17:05
那你保留哪个图元名呢,第一个?

同坐标,同图层,同大小 这3个约束条件下,保留第一个或是随意哪个,没关系
发表于 2016-3-18 17:24 | 显示全部楼层
我不想回复了,到时可能会有人说,autolisp也是他的版权了

点评

哎~  发表于 2016-3-18 17:27
发表于 2016-3-20 15:10 | 显示全部楼层
  1. (setq lst '(((-1739.11 -1629.18 0.0) "STRIP" 2.79 <图元名: 7fffef9bac0>)
  2.             ((-1739.11 -1629.18 0.0) "STRIP" 2.79 <图元名: 7fffef9b980>)
  3.             ((-1739.11 -1629.18 0.0) "STRIP" 2.81 <图元名: 7fffef9bxx0>)
  4.            )
  5. )
  6. ;; (aaa lst)
  7. (defun aaa (lst / lst1 lst2 a b)
  8.   (setq lst1 '()
  9.         lst2 '()
  10.   )
  11.   (foreach a lst
  12.     (setq b (list (car a) (cadr a) (caddr a)))
  13.     (if (not (member b lst1))
  14.       (setq lst1 (cons b lst1)
  15.             lst2 (cons a lst2)
  16.       )
  17.     )
  18.   )
  19.   (reverse lst2)
  20. )
发表于 2016-3-20 16:55 | 显示全部楼层
本帖最后由 llsheng_73 于 2016-3-20 17:09 编辑
xyp1964 发表于 2016-3-20 15:10


  1. (defun delsameat(l1 n / l2 a)
  2.   (if n(setq l1(mapcar'(lambda(x)(cons(mapcar'(lambda(y)(nth y x))n)x))l1)))
  3.   (while(setq a(caar l1)l2(cons(cdar l1)l2)l1(vl-remove-if'(lambda(x)(equal(car x)a))(cdr l1))))
  4.   (reverse l2))

$  (DELSAMEAT'(((-1739.11 -1629.18 0.0) "STRIP" 2.79 <图元名: 7fffef9bac0>)
                          ((-1739.11 -1629.18 0.0) "STRIP" 2.79 <图元名: 7fffef9b980>)
                          ((-1739.11 -1629.18 0.0) "STRIP" 2.81 <图元名: 7fffef9bxx0>))
                   '(0 1 2))
(((-1739.11 -1629.18 0.0) "STRIP" 2.79 <图元名: 7FFFEF9BAC0>)
((-1739.11 -1629.18 0.0) "STRIP" 2.81 <图元名: 7FFFEF9BXX0>))
_$
 楼主| 发表于 2016-3-21 10:39 | 显示全部楼层
感谢xyp1964版主,llsheng_73大大
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-20 23:40 , Processed in 0.182060 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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