autolisp吧 关注:475贴子:1,086
  • 2回复贴,共1

while 循环请教

只看楼主收藏回复

用lisp做了一个自动读取图纸明细栏的程序,明细栏是这个块做出来,现在程序做好了,但遇到一个问题:在while内以自动读取上一行的实体进行判断,然后读取实体内的各个参数,用鼠标选定while内部完整程序,单步运行,读取出来的明细栏数据一行行都没有问题,可以写到文件内,但就是不能选定整个程序运行,试试选定整个(while )也不行,读取的数据也是乱的,数据的记录发现重复和数据记录数字不对,仔细看了整个程序,原则上设计没有问题,否则在while内单步运行也应该有问题,实际内部运行的都是都是对的,问下各位大神,知道大致是什么问题吗?
(defun c:btl ()
(setq wj "d:\\btl.txt")
(setq fd (open wj "w"))
(setq st (ssget))
(setq n 1)
(while (/= st nil)
(setq stm (ssname st 0))
(if (/= stm nil)
(progn
(setqzstm0 (entnext stm))
(if(/= zstm0 nil)
(progn
(setq txsj (entget zstm0))
(if (/=txsj nil)
(progn
(setqtxb (assoc 1 txsj)) ;材料
(if(/= txb nil)
(setq cl (cdr txb))
)
)
)
)
)
)
)
。。。。
(setq zstm7 (entnext zstm6))
(setq txsj (entget zstm7))
(setq txb (assoc 1 txsj)) ;总重
(setq zz (cdr txb))
(setq
clh (strcat xh ";" dh ";" mc ";" sl";" cl ";" dz ";" zz ";" bz)
)
(write-line clh fd)
;找下一行
。。。
(setq ps1 (list (+ (car xuhao1) drt)
(+ (* (- n 1) hjj) (+ (cadr xuhao2) drt))
)
)
(setq ps2 (list (+ (car xuhao2) (* 2 drt))
(+ (* (- n 1) hjj) (- (+ hjj (cadr xuhao2))drt))
)
)
(setq tx2 (ssget "c" ps1 ps2))
(setq st tx2)
(setq n (+ n 1))
(if (= st nil)
(close fd)
)
) ;endwhile
(command "_zoom" "p")
) ;_ end of defun


IP属地:湖北1楼2020-06-18 08:38回复
    人烟稀少


    IP属地:湖北2楼2020-06-18 16:40
    回复
      在cad里用表格做明细表,再直接输出不就行了


      IP属地:山东3楼2022-05-13 16:07
      回复