明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1164|回复: 6

[提问] 关于表处理,各位老师进来指点下

[复制链接]
发表于 2016-8-1 21:10:35 | 显示全部楼层 |阅读模式
5明经币
本帖最后由 qinleilei 于 2016-8-3 18:45 编辑

最近碰到了一个关于表处理问题,不知道怎么弄,请各位老师指点下

下面的表是由  坐标 图元名 组成的一个表  
( (pt1 e1) (pt2 e2) (pt3 e3) (pt4 e4) (pt5 e5) (pt6 e6)  (pt7 e7) 此处还有很多省略.....)

判断表中 坐标相同的  图元名 归在一起,比如 pt1 pt3 pt7 坐标相同  pt2 pt5 坐标相同  pt4 pt6 坐标相同 ,此处还有很多省略...
处理完后达到下面的效果
((pt1  e1 e3 e7 ) (pt2 e2 e5) (pt4 e4 e6)  此处还有很多省略.....)
函数怎么写,才能快速处理成这样的效果?

问题解决了,
真的很感谢大家的帮忙,谢谢了!

最佳答案

查看完整内容

(setq a nil lst(list(list pt1 e1)(list pt2 e2)(list pt3 e3)(list pt4 e4)(list pt5 e5)(list pt6 e6)(list pt7 e7)))
发表于 2016-8-1 21:10:36 | 显示全部楼层
本帖最后由 llsheng_73 于 2016-8-2 19:36 编辑

(setq a nil
         lst(list(list pt1 e1)(list pt2 e2)(list pt3 e3)(list pt4 e4)(list pt5 e5)(list pt6 e6)(list pt7 e7)))
  1. ;;考虑坐标精度问题,取小数后三位
  2. (mapcar'(lambda(x)(cons(mapcar'atof(car x))(cdr x)))
  3.        (foreach x lst
  4. (setq x(cons(mapcar'(lambda(x)(rtos x 2 3))(car x))(cdr x))
  5.         a(if(setq c(car x)b(assoc c a))
  6.     (subst(append b(cdr x))b a)
  7.     (append a(list x))))))

  1. ;;不考虑坐标精度就简单多了
  2. (foreach x lst
  3.   (setq a(if(setq c(car x)b(assoc c a))
  4.     (subst(append b(cdr x))b a)
  5.     (append a(list x)))))

点评

不好意思,确实是我的表给定错了,已纠正。你的程序很OK!  发表于 2016-8-3 18:34
测试了下 也是有问题,不知道是不是我给定的 表有问题, 我把代码都放到一楼了,抽空帮我看看好么  发表于 2016-8-3 18:13
回复

使用道具 举报

发表于 2016-8-1 22:33:21 | 显示全部楼层
写个循环while
回复

使用道具 举报

发表于 2016-8-2 08:54:08 | 显示全部楼层
试试这个

(defun c:tt ()
  (setq        lst0 '(((1.0 1.0) a)
               ((1.0 1.0) b)
               ((1.0 2.0) c)
               ((2.0 2.0) d)
               ((2.0 2.0) e)
               ((2.0 3.0) e)
              )
  )                                        ;测试样表
  (defun delsame (l)
    (if        l
      (cons (car l) (delsame (vl-remove (car l) l)))
    )
  )
  (setq lst (delsame (mapcar 'car lst0)))
  (setq lst (mapcar 'list lst))
  (foreach x lst0
    (setq x1 (assoc (car x) lst))
    (setq lst (subst (append x1 (cdr x)) x1 lst))
  )
)

点评

不好意思,我找出原因了,是我的表给定错了,已纠正。你的程序很完美!  发表于 2016-8-3 18:33
大哥!我测试了一下,还是有问题,能帮我看看么,代码我放到一楼了  发表于 2016-8-3 18:11

评分

参与人数 1明经币 +1 收起 理由
qinleilei + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2016-8-2 14:29:03 | 显示全部楼层
可以参考:游程编码
回复

使用道具 举报

发表于 2022-10-6 10:55:18 来自手机 | 显示全部楼层
坐标精度。。学习
回复

使用道具 举报

发表于 2023-2-25 22:35:14 | 显示全部楼层
Sylvanas 发表于 2016-8-2 08:54
试试这个

(defun c:tt ()

递归,数量多了以后速度巨慢,怎么解决?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 10:34 , Processed in 0.190855 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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