(defun C:INCNUM ( / ss off e d s s1 i fltrStartNum EndNum CurNum)
(setq fltr '((0 . "TEXT") (1 . "*#*")))
(cond
( (not (setq ss (ssget fltr))) ; 4
(prompt "\nNo valid text found to change.")
)
(T(initget 3)(setq off (getint "\nIncrement: ")) ; 4
(initget 7) (setq StartNum (getint "\nStarting number: "))
(initget 7) (setq EndNum (getint "\nEnding number: "))
(setvar "cmdecho" 0) (command ".undo" "g")
(repeat (setq i (sslength ss))
(setq e (ssname ss (setq i (1- i))) ; 3
d (entget e)
s (cdr (assoc 1 d))
) ; 3
(if
(and
(setq s (extract s)) ; 3
(setq CurNum(atoi (cadr S)))
(<= StartNum CurNum)
(>= EndNum CurNum)
)
(entmod (list
(cons -1 e)
(cons 1 (strcat
(car s)
(itoa (+ off CurNum)) ; 4
(caddr s)
) )
) )
)
) ; 7
(command ".undo" "e")
)
) ; 3
(princ)
)
你是个明星!
只要一个小小的请求,如果你不介意的话。是否可以去掉开头的“选择对象:”提示?我认为这有点多余。请使其自动选择图形中的所有文本,并仅提示输入3个值:增量、起始数和结束数。除此之外。。。太棒了!干杯 很高兴它起作用了。
尝试替换此行
( (not (setq ss (ssget fltr))) ; 4
( (not (setq ss (ssget "X" fltr))) ; 4
感谢您的快速回复。太完美了!
实际上,我尝试了一下,并提出了下面的解决方案。请不要笑。我简直不敢相信,这只是在那一行加上“X”的问题。大声笑!非常感谢你的帮助。非常感谢。同样的事情也发生在你的cad大师李·麦克身上,更不用说原作者(Tanzillo?)对于这个非常有用的代码。谢谢你们!
(setq fltr (ssget "X" '((0 . "TEXT")(1 . "*#*"))))
(cond
( (not (setq ss fltr)) ; 4
(prompt "\nNo valid text found to change.")
) 不可更改。非常感谢您提供了一个很棒的小工具。我唯一的问题是它失去了我所需要的格式。
例如,假设我们有标签“P001”、“P002”、“P003”、“P004”和“P005”。然后运行工具。。。
>增量:2
>起始编号:1
>结束编号:5
返回“P3”、“P4”、“P5”、“P6”和“P7”。
它丢失了“00”键盘!你知道保持焊盘/精度的方法吗? 不客气。是的,这是一个非常简单的修复,但我经常发现,只给出新行比解释在一行中添加或替换什么更容易。这样通常就不那么令人困惑了。我尽量不嘲笑或取笑别人的尝试,至少不要当面嘲笑你。我只是在你背后和其他大师一起做。那当然是个笑话。顺便说一句,我并不是真正的大师之一,尽管在那一天,我并没有那么糟糕。我现在才刚刚开始,在很多方面都落后了。 你好,neophoible!
我希望你很好。很抱歉再次打扰你。我只是想知道你是否还能帮我做这件事。我最近遇到了这个问题,当时我必须重新编号由连字符分隔的数字组合。例如A1-A5。上述代码只能更改/更新第一个代码(A1)。有没有可能使它适用于单数和数的组合?非常感谢。 嗨,阿泰克。这应该是可行的,但需要更多的参与。我建议你向任何想帮忙的人开放这个网站。总的来说,这是一个很好的指导原则,更像是一条规则。最近对我来说,事情变得越来越激烈——这是一件好事,但这意味着我甚至没有那么多时间来参观论坛。 大家好,
我对在绘图中使用LISP例程是新手。有人能帮我理解这个惯例吗?如何执行和使用它?
页:
1
[2]