找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3127|回复: 11

[] (XD::List:TableSort)对点索引表进行行/列排序

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-6-30 15:54:56 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::List:TableSort
调用格式: (XD::List:TableSort lst row bp fuzz)
参数说明: lst - 表
row - 0 按行 1 按列
bp - 0 BottomLeft
1 BottomRight
2 TopRight
3 TopLeft
fuzz - 容差
返回值: 排序后的表
函数简介: 最大应用对实体根据特征点按行/列进行排序
函数来源: 原创
函数作者: eachy
适用版本: 不限 
最后更新时间: 2013-12-06
备注: -
演示图片: -

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

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

×
  1. ;;Author: eachy
  2. (defun XD::List:TableSort (lst row bp fuzz / nlst n nnlst)
  3.   (and
  4.     (listp (caar lst))
  5.     (or
  6.       (and
  7.         (zerop row)
  8.         (or (and (member bp '(0 1))
  9.                  (setq
  10.                    nlst
  11.                     (vl-sort lst
  12.                              '(lambda (e1 e2) (> (cadar e1) (cadar e2)))
  13.                     )
  14.                  )
  15.             )
  16.             (and (member bp '(2 3))
  17.                  (setq
  18.                    nlst
  19.                     (vl-sort lst
  20.                              '(lambda (e1 e2) (< (cadar e1) (cadar e2)))
  21.                     )
  22.                  )
  23.             )
  24.         )
  25.         (setq nnlst (list (list (car nlst))))
  26.         (while (setq nlst (cdr nlst))
  27.           (setq n (car nlst))
  28.           (if (equal (cadar n) (cadr (caaar nnlst)) fuzz)
  29.             (setq
  30.               nnlst (cons (cons (caar nnlst) (cons n (cdar nnlst)))
  31.                           (cdr nnlst)
  32.                     )
  33.             )
  34.             (setq nnlst (cons (list n) nnlst))
  35.           )
  36.         )
  37.         (or
  38.           (and (= bp 0)
  39.                (setq nnlst (mapcar '(lambda (x)
  40.                                       (if (> (length x) 1)
  41.                                         (vl-sort
  42.                                           x
  43.                                           (function
  44.                                             (lambda (a b)
  45.                                               (if (= (caar a) (caar b))
  46.                                                 (< (cadar a) (cadar b))
  47.                                                 (< (caar a) (caar b))
  48.                                               )
  49.                                             )
  50.                                           )
  51.                                         )
  52.                                         x
  53.                                       )
  54.                                     )
  55.                                    nnlst
  56.                            )
  57.                )
  58.           )
  59.           (and (= bp 1)
  60.                (setq nnlst
  61.                       (mapcar '(lambda (x)
  62.                                  (if (> (length x) 1)
  63.                                    (vl-sort x
  64.                                             '(lambda (a b)
  65.                                                (if (= (caar a) (caar b))
  66.                                                  (< (cadar a) (cadar b))
  67.                                                  (> (caar a) (caar b))
  68.                                                )
  69.                                              )
  70.                                    )
  71.                                    x
  72.                                  )
  73.                                )
  74.                               nnlst
  75.                       )
  76.                )
  77.           )
  78.           (and (= bp 2)
  79.                (setq
  80.                  nnlst
  81.                   (mapcar '(lambda (x)
  82.                              (if (> (length x) 1)
  83.                                (vl-sort        x
  84.                                         '(lambda (a b)
  85.                                            (if (= (caar a) (caar b))
  86.                                              (> (cadar a) (cadar b))
  87.                                              (> (caar a) (caar b))
  88.                                            )
  89.                                          )
  90.                                )
  91.                                x
  92.                              )
  93.                            )
  94.                           nnlst
  95.                   )
  96.                )
  97.           )
  98.           (and (= bp 3)
  99.                (setq
  100.                  nnlst
  101.                   (mapcar '(lambda (x)
  102.                              (if (> (length x) 1)
  103.                                (vl-sort        x
  104.                                         '(lambda (a b)
  105.                                            (if (= (caar a) (caar b))
  106.                                              (> (cadar a) (cadar b))
  107.                                              (< (caar a) (caar b))
  108.                                            )
  109.                                          )
  110.                                )
  111.                                x
  112.                              )

  113.                            )
  114.                           nnlst
  115.                   )
  116.                )
  117.           )
  118.         )
  119.       )
  120.       (and (= row 1)
  121.            (or (and (member bp '(0 3))
  122.                     (setq nlst (vl-sort        lst
  123.                                         (function (lambda (e1 e2)
  124.                                                     (> (caar e1) (caar e2))
  125.                                                   )
  126.                                         )
  127.                                )
  128.                     )
  129.                )
  130.                (and (member bp '(1 2))
  131.                     (setq nlst (vl-sort        lst
  132.                                         '(lambda (e1 e2)
  133.                                            (< (caar e1) (caar e2))
  134.                                          )
  135.                                )
  136.                     )
  137.                )
  138.            )
  139.            (setq nnlst (list (list (car nlst))))
  140.            (while (setq nlst (cdr nlst))
  141.              (setq n (car nlst))
  142.              (if (equal (caar n) (caaaar nnlst) fuzz)
  143.                (setq
  144.                  nnlst (cons (cons (caar nnlst) (cons n (cdar nnlst)))
  145.                              (cdr nnlst)
  146.                        )
  147.                )
  148.                (setq nnlst (cons (list n) nnlst))
  149.              )
  150.            )
  151.            (or
  152.              (and (= bp 0)
  153.                   (setq        nnlst
  154.                          (mapcar
  155.                            '(lambda (x)
  156.                               (if (> (length x) 1)
  157.                                 (vl-sort x
  158.                                          '(lambda (a b)
  159.                                             (if        (= (cadar a) (cadar b))
  160.                                               (< (caar a) (caar b))
  161.                                               (< (cadar a) (cadar b))
  162.                                             )
  163.                                           )
  164.                                 )
  165.                                 x
  166.                               )
  167.                             )
  168.                            nnlst
  169.                          )
  170.                   )
  171.              )
  172.              (and (= bp 1)
  173.                   (setq        nnlst
  174.                          (mapcar
  175.                            '(lambda (x)
  176.                               (if (> (length x) 1)
  177.                                 (vl-sort x
  178.                                          '(lambda (a b)
  179.                                             (if        (= (cadar a) (cadar b))
  180.                                               (> (caar a) (caar b))
  181.                                               (< (cadar a) (cadar b))
  182.                                             )
  183.                                           )
  184.                                 )
  185.                                 x
  186.                               )
  187.                             )
  188.                            nnlst
  189.                          )
  190.                   )
  191.              )
  192.              (and (= bp 2)
  193.                   (setq        nnlst
  194.                          (mapcar '(lambda (x)
  195.                                     (if        (> (length x) 1)
  196.                                       (vl-sort x
  197.                                                '(lambda        (a b)
  198.                                                   (if (= (cadar a) (cadar b))
  199.                                                     (> (caar a) (caar b))
  200.                                                     (> (cadar a) (cadar b))
  201.                                                   )
  202.                                                 )
  203.                                       )
  204.                                       x
  205.                                     )

  206.                                   )
  207.                                  nnlst
  208.                          )
  209.                   )
  210.              )
  211.              (and (= bp 3)
  212.                   (setq        nnlst
  213.                          (mapcar '(lambda (x)
  214.                                     (if        (> (length x) 1)
  215.                                       (vl-sort x
  216.                                                '(lambda        (a b)
  217.                                                   (if (= (cadar a) (cadar b))
  218.                                                     (< (caar a) (caar b))
  219.                                                     (> (cadar a) (cadar b))
  220.                                                   )
  221.                                                 )
  222.                                       )
  223.                                       x
  224.                                     )
  225.                                   )
  226.                                  nnlst
  227.                          )
  228.                   )
  229.              )
  230.            )
  231.       )
  232.     )
  233.   )
  234.   nnlst
  235. )

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

已领礼包: 593个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-6-30 16:24:38 | 显示全部楼层
支持eachy大师,有问题请教,我工作中,有很多时候是在UCS PLAN 下画图,这样可以充分利用图面。请问,在这种UCS下,这个函数可以用吗?

点评

不管UCS还是WCS,表现出来的就是数,排序只和数有关,至于怎么用这个数是你要先行处理的。  详情 回复 发表于 2013-6-30 17:05
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2013-6-30 17:05:20 | 显示全部楼层
Lisphk 发表于 2013-6-30 16:24
支持eachy大师,有问题请教,我工作中,有很多时候是在UCS PLAN 下画图,这样可以充分利用图面。请问,在这 ...

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

使用道具 举报

发表于 2013-7-1 05:14:30 | 显示全部楼层
本帖最后由 GTJ116600 于 2013-7-1 05:16 编辑

呵呵,大师,这个函数好呀。这就是实体空间排序呀!!!
对用CAD做管理类的相关部门,用处飞常好呀。{:soso_e113:}
顶,大师
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-7-1 05:26:43 | 显示全部楼层
大师,能否再进一步,编一个点按在空间曲线实体的走向(点在空间曲线上的投影)进行排序。这样,实体空间特征点就可以根据用户的需要,在空间进行随机排序了。


点评

http://www.xdcad.net/forum/forum.php?mod=viewthread&tid=668841 http://www.xdcad.net/forum/forum.php?mod=viewthread&tid=668455 http://www.xdcad.net/forum/forum.php?mod=viewthread&tid=143822  详情 回复 发表于 2013-7-1 06:10
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-7-1 06:10:31 | 显示全部楼层
GTJ116600 发表于 2013-7-1 05:26
大师,能否再进一步,编一个点按在空间曲线实体的走向(点在空间曲线上的投影)进行排序。这样,实体空间特 ...

http://www.xdcad.net/forum/forum.php?mod=viewthread&tid=668841
http://www.xdcad.net/forum/forum.php?mod=viewthread&tid=668455
http://www.xdcad.net/forum/forum.php?mod=viewthread&tid=143822

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2014-11-30 12:14:06 | 显示全部楼层
能否详细介绍一下用法。

点评

去看下 楼上 2楼,7楼的链接,多看代码。  详情 回复 发表于 2014-11-30 12:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-11-30 12:17:20 | 显示全部楼层
wjl1014 发表于 2014-11-30 12:14
能否详细介绍一下用法。

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

使用道具 举报

已领礼包: 478个

财富等级: 日进斗金

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 20:00 , Processed in 0.415984 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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