本帖最后由 cindy_fisher 于 2012-5-28 17:20 编辑
图中有一些属性块,这些属性块有个共同的属性标记是line_no,我想做的就是把每个属性块中的line_no标签的属性提取出来,这些属性的块首先是块名字不一样,其次是有的块entnext一次就可以得到,有的需要entnext好几次才能得到想要的属性,尝试编写了如下程序,发现死循环了,中间改了几次都在循环的地方出错,实在没招了,发上来求达人支招,谢谢。
 - (defun C:fun ()
- (command "osmode" "0")
- (command "zoom" "all")
- (setq ffn (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)
- )
|