TENGOMARK 发表于 2008-7-9 08:14:00

关于写出文件之后的回用读入问题

<p>各位好!</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有一个问题请教,我编写了一个程序,把一组坐标点写出到一个名叫 aaa.txt 的文件中,然后在该已经打开的AutoCAD图中,用这一个 aaa.txt 与另外一组早已经存在的 bbb.txt 坐标数据文件来进行画线段操作,但是遗憾的是操作中间报错,报错主要报告不能用aaa.txt文件!</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 只有当关闭CAD重新启动,或者把 aaa.txt 文件改名才能做连接线段操作,非常麻烦,不知道哪一位能够给予指点,在写出坐标程序或者在连线段程序内加入什么东西后,能够做到写出 aaa.txt 文件后,在连线段程序直接读入用这个aaa.txt程序。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在此先谢了!</p><p></p>

caoyin 发表于 2008-7-9 09:36:00

楼主最好把程序和 .txt文件贴上来

hzj526 发表于 2008-7-10 13:09:00

本帖最后由 作者 于 2008-7-10 13:17:24 编辑 <br /><br /> <p>;指定加入的内容,调用WriteFile程序完成追加<br/>&nbsp;(defun add_new()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;……</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ……</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq file1 (findfile "texing_data.txt"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if file1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq path (vl-filename-directory file1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq file2 (strcat path "<a href="file://aaaax.txt/">\\aaaax.txt</a>"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff0033">(setq f (open file2 "w"))</font>&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff0033">(princ add_str f)<br/></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0033"> (close f)<br/></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff0000">(setq f nil)</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (and (vl-file-copy&nbsp; file2 file1 T)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vl-file-delete file2)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (alert "自定义添加成功!")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (prin1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)</p><p>请注意红色代码中变量"f",再close之后,其实内存中依然存在,就好像windows中的WMP播放软件,即使关了当前程序,其历史记录也会在内存中,</p><p>结果就导致你没有办法进行删除或重命名操作,解决的办法就是不保留记录,和此类似,在程序末尾处加一条语句<font color="#ff0000">(setq f nil)</font>就可解决了</p>

caoyin 发表于 2008-7-11 10:31:00

<p>我测试没有出现“没有办法进行删除或重命名操作”的问题</p><p>注意 (vl-file-copy&nbsp; file2 file1 T) 是将 file2 写入 file1 尾部,在创建 file2 的时候,最好第一行写入 "\n"</p><p></p><p>顺便问一下,为什么不用 (open file "a") 的方法追加数据??</p>

hzj526 发表于 2008-7-12 01:56:00

(open file "a") 是追加数据比较好的方法,上面的一段代码旨在学习vl-file-copy等vl函数,看到楼主的帖子,就贴过来了,哈哈

TENGOMARK 发表于 2008-7-12 06:31:00

<p>非常感谢各位,我有一个疑问,我在编程序时,经过各位的指点,用了vl函数,但是,实际上我手头没有这方面的资料,不知道哪位大侠能够推荐这方面的资料或者参考书之类的,这样我能够继续深入学习。</p>
页: [1]
查看完整版本: 关于写出文件之后的回用读入问题