明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1817|回复: 5

[求助]lisp读文件的时候怎么指定位置?

[复制链接]
发表于 2009-4-15 11:51:00 | 显示全部楼层 |阅读模式

lisp读文件的时候怎么指定位置?比如有时候已经读取了第40行的数据,这时候需要回到第10行,应该怎么操作?是关掉文件重新读么?

发表于 2009-4-15 14:35:00 | 显示全部楼层
这个……好像的确没什么办法,用循环语句什么的吧……
发表于 2009-4-15 15:05:00 | 显示全部楼层
嗯,我一般是读成一个表,需要哪个再用nth取之。
 楼主| 发表于 2009-4-16 09:54:00 | 显示全部楼层

如果文件较大,读成一个表,成本也太大了吧,呵呵...小文件倒是可以这样,谢谢了

发表于 2009-4-17 00:57:00 | 显示全部楼层

我的做法是:

  (setq f1  (open "d:\\参数\\abc.dat" "r"))
  (setq  n 0)
  (repeat 18
    (setq n (+ n 1))
    (set (read (strcat "p" (itoa n))) (read-line f1))
  )
  (close f1) 

这是一个有18行数据的文件。循环赋值给变量p1到p18就可以了。

数据文件abc.dat内容格式:

 1.6   15    3     1.6   1.73   1.5   0.7    2.5--16
 2     16    3.8   2     1.73   1.5   1      3----20
 2.5   17    4.5   2.5   2.3    2     1.1    4----25
 3     18    5.5   3     2.87   2.5   1.3    5----30
 4     20    7     4     3.44   3     2      6----40     
 5     22    8.5   5     4.58   4     2.5    8----50
 6     24   10     6     5.72   5     3     10----60
 8     28   13     8     6.86   6     4     12----80
10     32   16    10     9.15   8     5     16---100
12     36   18    12    11.43  10     6     20---120
14     40   21    14    13.72  12     7     25---140
16     44   24    16    16.00  14     8     25---160
20     52   30    20    19.44  17    10     30---200
24     60   36    24    21.73  19    12     40---200
30     72   45    30    25.15  22    15.5   45---200
36     84   54    36    30.85  27    19     55---200
42     96   63    42    36.57  32    24     60---300
48    106   72    48    41.13  36    28     70---300

发表于 2009-4-18 14:57:00 | 显示全部楼层
本帖最后由 作者 于 2009-4-18 15:02:33 编辑

;仿照zdzdzdzd的新作。

;;;**********************************************
;;; No.33 读取文本文件内容,并赋值给群变量 函数 
;;;       ------ By Ayunger Studio 2009-4-18   
;;; 参数: SYMBase-变量前缀文字;                 
;;;       IsView-是否屏幕浏览变量赋值情况表.    
;;;**********************************************
(defun ayGetTxtFile2Values(txtFileName SYMBase IsView / txtFileName fp xRec xNote xBar cName k i)
 (vl-load-com)
 (setq xBar "\n------------------------------------------------------------------------------")
 (if (and txtFileName (findfile txtFileName))
  (progn
   (setq fp  (open txtFileName "r"))
    (setq k 0)
   (while (setq xRec (read-line fp))
    (set (read (strcat SYMBase (itoa (+ k 1)))) xRec)
    (setq k (+ k 1))
   );end_while
    (close fp)
   (if (and IsView (> k 0))
    (progn
     (textscr)
     (princ xBar)
     (setq i 1)
      (repeat k
      (setq cName (strcat SYMBase (itoa i)))
      (princ (strcat "\n[" cName "] " (eval (read cName))))
        (setq i (+ i 1))
      );end_preat
     (princ xBar)
    );end_progn
   );end_if
   (setq xNote (strcat (vl-filename-base txtFileName) (vl-filename-extension txtFileName)))
   (setq xNote (strcat "\n【信息】文本文件<" xNote ">的内容已读取至变量: "))
   (setq xNote (strcat xNote SYMBase "1~" SYMBase (itoa k)))
   (princ xNote)
  );end_progn
 );end_if
 (princ)
);end_defun

命令: (ayGetTxtFile2Values "c:/1.txt" "A" T)

------------------------------------------------------------------------------
[A1]  1.6   15    3     1.6   1.73   1.5   0.7    2.5--16
[A2]  2     16    3.8   2     1.73   1.5   1      3----20
[A3]  2.5   17    4.5   2.5   2.3    2     1.1    4----25
[A4]  3     18    5.5   3     2.87   2.5   1.3    5----30
[A5]  4     20    7     4     3.44   3     2      6----40
[A6]  5     22    8.5   5     4.58   4     2.5    8----50
[A7]  6     24   10     6     5.72   5     3     10----60
[A8]  8     28   13     8     6.86   6     4     12----80
[A9] 10     32   16    10     9.15   8     5     16---100
[A10] 12     36   18    12    11.43  10     6     20---120
[A11] 14     40   21    14    13.72  12     7     25---140
[A12] 16     44   24    16    16.00  14     8     25---160
[A13] 20     52   30    20    19.44  17    10     30---200
[A14] 24     60   36    24    21.73  19    12     40---200
[A15] 30     72   45    30    25.15  22    15.5   45---200
[A16] 36     84   54    36    30.85  27    19     55---200
[A17] 42     96   63    42    36.57  32    24     60---300
[A18] 48    106   72    48    41.13  36    28     70---300
------------------------------------------------------------------------------
【信息】文件 1.txt 内容已读取至变量: A1~A18

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-25 08:48 , Processed in 0.176882 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表