xiaxiang 发表于 2010-7-19 08:39:00

[求助]数字自动编号

谁来帮我看看这个程序:
;自动编号程序
;;选择带前缀编号,再选文本,自动累加。
(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

高手们帮帮忙!!!

ZZXXQQ 发表于 2010-7-19 12:48:00

<p>这里要这样改下:</p>
<p><font face="Verdana">&nbsp;(while (/= txt "TEXT")<br/>&nbsp; (setq s1 (car (entsel "选择第一个带前后缀的文本 : "))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txt (dxf 0 (entget s1)))<br/>&nbsp;)<br/>&nbsp;(setq str (dxf 1 (entget s1))&nbsp;;将这部件移到while外面,因如果选择的不是text,则会出错<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bb str<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str-l (strlen str)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ll str-l<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n 0)<br/></font></p>

xiaxiang 发表于 2010-7-19 15:50:00

麻烦直接给我个能通过的。找二楼版主的意思,又报了别的错误“<font face="Verdana">参数类型错误: stringp nil”</font>

gufeng 发表于 2010-7-19 16:53:00

运行没错 , 是不是你那里没有 dxf 函数
页: [1]
查看完整版本: [求助]数字自动编号