[求助]数字自动编号
谁来帮我看看这个程序:;自动编号程序
;;选择带前缀编号,再选文本,自动累加。
(defun c:zat (/ txt)
(setvar "cmdecho" 0)
(setq os (getvar "osmode"))
(while (/= txt "TEXT")
(setq s1 (car (entsel "选择第一个带前后缀的文本 : "))
txt (dxf 0 (entget s1))
str (dxf 1 (entget s1))
bb str
str-l (strlen str)
ll str-l
n 0
)
)
(while (> ll 1)
(setq str-a (substr bb 2 1))
(if (or (= str-a "0")
(= str-a "1")
(= str-a "2")
(= str-a "3")
(= str-a "4")
(= str-a "5")
(= str-a "6")
(= str-a "7")
(= str-a "8")
(= str-a "9")
)
(progn
(setq bb (substr bb 2))
(setq ll 0)
)
(progn
(setq bb (substr bb 2))
(setq ll (strlen bb))
)
)
(setq n (+ 1 n))
)
(setq a(substr str 1 n)
b(substr str (+ n 1))
ll (strlen b)
)
(setq c (atof b))
(if (> c (expt 10 (- ll 1)))
(check-OK)
(check-NO)
)
(cmdla1)
)
(defun check-NO ()
(alert "后缀非数值,程序中断!")
(exit)
)
(defun check-OK ()
(setq n 1)
(while (setq s1 (car (entsel "选择序号文本 : ")))
(setq tx (strcat a (rtos (+ c n) 2 0)))
(SETQ OLD (ASSOC 1 (entget S1)))
(SETQ NEW (CONS 1 tx))
(SETQ S1 (SUBST NEW OLD (entget S1)))
(ENTMOD S1)
(setq n (+ 1 n))
)
)
报错了!!!
file:///I:/DOCUME~1/XIAXIA~1.TDC/LOCALS~1/Temp/GZI)JEW4D72GK@ODH4OL]NB.jpg
高手们帮帮忙!!!
<p>这里要这样改下:</p>
<p><font face="Verdana"> (while (/= txt "TEXT")<br/> (setq s1 (car (entsel "选择第一个带前后缀的文本 : "))<br/> txt (dxf 0 (entget s1)))<br/> )<br/> (setq str (dxf 1 (entget s1)) ;将这部件移到while外面,因如果选择的不是text,则会出错<br/> bb str<br/> str-l (strlen str)<br/> ll str-l<br/> n 0)<br/></font></p> 麻烦直接给我个能通过的。找二楼版主的意思,又报了别的错误“<font face="Verdana">参数类型错误: stringp nil”</font> 运行没错 , 是不是你那里没有 dxf 函数
页:
[1]