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