啵浪鼓 发表于 2016-3-18 13:49:00

表提重复

下表请帮忙提重复:
第一项坐标系相同,第二项图层名相同,第三项数值相同
满中以上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>)
)

fan_zh 发表于 2016-3-18 16:38:17

本帖最后由 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:59:51

fan_zh 发表于 2016-3-18 16:38 static/image/common/back.gif
返回的最后一项图元名还需要吗,冒失没有用
去除最后一项后,用下面函数
(defun delsame(l1 / l2);;表中 ...

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

得到结果
(
((-1739.11 -1629.18 0.0) "STRIP" 2.79 <图元名: 7fffef9bac0>)
((-1739.11 -1629.18 0.0) "STRIP" 2.81 <图元名: 7fffef9bxx0>)
)

fan_zh 发表于 2016-3-18 17:05:17

那你保留哪个图元名呢,第一个?

啵浪鼓 发表于 2016-3-18 17:09:11

fan_zh 发表于 2016-3-18 17:05 static/image/common/back.gif
那你保留哪个图元名呢,第一个?

同坐标,同图层,同大小 这3个约束条件下,保留第一个或是随意哪个,没关系

fan_zh 发表于 2016-3-18 17:24:05

我不想回复了,到时可能会有人说,autolisp也是他的版权了

xyp1964 发表于 2016-3-20 15:10:08

(setq lst '(((-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>)
         )
)
;; (aaa lst)
(defun aaa (lst / lst1 lst2 a b)
(setq lst1 '()
      lst2 '()
)
(foreach a lst
    (setq b (list (car a) (cadr a) (caddr a)))
    (if (not (member b lst1))
      (setq lst1 (cons b lst1)
            lst2 (cons a lst2)
      )
    )
)
(reverse lst2)
)

llsheng_73 发表于 2016-3-20 16:55:34

本帖最后由 llsheng_73 于 2016-3-20 17:09 编辑

xyp1964 发表于 2016-3-20 15:10 http://bbs.mjtd.com/static/image/common/back.gif


(defun delsameat(l1 n / l2 a)
(if n(setq l1(mapcar'(lambda(x)(cons(mapcar'(lambda(y)(nth y x))n)x))l1)))
(while(setq a(caar l1)l2(cons(cdar l1)l2)l1(vl-remove-if'(lambda(x)(equal(car x)a))(cdr l1))))
(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:20

感谢xyp1964版主,llsheng_73大大
页: [1]
查看完整版本: 表提重复