关于排序的问题请大佬们指点指点迷津
本帖最后由 Shengfantasy 于 2019-4-7 22:58 编辑比如我框选了这个四个图号形成一个选择集 thss ,怎么让它们按从小到大排序下来变成有序的?我就是排序这一步不会实现。
ref:
http://zml84.blog.sohu.com/241043935.html
(defun c:test()
(if (setq thss (ssget '((0 . "text") (1 . "S-*#"))))
(progn
(setq i 0n (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)
) 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,对语法还不熟,不过你的这段程序比我严谨好多!:lol 这个可以 能不能把改好的程序发一下,我学习一下,我的怎么执行不了呢。。。 执行到(setq lst (cons (cdr (assoc 1 (entget (ssname thss i)))))),显示参数太少 (cons (cdr (assoc 1 (entget (ssname thss i)))) lst)
页:
[1]