能具体讲一下怎样读取这个表吗?谢谢
学习LISP
飞哥,你的程序答不到他的要求,我想他要的是
1,首先从文本中读出数据 ("1" "2" "3"),1和2之间的空格不确定
2.将它们分别取出 (setq a "1") (setq b "2" ) (setq c "3")
-------------------------------------------------------------------------------
朋友是这样的吗?
表里面有空格不确定一说的吗?
'(1 2 3)和'(1 2 3)有什么不同吗???
;;;取得文本文件的内容<BR>;;;调用格式 (GET_FILE_NR fi)<BR>;;;2004/04/14<BR>;;;By-Spring<BR>(defun GET_FILE_NR (fi / fil pe fel)<BR> (setq screw_list nil)<BR> (if (findfile fi)<BR> (progn<BR> (setq fil (findfile fi))<BR> (setq pe (open fil "r"))<BR> (setq fel T)<BR> (while (/= fel nil)<BR> (setq fel (read-line pe))<BR> (setq screw_list (cons fel screw_list))<BR> )<BR> (close pe)<BR> (setq screw_list (cdddr (reverse (cdr screw_list))))<BR> ;根据文本的内容而定<BR> )<BR> )<BR>)<BR>(defun c:gg (/ fi screw_list screw_data)<BR> (setq fi "screw.txt")<BR> (GET_FILE_NR fi) ;取得文本文件的内容<BR> (setq screw_data (nth 0 screw_list)) ;取得第一个<BR>)
接下来就是要分别将他们取出了
我原本是想用 substr 函数取出空格,所以就要确定空格有多少个
---------------------------------------------------
我现在想用 read 取出 (setq screw_size (read screw_data)),这样就不用考虑空格了
然后将它移出 screw_data (帮助文件上说 vl-string-trim 从字符串的开始和结束删除指定字符,可是我试了一下只移开头也行)
现在的问题是用 READ 取出的是原子,怎么样才能将原子转换成字串呢???
对了用我程序测 liu.txt 时
"21007.49 \t2222.98 \t24831.05 \t2221.71 \t24795.43 \t0 \t21000\t0"
怎么会加了一个 t 呢??
糊涂阿,那些是数据,干嘛要转为那些字符?就算转为字符,以后要用的时候一样是要转换为数的!多此一举。
如myflying那样做就挺好的了。
看来SPRING应该仔细把读取的过程搞明白了
我的方法就是:
假设文本为:
1 2 3 4 5
read-line->"1 2 3 4 5"
strcat->"(1 2 3 4 5)"
read->(1 2 3 4 5);到这时,已经是一个由数字1、2、3、4、5组成的一个列表了,相当于(list 1 2 3 4 5)
有时候如果想在程序过程中改变序列,可以用点表,这样就可以很容易读取或替换掉其中的某一个
谢谢大家!现在搞明白了.但是对 mapcar 函数还没搞懂,呵呵.
<P>问一个很蠢的问题,今天下午才知道有autolisp这个东东.....我想借用上面那段程序,请问我怎么选择文件.....我加载了以后输入了f,结果他让我选择对象,我该怎么选择?</P>
<P>另外上面那段程序到底是要输入什么来执行的? </P>
<P>从来没碰过cad及相关...问题太简单不要笑偶...逼得没办法了........................</P>