失落的白羊座24 发表于 2020-8-8 13:38:47

求大神帮小弟看看这个递增编号的写法问题,无法实现JD01~JD09的递增

求大神帮小弟看看这个递增编号的写法问题,无法实现JD01~JD09的递增,现在的结果是JD1~JD9(无法自动在1前面加0)

修改加工图号插件
(defun c:BH()
   (setvar "cmdecho" 0)
    (Setq jgt(Getstring "\n 请输入图号前缀:"))
    (Setq Rev(Getreal "\n 请输入起始图号:"))
    (Setq Block (Ssget'((0 . "Insert"))))
    (Setq N 0)
   (Setq Rev_new(strcat jgt (rtos rev 2 0)))
   (Repeat (Sslength Block)
   (Setq Ent (Entget (Ssname Block N)))
   (Setq Ent1 Ent)
   (setq SS (Cdr (Assoc -1 ent1)))
   (IF (/= "SEQEND" (cdr (assoc 0 ENT)))
         (WHILE (= (CDR (ASSOC 0 (SETQ ENT1 (ENTGET (ENTNEXT (CDR (ASSOC -1 ENT1))))))) "ATTRIB")
             (cond
               ((= (CDR (ASSOC 2 ENT1)) "JD01")
                (SETQ ENT1 (SUBST (CONS 1 Rev_new) (ASSOC 1 ENT1) ENT1))
                   (ENTMOD ENT1))
               )
             )
         )
   (entdel SS)
   (entdel SS)
   (setq n (1+ n))
   (setq rev (1+ rev))
   (Setq Rev_new(strcat jgt (rtos rev 2 0)))
   )
   (setvar "cmdecho" 1)
(princ)
)



原地踏步 发表于 2020-8-9 10:41:50

本帖最后由 原地踏步 于 2020-8-9 10:45 编辑

(Setq Rev(Getreal "\n 请输入起始图号:")) 最好改为:
(initget 5)
(Setq Rev(Getint "\n 请输入起始图号:"))
(Setq Rev_new(strcat jgt (rtos rev 2 0))) 改为:
(Setq Rev_new(if (< rev 10)
   (strcat jgt "0" (itoa rev))
   (strcat jgt(itoa rev))
))


失落的白羊座24 发表于 2020-8-10 08:54:31

原地踏步 发表于 2020-8-9 10:41
(Setq Rev(Getreal "\n 请输入起始图号:")) 最好改为:
(initget 5)
(Setq Rev(Getint "\n 请输入 ...

感谢大神回复,按照说明修改了命令之后,出现一个问题:只有XX-01是正确的,XX-2~9前面还是没有0

失落的白羊座24 发表于 2020-8-10 08:55:02

原地踏步 发表于 2020-8-9 10:41
(Setq Rev(Getreal "\n 请输入起始图号:")) 最好改为:
(initget 5)
(Setq Rev(Getint "\n 请输入 ...

修改的命令如下:
修改加工图号插件
(defun c:BH()
   (setvar "cmdecho" 0)
    (Setq jgt(Getstring "\n 请输入图号前缀:"))
    (initget 5)
    (Setq Rev(Getint "\n 请输入起始图号:"))
    (Setq Block (Ssget'((0 . "Insert"))))
    (Setq N 0)
   (Setq Rev_new(if (< rev 10)
   (strcat jgt "0" (itoa rev))
   (strcat jgt(itoa rev))
))
   (Repeat (Sslength Block)
   (Setq Ent (Entget (Ssname Block N)))
   (Setq Ent1 Ent)
   (setq SS (Cdr (Assoc -1 ent1)))
   (IF (/= "SEQEND" (cdr (assoc 0 ENT)))
         (WHILE (= (CDR (ASSOC 0 (SETQ ENT1 (ENTGET (ENTNEXT (CDR (ASSOC -1 ENT1))))))) "ATTRIB")
             (cond
               ((= (CDR (ASSOC 2 ENT1)) "JD01")
                (SETQ ENT1 (SUBST (CONS 1 Rev_new) (ASSOC 1 ENT1) ENT1))
                   (ENTMOD ENT1))
               )
             )
         )
   (entdel SS)
   (entdel SS)
   (setq n (1+ n))
   (setq rev (1+ rev))
   (Setq Rev_new(strcat jgt (rtos rev 2 0)))
   )
   (setvar "cmdecho" 1)
(princ)
)

原地踏步 发表于 2020-8-13 16:55:38

你前面改了,后面的 rev_new 也得改呀!

失落的白羊座24 发表于 2020-8-14 09:03:33

原地踏步 发表于 2020-8-13 16:55
你前面改了,后面的 rev_new 也得改呀!

:D嗯嗯,谢谢,刚刚试了试果然好用了,666
页: [1]
查看完整版本: 求大神帮小弟看看这个递增编号的写法问题,无法实现JD01~JD09的递增