明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: caoyongjun

[提问] 图层名列表中的元素排序问题,请各位赐教!

[复制链接]
发表于 3 小时前 | 显示全部楼层
xtjd 发表于 2024-9-26 07:58
(setq lst '("PS_2_PW" "DIE_1_PW" "PS_PW" "PH_PW" "DIE_PW" "PH_1_PW" "DIE_2_PW" "PS_1_PW"))
(setq ls ...

如果排序的表中没有规则表中的关键字,排序后会丢掉的怎么处理?如下表中的“DDD-”
(setq lst '("PS_2_PW" "DIE_1_PW" "PS_PW" "PH_PW" "DIE_PW" "PH_1_PW" "DIE_2_PW" "PS_1_PW" "DDD-1" "DDD-2"))
(setq lst< '("DIE" "PS" "PH"))
回复 支持 反对

使用道具 举报

发表于 3 小时前 | 显示全部楼层
  1. (setq lst '("PS_2_PW"         "DDD-1"      "DIE_1_PW"   "PS_PW"
  2.             "PH_PW"         "DIE_PW"     "PH_1_PW"           "DIE_2_PW"
  3.             "DDD-34"         "PS_1_PW"
  4.            )
  5. )
  6. (setq lst< '("DIE" "PS" "PH"))
  7. (foreach abc lst
  8.   (or (vl-position
  9.         t
  10.         (mapcar
  11.           '(lambda (x) (wcmatch abc (strcat x "*")))
  12.           lst<
  13.         )
  14.       )
  15.       (setq lst2 (cons abc lst2))
  16.   )
  17. )
  18. (append
  19.   (apply
  20.     'append
  21.     (mapcar
  22.       '(lambda (a / l)
  23.          (if (setq l (vl-remove-if-not
  24.                        '(lambda (b) (wcmatch b (strcat a "*")))
  25.                        lst
  26.                      )
  27.              )
  28.            (vl-sort l
  29.                     '(lambda (c d / an)
  30.                        (setq an (+ (strlen a) 2))
  31.                        (< (atoi (substr c an 1)) (atoi (substr d an 1)))
  32.                      )
  33.            )
  34.          )
  35.        )
  36.       lst<
  37.     )
  38.   )
  39.   (reverse lst2)
  40. )
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-20 23:35 , Processed in 0.140052 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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