请教块属性提取中的循环问题
本帖最后由 cindy_fisher 于 2012-5-28 17:20 编辑图中有一些属性块,这些属性块有个共同的属性标记是line_no,我想做的就是把每个属性块中的line_no标签的属性提取出来,这些属性的块首先是块名字不一样,其次是有的块entnext一次就可以得到,有的需要entnext好几次才能得到想要的属性,尝试编写了如下程序,发现死循环了,中间改了几次都在循环的地方出错,实在没招了,发上来求达人支招,谢谢。
(defun C:fun ()
(command "osmode" "0")
(command "zoom" "all")
(setqffn (getfiled "Export the specify texts"
"D:/perfiles/LISP/homecom/"
"txt"
1
)
)
(setq ff (open ffn "a"))
(setq ss_b (ssget "x" '((0 . "insert") (66 . 1))))
(setq a 0)
(repeat (sslength ss_b)
(setq en_b (entnext (ssname ss_b a)))
(setq ctrl t)
(if(= (cdr (assoc 0 (entget en_b))) "attrib")
(progn
(while ctrl
(setq tag (cdr (assoc 2 (entget en_b))))
(if (= (substr tag 1 4) "LINE")
(progn
(setq btxt (cdr (assoc 1 (entget en_b))))
(setq ctrl nil)
(setq p1 '(31.5 1.0 0))
(setq p2 '(33.1250 0.5625 0))
(setq ss_dn (ssget "w" p1 p2 '((0 . "text,mtext"))))
(setq dn (cdr (assoc 1 (entget (ssname ss_dn 0)))))
;;;结束取得文件名
(write-line (strcat dn "[[" btxt) ff)
)
(setq en_b (entnext en_b))
)
)
(setq ctrl t)
)
)
(setq a (+ 1 a))
)
(close ff)
(princ)
)
循环结束条件是:
(= (cdr (assoc 0 (entget en_b)))"SEQEND") 学习学习…… 不错不错,拜读了,顶!
页:
[1]