neophoible 发表于 2022-7-5 13:44:26

哇,解释得很好,阿泰克!我认为,除非他们也想“修复”它,或者重写它,尽管这可能仍然不会花费他们很长时间,否则不需要一位大师,只需要几分钟就可以补充这一点。这将花费我更长的时间,但无论如何我现在都不能马上去做。

neophoible 发表于 2022-7-5 13:48:43

好的,这是主函数的修订版。我没有更改提取函数,因此这里不再重复。试试这个,看看效果如何。
 
(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)
)

Artek 发表于 2022-7-5 13:53:03

 
你是个明星!
只要一个小小的请求,如果你不介意的话。是否可以去掉开头的“选择对象:”提示?我认为这有点多余。请使其自动选择图形中的所有文本,并仅提示输入3个值:增量、起始数和结束数。除此之外。。。太棒了!干杯

neophoible 发表于 2022-7-5 13:54:29

很高兴它起作用了。 
尝试替换此行
   ( (not (setq ss (ssget fltr)))                ; 4
   ( (not (setq ss (ssget "X" fltr)))                ; 4

Artek 发表于 2022-7-5 13:58:50

 
感谢您的快速回复。太完美了!
 
实际上,我尝试了一下,并提出了下面的解决方案。请不要笑。我简直不敢相信,这只是在那一行加上“X”的问题。大声笑!非常感谢你的帮助。非常感谢。同样的事情也发生在你的cad大师李·麦克身上,更不用说原作者(Tanzillo?)对于这个非常有用的代码。谢谢你们!
 
(setq fltr (ssget "X" '((0 . "TEXT")(1 . "*#*"))))

(cond
   ( (not (setq ss fltr))         ; 4
   (prompt "\nNo valid text found to change.")
   )

amarcon 发表于 2022-7-5 14:00:18

不可更改。非常感谢您提供了一个很棒的小工具。我唯一的问题是它失去了我所需要的格式。
 
例如,假设我们有标签“P001”、“P002”、“P003”、“P004”和“P005”。然后运行工具。。。
 
>增量:2
>起始编号:1
>结束编号:5
 
返回“P3”、“P4”、“P5”、“P6”和“P7”。
 
它丢失了“00”键盘!你知道保持焊盘/精度的方法吗?

neophoible 发表于 2022-7-5 14:05:24

不客气。是的,这是一个非常简单的修复,但我经常发现,只给出新行比解释在一行中添加或替换什么更容易。这样通常就不那么令人困惑了。我尽量不嘲笑或取笑别人的尝试,至少不要当面嘲笑你。我只是在你背后和其他大师一起做。那当然是个笑话。顺便说一句,我并不是真正的大师之一,尽管在那一天,我并没有那么糟糕。我现在才刚刚开始,在很多方面都落后了。

Artek 发表于 2022-7-5 14:06:36

你好,neophoible!
我希望你很好。很抱歉再次打扰你。我只是想知道你是否还能帮我做这件事。我最近遇到了这个问题,当时我必须重新编号由连字符分隔的数字组合。例如A1-A5。上述代码只能更改/更新第一个代码(A1)。有没有可能使它适用于单数和数的组合?非常感谢。

neophoible 发表于 2022-7-5 14:10:18

嗨,阿泰克。这应该是可行的,但需要更多的参与。我建议你向任何想帮忙的人开放这个网站。总的来说,这是一个很好的指导原则,更像是一条规则。最近对我来说,事情变得越来越激烈——这是一件好事,但这意味着我甚至没有那么多时间来参观论坛。

Kets 发表于 2022-7-5 14:13:37

大家好,
 
我对在绘图中使用LISP例程是新手。有人能帮我理解这个惯例吗?如何执行和使用它?
页: 1 [2]
查看完整版本: t计算备选方案