明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 828|回复: 5

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

[复制链接]
发表于 2020-8-8 13:38:47 | 显示全部楼层 |阅读模式
求大神帮小弟看看这个递增编号的写法问题,无法实现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))
))


 楼主| 发表于 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
 楼主| 发表于 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 也得改呀!
 楼主| 发表于 2020-8-14 09:03:33 | 显示全部楼层
原地踏步 发表于 2020-8-13 16:55
你前面改了,后面的 rev_new 也得改呀!

:D嗯嗯,谢谢,刚刚试了试果然好用了,666
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 15:37 , Processed in 0.187141 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表