cj52000 发表于 2010-5-17 09:53:00

xshrimp兄,能否帮忙改下如下形式的递增,<br/>ABC-50-123<br/>ABC-50-123-131<br/>ABC-50-123-131-123212<br/>其中123数字为递增,也就是第三组数字递增,谢谢!

客人 发表于 2010-5-17 11:02:00

(defun c:bhao (/&nbsp;&nbsp; var1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; basetext&nbsp;selflag&nbsp;&nbsp;&nbsp; tabnum enttext enttext0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; basevbatext&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bgf&nbsp;bgL&nbsp;&nbsp;&nbsp; valuea<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; valueb&nbsp;&nbsp; enttexta&nbsp;&nbsp; seltexta&nbsp;enttexta0&nbsp; prefix suffix fixnumstr i fixnum prefixflag fixflag<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; basetexta fixnumlength<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; (setq var1 (getvar "cmdecho"))<br/>&nbsp; (setvar "cmdecho" 0)<br/>&nbsp; (setq&nbsp;enttext<br/>&nbsp; (entget<br/>&nbsp;&nbsp;&nbsp; (setq seltext (car (entsel "选择基数\n")))<br/>&nbsp; )<br/>&nbsp; )<br/>&nbsp; (setq enttext0 (cdr (assoc 0 enttext)))<br/>&nbsp; (setq&nbsp;basetext (cond<br/>&nbsp;&nbsp;&nbsp;&nbsp; ((= "TEXT" enttext0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cdr (assoc 1 enttext))<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; ((= "INSERT" enttext0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cdr (assoc 1 (entget (entnext seltext))))<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (t 1)<br/>&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (setq&nbsp;selflag&nbsp;1<br/>&nbsp;tabnum 1<br/>&nbsp; )<br/>&nbsp; <br/>&nbsp; (setq fixnumstr "0123456789")<br/>&nbsp; (setq prefix "");;正确判断经下三组数据<br/>&nbsp; (setq fixnum "")<br/>&nbsp; (setq suffix "")<br/>&nbsp; (setq i 0)<br/>&nbsp; <br/>&nbsp; (while (not&nbsp; (wcmatch fixnumstr (strcat "*" (chr (vl-string-elt basetext i)) "*")))<br/>&nbsp;&nbsp;&nbsp; (setq prefix (strcat prefix (chr (vl-string-elt basetext i))))<br/>&nbsp;&nbsp;&nbsp; (setq i (1+ i)))<br/>&nbsp; <br/>&nbsp; (setq basetexta (vl-string-left-trim prefix basetext))<br/>&nbsp; <br/>&nbsp; (setq i 0)<br/>&nbsp; (setq fixflag 1)<br/>;;;&nbsp; (princ "IT'S OK1!")<br/>&nbsp; (while fixflag<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;(wcmatch fixnumstr<br/>&nbsp;&nbsp; (strcat "*" (chr (vl-string-elt basetexta i)) "*")<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq fixnum (strcat fixnum (chr (vl-string-elt basetexta i))))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq i (1+ i))<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;(= i (strlen basetexta))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq fixflag nil)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; ;;;(princ "IT'S OK!")<br/>&nbsp; (setq suffix (vl-string-left-trim fixnum basetexta))<br/>&nbsp; (setq valueb fixnum)<br/>&nbsp; (setq fixnumlength (strlen fixnum))<br/>&nbsp; &nbsp; ;;;(princ "IT'S OK1!")<br/>&nbsp; (while (= 1 selflag)<br/>&nbsp;&nbsp;&nbsp; (princ "本次编号:")<br/>&nbsp;&nbsp;&nbsp; (setq valueb (atoi valueb))<br/>&nbsp;&nbsp;&nbsp; (princ valueb)<br/>&nbsp;&nbsp;&nbsp; (setq valueb (+ tabnum valueb))<br/>&nbsp;&nbsp;&nbsp; (setq valueb (itoa valueb))<br/>&nbsp;&nbsp;&nbsp; (while (&lt;(strlen valueb) fixnumlength)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq valueb (strcat "0" valueb)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq basetext (strcat prefix valueb suffix))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; (setq seltexta (entsel "选择要修改的编号\n"))<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; (if&nbsp;seltexta<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq enttexta (entget (car seltexta)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq selflag nil)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;selflag<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;(setq enttexta0 (cdr (assoc 0 enttexta)))<br/>&nbsp;(setq enttexta<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cond<br/>&nbsp;&nbsp; ((= "TEXT" enttexta0)<br/>&nbsp;&nbsp;&nbsp; (subst (cons 1 basetext)<br/>&nbsp;&nbsp;&nbsp; (assoc 1 enttexta)<br/>&nbsp;&nbsp;&nbsp; enttexta<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; ((= "INSERT" enttexta0)<br/>&nbsp;&nbsp;&nbsp; (subst (cons 1 basetext)<br/>&nbsp;&nbsp;&nbsp; (assoc 1 (entget (entnext (car seltexta))))<br/>&nbsp;&nbsp;&nbsp; (entget (entnext (car seltexta)))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (t 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;(entmod enttexta)<br/>&nbsp;(entupd (car seltexta))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;end while entcn<br/>&nbsp; )<br/>&nbsp; (princ)<br/>)

xiguao 发表于 2010-5-17 11:31:00

(defun c:bhao (/&nbsp;&nbsp; var1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; basetext&nbsp;selflag&nbsp;&nbsp;&nbsp; tabnum enttext enttext0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; basevbatext&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bgf&nbsp;bgL&nbsp;&nbsp;&nbsp; valuea<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; valueb&nbsp;&nbsp; enttexta&nbsp;&nbsp; seltexta&nbsp;enttexta0&nbsp; prefix suffix fixnumstr i fixnum prefixflag fixflag<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; basetexta fixnumlength<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; (setq var1 (getvar "cmdecho"))<br/>&nbsp; (setvar "cmdecho" 0)<br/>&nbsp; (setq&nbsp;enttext<br/>&nbsp; (entget<br/>&nbsp;&nbsp;&nbsp; (setq seltext (car (entsel "选择基数\n")))<br/>&nbsp; )<br/>&nbsp; )<br/>&nbsp; (setq enttext0 (cdr (assoc 0 enttext)))<br/>&nbsp; (setq&nbsp;basetext (cond<br/>&nbsp;&nbsp;&nbsp;&nbsp; ((= "TEXT" enttext0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cdr (assoc 1 enttext))<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; ((= "INSERT" enttext0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cdr (assoc 1 (entget (entnext seltext))))<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (t 1)<br/>&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (setq&nbsp;selflag&nbsp;1<br/>&nbsp;tabnum 1<br/>&nbsp; )<br/>&nbsp; <br/>&nbsp; (setq fixnumstr "0123456789")<br/>&nbsp; (setq prefix "");正确判断以下三个数据<br/>&nbsp; (setq fixnum "")<br/>&nbsp; (setq suffix "")<br/>&nbsp; (setq i 0)<br/>&nbsp; <br/>&nbsp; (while (not&nbsp; (wcmatch fixnumstr (strcat "*" (chr (vl-string-elt basetext i)) "*")))<br/>&nbsp;&nbsp;&nbsp; (setq prefix (strcat prefix (chr (vl-string-elt basetext i))))<br/>&nbsp;&nbsp;&nbsp; (setq i (1+ i)))<br/>&nbsp; <br/>&nbsp; (setq basetexta (vl-string-left-trim prefix basetext))<br/>&nbsp; <br/>&nbsp; (setq i 0)<br/>&nbsp; (setq fixflag 1)<br/>;;;&nbsp; (princ "IT'S OK1!")<br/>&nbsp; (while fixflag<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;(wcmatch fixnumstr<br/>&nbsp;&nbsp; (strcat "*" (chr (vl-string-elt basetexta i)) "*")<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq fixnum (strcat fixnum (chr (vl-string-elt basetexta i))))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq i (1+ i))<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;(= i (strlen basetexta))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq fixflag nil)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; ;;;(princ "IT'S OK!")<br/>&nbsp; (setq suffix (vl-string-left-trim fixnum basetexta))<br/>&nbsp; (setq valueb fixnum)<br/>&nbsp; (setq fixnumlength (strlen fixnum))<br/>&nbsp; &nbsp; ;;;(princ "IT'S OK1!")<br/>&nbsp; (while (= 1 selflag)<br/>&nbsp;&nbsp;&nbsp; (princ "本次编号:")<br/>&nbsp;&nbsp;&nbsp; (setq valueb (atoi valueb))<br/>&nbsp;&nbsp;&nbsp; (princ valueb)<br/>&nbsp;&nbsp;&nbsp; (setq valueb (+ tabnum valueb))<br/>&nbsp;&nbsp;&nbsp; (setq valueb (itoa valueb))<br/>&nbsp;&nbsp;&nbsp; (while (&lt;(strlen valueb) fixnumlength)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq valueb (strcat "0" valueb)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq basetext (strcat prefix valueb suffix))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; (setq seltexta (entsel "选择要修改的编号\n"))<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; (if&nbsp;seltexta<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq enttexta (entget (car seltexta)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq selflag nil)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;selflag<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;(setq enttexta0 (cdr (assoc 0 enttexta)))<br/>&nbsp;(setq enttexta<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cond<br/>&nbsp;&nbsp; ((= "TEXT" enttexta0)<br/>&nbsp;&nbsp;&nbsp; (subst (cons 1 basetext)<br/>&nbsp;&nbsp;&nbsp; (assoc 1 enttexta)<br/>&nbsp;&nbsp;&nbsp; enttexta<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; ((= "INSERT" enttexta0)<br/>&nbsp;&nbsp;&nbsp; (subst (cons 1 basetext)<br/>&nbsp;&nbsp;&nbsp; (assoc 1 (entget (entnext (car seltexta))))<br/>&nbsp;&nbsp;&nbsp; (entget (entnext (car seltexta)))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (t 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;(entmod enttexta)<br/>&nbsp;(entupd (car seltexta))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;end while entcn<br/>&nbsp; )<br/>&nbsp; (princ)<br/>)

cj52000 发表于 2010-5-17 15:30:00

谢谢楼上的热心,好像达不到我想要的效果!

cj52000 发表于 2010-5-18 14:53:00

各位,能否帮忙改下如下形式的递增,<br/>ABC-50-123<br/>ABC-50-123-131<br/>ABC-50-123-131-123212<br/>其中123数字为递增,也就是第三组数字递增,谢谢!

xshrimp 发表于 2010-5-18 16:42:00

楼主自己修改一下就可以了啊.
适合
ABC-50-123
ABC-50-123-131
ABC-50-123-131-123212
其中123数字为递增
(defun c:test ()
(setq i (getint "\输入起始数字:"))
(while (setq txt (ssget ":S" '((0 . "TEXT"))))
(setq txt (ssname txt 0) dat (entget txt) str (cdr (assoc 1 dat)))
;(setq str "ABC-001-50-2A2") ;test
(setq strlst (strParse Str "-"))
(setq numws (strlen (nth 2 strlst)))
(setq txt_num_new (itoa i ))
(repeat (- numws (strlen txt_num_new))
      (setq txt_num_new(strcat "0" txt_num_new))
)
(setq nuwstr (StrUnParse (append (list (car strlst))(list (cadr strlst))(list txt_num_new) (cdddrstrlst)) "-"))
(entmod    (subst      (cons 1nuwstr)      (assoc 1 dat)      Dat) )
(setq i (1+ i))
)
)

cj52000 发表于 2010-5-19 11:18:00

<p>谢谢xshrimp兄的关注,程序正是我想要的,但是有一个疑问,我对比了一下你之前的程序,只有一处是不一样的,就是这句“(nth 2 strlst)))”中的数字不一样,你之前的程序数字是1,递增的是第二组数字,你给我改的程序数字是2,递增的是第三组数字,我把程序中的数改成3,试了一下发现第四组数字并没有递增,递增的仍然是第三组数字,我想说的是改哪个地方,可以自由更改,来满足不同组的递增,谢谢!</p>
页: 1 [2]
查看完整版本: 求助自动数字递增