lisp用于顺序编号
我经常需要按顺序对行进行编号和重新编号。从上到下-逐列。见附件。
数字为文字或多行文字。有人能提出一种写lisp的方法吗?这样我只需要选择我想重新编号的文本(数字),它就会逐渐编号1-2-3。。。。
我被卡住了,因为这些数字在列中,我想在单个选择中完成。
测验图纸 萨胡
-以较低版本保存附着的dwg
-给它一个快速菜单>文本>自动文本编号
-在这里 李的NumInc可能是你最好的选择。我再次链接到它,麻生太郎在他的http上加倍了。
这是我几个月前做的一个(只是玩排序)。
就像我说的,李的可能会完全满足你的需要。我知道我在用它眨眼:
alanjt公司
你的对群众工作很有用
我喜欢这个 它很笨重,所以要小心。那只是一场深夜的比赛。 alanjt:我试过你的Lisp程序。我需要做的比你的代码要简单得多。所以我正在研究它以适应我的需要。
我需要重新编号的文本不是一条完美的直线(列),它们都有前缀(')。
像这样:
'12 '12
“sa”13
“1”gh
'23 '12
'45 '23 这条线索可能会引起一些兴趣。 我被困住了
-如何对文本选择集排序(单列上下顺序)
需要一些帮助:哎呀: 在我发布的链接中有一些例子。
下面是一个示例,使用文本选择集并按Y值从上到下排序。。。
(if (setq ss (ssget '((0 . "TEXT"))))
(vl-sort
((lambda (i / lst)
(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))))))
)
) Alanjt:
我使用了你上次发布的代码。列表按照插入顺序排序,而不是按照从上到下的y轴排序。
是因为“caddr”返回第三个元素吗?我做错了什么?
我需要做的是对图纸上的一列文本重新编号。
(defun C:sorty()
(if (setq ss (ssget '((0 . "TEXT"))))
(vl-sort
((lambda (i / lst)
(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))))))
)
)
;************
(and
((lambda (i)
(while (setq e (ssname ss (setq i (1+ i))))
(setq ent (entget e))
(entmod (subst (cons 1 (strcat "'" (rtos (+ i 1) 2 0))) ;new item
(assoc 1 ent) ; old item
ent ;list
)
)
)
)
-1
)
)
(princ)
); DEFUN
页:
[1]
2