明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: 韩飞翔

[函数] 选择集排序8式

[复制链接]
发表于 2023-12-5 13:31 | 显示全部楼层
感谢大佬分享~~
发表于 2023-12-6 17:23 | 显示全部楼层
韩飞翔 发表于 2023-12-4 12:03
程序不缺函数,只是函数写在排序函数内,然后子函数作为可变变量清空了,鉴于初学者不会改代码,直接给你改 ...

可以用激情换明经币的呀
 楼主| 发表于 2023-12-6 18:22 | 显示全部楼层
本帖最后由 韩飞翔 于 2023-12-6 18:28 编辑
qazxswk 发表于 2023-12-6 17:23
可以用激情换明经币的呀

哦,知道了
发表于 2023-12-11 11:07 | 显示全部楼层
还是谢谢分享了。
发表于 2023-12-11 11:53 | 显示全部楼层
                                   牛
                         牛       牛
                      牛 牛 牛 牛 牛 牛
                   牛             牛
                         牛 牛 牛 牛 牛

发表于 2023-12-11 15:50 | 显示全部楼层
本帖最后由 e2002 于 2023-12-11 15:56 编辑

当初写批量创建 Layouts 工具的时候,也是需要这么个 左右上下 共8种排序方式(实际上是4种,另外四种是其他4种的倒序而已),为了简化代码,所以用了一点办法。大家共同学习提高,代码没有任何限制没有任何保证(包括商用),完全公开,无币可下载:







  1. ;; 边界列表的2次排序函数
  2.   (defun _lkpt_Layout_CreateByTitleBlocks_Sort ( / i1 sym1 i2 sym2 l_sort u v lReturn)
  3.     (cond
  4.       ( (= sSort "1") (setq i1 1 sym1 '> i2 0 sym2 '<) );;左到右,上到下
  5.       ( (= sSort "2") (setq i1 1 sym1 '< i2 0 sym2 '<) );;左到右,下到上
  6.       ( (= sSort "3") (setq i1 1 sym1 '> i2 0 sym2 '>) );;右到左,上到下
  7.       ( (= sSort "4") (setq i1 1 sym1 '< i2 0 sym2 '>) );;右到左,下到上
  8.       ( (= sSort "5") (setq i1 0 sym1 '< i2 1 sym2 '>) );;上到下,左到右
  9.       ( (= sSort "6") (setq i1 0 sym1 '> i2 1 sym2 '>) );;上到下,右到左
  10.       ( (= sSort "7") (setq i1 0 sym1 '< i2 1 sym2 '<) );;下到上,左到右
  11.       ( (= sSort "8") (setq i1 0 sym1 '> i2 1 sym2 '<) );;下到上,右到左
  12.     );_cond
  13.     (setq l_sort (vl-sort lBoundarys (function (lambda (u v) ((vl-symbol-value sym1) (nth i1 (car u)) (nth i1 (car v)))))) );_第一次排序
  14.     (setq l_sort (vl-sort l_sort (function (lambda (u v)
  15.                                              (if (< (abs (- (nth i1 (car u)) (nth i1 (car v)))) rFuzzy)
  16.                                                ((vl-symbol-value sym2) (nth i2 (car u)) (nth i2 (car v)))
  17.                                                nil
  18.                                              );_fi
  19.                                            );_lam
  20.                                  );_fun
  21.                  )
  22.     );_第二次排序
  23.     (setq lReturn l_sort)
  24.   );_defun _lkpt_Layout_CreateByTitleBlocks_Sort

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

发表于 2023-12-11 16:00 | 显示全部楼层
关于为什么要分开两次排序:
最初是写为一次排序,在条件中判断x,y两个值,然而结果就是会出现问题,按理应该是不会出现错误的,后来我怀疑是vl-sort的问题,然后自己重写了一个专门针对这个x,y坐标值两个条件来排序的函数,就不会出错了,因此,应该是 vl-sort的问题。记得当时和Qf还讨论过vl-sort的这个bug。

点评

好  发表于 2023-12-11 16:17
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-8 06:47 , Processed in 0.295434 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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