明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2262|回复: 3

carrot1983 或哪位大大能否把这段代码改一下,实现字段中任意位置数字连续COPY递增

[复制链接]
发表于 2012-2-22 15:10 | 显示全部楼层 |阅读模式
本帖最后由 puzb2001 于 2012-2-23 17:42 编辑

原代码位置:
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=65331&page=1#pid347118
感觉在图纸编号时非常有作用,程序每次只能拷贝一次,不能实现连续拷贝递增,哪位大侠改改,谢谢!
(princ "\n>>>请输入dnd,选择多个数字文本! carrot1983 2008-1-13<<<")
(defun c:dnd (/       txt_add ss      slen    i       na      data
       txt     txt_len nub     k       txt_each       num
       num_len n       temp    txt0    n0      expt_num
       faq1    faq2    int
      )
  (setq int (getint "\n不考虑后缀字符的位数<0>:"))
  (if (= nil int)
    (setq int 0)
  ) ;_ end if
  (setq txt_add (getint "\n请输入增值(默认为1):"))
  (if (= nil txt_add)
    (setq txt_add 1)
  ) ;_ end if
  (if (setq ss (ssget '((0 . "*text"))))
    (progn
      (command "._copy" ss "" '(0 0 0) '(0 0 0))
      (setq ss (ssget "p"))
      (princ "指定基点")
      (command "._move" ss"" pause)
      (setq slen (- (sslength ss) 1))
      (setq i 0)
      (while (<= i slen)
(setq na (ssname ss i))
(setq data (entget na))
(setq txt (cdr (assoc '1 data)))
(setq v10 (cdr (assoc '10 data)))
(setq txt_len (strlen txt)) ;9
(setq txt_cut (substr txt 1 (- txt_len int))) ;abc02
(setq txt_len_cut (strlen txt_cut)) ;5
(setq txt_43 (substr txt (- txt_len (1- int)) int)) ;(03)
(setq nub "")
(setq k txt_len_cut)
(while (>= k 1)
   (setq txt_each (substr txt_cut k 1))
   (if (and (>= (ascii txt_each) 48) (<= (ascii txt_each) 57))
     ;取字串中"0~9"中的ascii字符txt_each.
     (progn
       (setq nub (strcat txt_each nub))
       (setq k (1- k))
     )    ;end progn
     (setq k 0)
   )    ;end if
)    ;end while
(if (= nub "")
   (progn
     (princ "\n末尾不是数字")
     (exit)
   ) ;_ end progn
) ;_ end if
(setq num (atoi nub))  ;nub="02" num=2
(setq num_len (strlen nub)) ;2
;;;以下是考虑数字串中的零的问题
(setq n 1)
(setq temp 0)
(while (and (<= n num_len) (= temp 0))
   (setq txt0 (atof (substr nub n 1)))
   (if (/= txt0 0)
     (progn
       (setq n0 (1- n))
       (setq temp 1)
     ) ;_ end progn
   ) ;_ end if
   (setq n (1+ n))
)    ;end while
(setq
   expt_num (substr txt_cut 1 (+ n0 (- txt_len num_len int)))
)
(setq faq1 (itoa (+ num txt_add)))
(setq faq2 (strcat expt_num faq1 txt_43))
(setq data (subst (cons 1 faq2) (assoc '1 data) data))
(entmod data)
(setq i (+ i 1))
      )     ;end while
    )
  )
  (prin1)
) ;_ end defun
 楼主| 发表于 2012-2-25 11:36 | 显示全部楼层
第一次发贴就没人回,悲催啊,自顶一下
发表于 2013-6-11 02:55 | 显示全部楼层
upupupup,求carrot1983物件对齐代码~改个命令..DQ和我已有代码冲突噢
发表于 2013-6-11 11:14 | 显示全部楼层
也期待有高手来解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 17:19 , Processed in 0.397305 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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