(defun c:SortY (/ ss lst ent)
((lambda (n)
(if (setq ss (ssget "_:L" '((0 . "TEXT"))))
(foreach x
(vl-sort
((lambda (i)
(while (setq e (ssname ss (setq i (1+ i))))
(setq lst (cons e lst))
)
)
-1
)
(function
(lambda (a b) (> (caddr (assoc 10 (entget a))) (caddr (assoc 10 (entget b)))))
)
)
(setq ent (entget x))
(entmod (subst (cons 1 (strcat "'" (itoa (setq n (1+ n))))) (assoc 1 ent) ent))
)
)
)
0
)
(princ)
) 非常感谢你。太棒了。
不客气,但你懂代码吗? 这就是我现在使用它的方式。仅更改了选择标准。
再次感谢。
(defun c:SortY (/ ss lst ent)
((lambda (n)
(if (setq ss (ssget (list (cons 0 "TEXT,MTEXT")
(cons 1 "'*"))))
(foreach x
(vl-sort
((lambda (i)
(while (setq e (ssname ss (setq i (1+ i))))
(setq lst (cons e lst))
)
)
-1
)
(function
(lambda (a b) (> (caddr (assoc 10 (entget a))) (caddr (assoc 10 (entget b)))))
)
)
(setq ent (entget x))
(entmod (subst (cons 1 (strcat "'" (itoa (setq n (1+ n))))) (assoc 1 ent) ent))
)
)
)
0
)
(princ)
) 但是你知道它是怎么工作的吗?
此外,您不应该从ssget中删除“_:L”(过滤器锁定层),因为如果单步执行锁定层上的文本对象,例程将失败。
使用:
(setq ss (ssget "_:L" (list (cons 0 "TEXT,MTEXT") (cons 1 "'*")))) 我很害怕说我明白,但现在你已经写好了,嗯,让我们说,我正在经历它。
我是这样开始的:
-选择
-订单
-更换(entmod)
所以我把代码分成了几个部分。显然你的代码做得很好。
我已经按照您的建议更正了代码,也感谢您的解释。我以为我是
我试图掌握lamda(n)和lamda(I)的工作原理
. 我在调试模式下使用了动画功能。
谢谢 SSGet信息:
6 lambda i和n部分只是将数字应用于匿名函数。在这种情况下,它阻止我将i定义为-1,将n定义为0。
页:
1
[2]