明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1347|回复: 7

[提问] 关于排序的问题请大佬们指点指点迷津

[复制链接]
发表于 2019-4-7 22:57:35 | 显示全部楼层 |阅读模式
本帖最后由 Shengfantasy 于 2019-4-7 22:58 编辑

比如我框选了这个四个图号形成一个选择集 thss ,怎么让它们按从小到大排序下来变成有序的?我就是排序这一步不会实现。
     



本帖子中包含更多资源

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

x
发表于 2019-4-8 10:02:33 | 显示全部楼层
发表于 2019-4-8 10:39:41 | 显示全部楼层
(defun c:test()
    (if (setq thss (ssget '((0 . "text") (1 . "S-*#"))))
        (progn
             (setq i 0  n (sslength thss))
             (setq lst nil)
             (repeat n
                  (setq lst (cons (cdr (assoc 1 (entget (ssname thss i))))))
                  (setq i (1+ i))
             )
             (setq lst (vl-sort lst '(lambda(a b)
                                         (setq a1 (vl-string-subst "" "-" (vl-string-subst "" "S" a)))
                                         (setq b1 (vl-string-subst "" "-" (vl-string-subst "" "S" b)))
                                         (< (atof a1) (atof b1))
                                     )
                        )
             )
             (princ "\n排序后:")
             (foreach x lst
                 (princ (strcat "\n" x))
             )
        )
    )
    (princ)
)
 楼主| 发表于 2019-4-9 00:30:21 | 显示全部楼层
yshf 发表于 2019-4-8 10:39
(defun c:test()
    (if (setq thss (ssget '((0 . "text") (1 . "S-*#"))))
        (progn

哈!多谢大佬!我今晚研究一晚上到现在,发现自己错在哪儿了!我是
(setq lst (vl-sort lst '(lambda(a b)
                                         (setq a1 (vl-string-subst "" "-" (vl-string-subst "" "S" a)))
                                         (setq b1 (vl-string-subst "" "-" (vl-string-subst "" "S" b)))
                                         (< (atof a1) (atof b1))
                                     )
                        )
             )
的(setq lst  ...)没写,刚学lisp,对语法还不熟,不过你的这段程序比我严谨好多!
发表于 2019-4-9 09:14:01 | 显示全部楼层
这个可以   
发表于 2019-4-9 09:23:03 | 显示全部楼层
能不能把改好的程序发一下,我学习一下,我的怎么执行不了呢。。。
发表于 2019-4-9 12:10:47 | 显示全部楼层
执行到(setq lst (cons (cdr (assoc 1 (entget (ssname thss i)))))),显示参数太少
发表于 2019-4-9 13:10:34 | 显示全部楼层
(cons (cdr (assoc 1 (entget (ssname thss i)))) lst)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-19 03:24 , Processed in 0.187698 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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