sqqr 发表于 2005-1-31 14:20:00

导出文本 (求助!!!)

导出文本


<BR>  如果仅有少量文字需要导出,那么在“Ddedit”或“Mtext”的编辑框中,选择文字进行复制,然后粘贴到文字编辑器


中即可。但是如果图纸中有大量散落的文字需要导出,上述方法就不太适用了。下面提供的小程序“ExpText.lsp”,可以


通过AutoCAD的窗选方式直接将所选文字输出到文本文件中去。


<BR>;;; ExpText.lsp(defun c:EXT (/ flnm fn s n index ents ent txt)


 (setq flnm (getstring “\nFile name:”))


 (setq fn (open flnm “w”))


 (setq s (ssget))


 (setq n (sslength s))


 (setq index ( - n 1))


 (repeat n


  (setq ents (entget (ssname s index)))


  (setq index ( - index 1))


  (setq ent (assoc 0 ents))


  (if ( = “TEXT”(cdr ent))


    (progn


      (setq txt (cdr (assoc 1 ents)))


      (write-line txt fn)


    )


  )


 )


(close fn)


)


(princ “\n文本导出:EXT”)


<BR>  程序建立后,通过“Appload”命令加载“ExpText.lsp”,在“Command:”后键入EXT回车,输入文件名(可带路径及


后缀名)、窗选实体(自动过滤非文字实体),此时输出到文件的文字实体将按其在AutoCAD实体集中建立的先后次序及回


车换行。



为什么上面方法行不通?

f5612140 发表于 2005-1-31 15:09:00

“XXX”--&gt; "XXX"       引号大写改小写


;;; ExpText.lsp<BR>(defun c:EXTT (/ flnm fn s n index ents ent txt)


 (setq flnm (getstring "\nFile name:"))


 (setq fn (open flnm "w"))


 (setq s (ssget '((0 . "TEXT,MTEXT"))))


 (setq n (sslength s))


 (setq i 0)


 (repeat n


  (setq ents (entget (ssname s i)))


  (setq txt (cdr (assoc 1 ents)))


  (write-line txt fn)


                       (setq i (+ i 1))<BR> )


       (close fn)


)


;(princ “\文字导出:EXT”)

bestlike 发表于 2005-2-21 10:45:00

能直接存到EXCEL里面么?

不知道能不能直接存到EXCEL里面,而且这个程序的自动筛选排序,如果是框选的话好像还有点问题。

chenxianbi 发表于 2005-2-21 13:27:00

你可以先写到一个(.txt)的记事本文件里,然后再导入到excel里,我是这样做的。不知其他大虾有更好的办法。
页: [1]
查看完整版本: 导出文本 (求助!!!)