434939575 发表于 2015-8-3 11:07:31

再次请求支援,表Y值相同合并

(defun c:tt ()
(setq a '(0 00))
(setq b '(10 0 0))
(setq c '(220 200))
;(setq li (list a b c))

)
;希望结果(((0 00)(10 0 0))(220 200))y值相同表连接,没办法,只能求教了。

434939575 发表于 2015-8-3 11:44:43

大师,结果没有变化,就是按总表的顺序。把Y值相同的合并为一个表.只管Y值。

cable2004 发表于 2015-8-3 12:36:08

本帖最后由 cable2004 于 2015-8-3 16:10 编辑

(defun c:tt ()
(setq a '(0 00))
(setq b '(10 2 0))
(setq c '(220 200))
(setq li (list a b c '(120 200) '(320 200) '(420 200) '(40 2 0) '(30 2 0) '(110 2 0) '(10 00) '(20 0 0) '(30 0 0) '(40 0 0)))
(setq aaa (sort-same-y li))
(princ)
)

;;;(((220 20 0) (120 20 0) (320 20 0) (420 20 0))
;;;((10 2 0) (40 2 0) (30 2 0) (110 2 0))
;;;((0 0 0) (10 0 0) (20 0 0) (30 0 0) (40 0 0)))

(defun sort-same-y (l / lst l1 a)
   (while l
   (setq a   (car l)
   l   (cdr l)
         l1(vl-remove-if '(lambda (e) (/= (cadr e)(cadr a)) ) l)
   lst (cons (cons a l1) lst)
   l1 nil
   l(vl-remove-if '(lambda (e) (= (cadr e)(cadr a)) ) l)
   ))
lst)是不是这个意思

434939575 发表于 2015-8-3 15:58:12

cable2004 发表于 2015-8-3 12:36 static/image/common/back.gif
是不是这个意思

这个还请您看一下,能运行出结果,提示:应用程序错误: 参数类型错误,高级的我玩不转

434939575 发表于 2015-8-3 16:08:25

测试((-144.259 -1.22465e-015 0.0) (-105.59 0.0 0.0) (-125.031 3.15913e-015 0.0) (-144.259 10.0 0.0) (-125.031 10.0 0.0) (-105.59 10.0 0.0) (-105.59 20.0 0.0) (-144.259 20.0 0.0) (-125.031 20.0 0.0)) 返回:(((-105.59 20.0 0.0) (-144.259 20.0 0.0) (-125.031 20.0 0.0)) ((-105.59 10.0 0.0)) ((-144.259 10.0 0.0) (-125.031 10.0 0.0)) ((-125.031 3.15913e-015 0.0)) ((-105.59 0.0 0.0)) ((-144.259 -1.22465e-015 0.0)))有点点问题。

434939575 发表于 2015-8-3 17:10:10

多谢版主指点!
页: [1]
查看完整版本: 再次请求支援,表Y值相同合并