明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: toply13

询问读取文本文件内容的方法(lisp编程)

  [复制链接]
发表于 2010-10-25 20:54:00 | 显示全部楼层
唉 看不到啊 赶紧发帖
发表于 2010-10-26 07:33:00 | 显示全部楼层

   谢谢版主

下载来学习研究一下。

或许能利用的上

谢谢

 

 不知道读取什么文件?

试了几个文件都显示出现有误:

C:TT
命令:  HELP
命令: tt ; 错误: 参数类型错误: stringp 1
命令:
命令:  TT ; 错误: 参数类型错误: stringp 1
命令:
命令: tt ; 错误: 参数类型错误: stringp 1
命令:
命令: tt ; 错误: 参数类型错误: stringp 1
命令:

  望得到指教。

在此先谢了

 

发表于 2010-10-26 19:36:00 | 显示全部楼层
看看,学习一下了。
发表于 2010-10-27 13:03:00 | 显示全部楼层

可以定义一个函数,将带,或空格等符号的字符串转为一个LST。比如

STR="2,23234,4554"

执行一个命令(str->lst str)就等到 (2 23234 4554)这样用起来就很方便了。不用SUBSTR.


(defun String->list (Strs / P TMP_LIST TMP_STR)
  (while (vl-string-search "\t" strs)
    (setq strs (vl-string-subst " " "\t" strs))
  )
  (while (vl-string-search "," strs)
    (setq strs (vl-string-subst " " "," strs))
  )
  (while (vl-string-search "," strs)
    (setq strs (vl-string-subst " " "," strs))
  )
  (while (vl-string-search ";" strs)
    (setq strs (vl-string-subst " " ";" strs))
  )
  (while (vl-string-search ";" strs)
    (setq strs (vl-string-subst " " ";" strs))
  )
  (while (vl-string-search "  " strs)
    (setq strs (vl-string-subst " " "  " strs))
  )
  (if (read strs)
    (progn
      (setq tmp_list '())
      (while (setq p (vl-string-search " " strs))
 (setq tmp_str (substr strs 1 p))
 (if (Read tmp_str)
   (setq tmp_list (cons tmp_str tmp_list))
 )
 (setq strs (vl-string-subst "" (substr strs 1 (1+ p)) strs))
      )
      (if (Read strs)
 (setq tmp_list (cons strs tmp_list))
      )
      (setq tmp_list (reverse tmp_list))
    )
  )
)

发表于 2010-10-31 14:40:00 | 显示全部楼层
谢谢了
发表于 2010-10-31 18:30:00 | 显示全部楼层
学习学习,为什么我使用时不带路径,就找不到文件呢
发表于 2010-10-31 22:44:00 | 显示全部楼层

使用DOSLIB函式库之DOS_STRTOKENS函数将字串转成串列较为简捷,但须依CAD版别载入DOSLIB函式库

假设有一个文本档案为aaa.txt,文件内容如下: 1,2133,4645 2,123123,4564

读取后串列资料为 ALAN_S=' ("1,2133,4645" "2,123123,4564")

(DEFUN C:ALAN (/ ALAN_S ITEMLIST NUM A B)

  (LOAD_DOSLIB)

  (SETQ ALAN_S '("1,2133,4645" "2,123123,4564") ITEMLIST '() NUM 0)

   (REPEAT (LENGTH ALAN_S)

     (SETQ ITEMLIST (APPEND ITEMLIST (LIST (DOS_STRTOKENS (NTH NUM ALAN_S) ","))))

     (SETQ NUM (+ NUM 1))

   )

   (SETQ A (NTH 0 (NTH 1 ITEMLIST)) B (NTH 2 (NTH 1 ITEMLIST)))

)

 

 (DEFUN LOAD_DOSLIB (/ AC_VER);←依CAD版别载入DOSLIB函式库

   (SETQ AC_VER (SUBSTR (GETVAR "ACADVER") 1 2))

   (IF (NOT DOS_DRIVE)

        (PROGN

         (COND ((AND (= AC_VER "13")(WCMATCH (STRCASE (GETVAR "PLATFORM")) "*DOS*"))

                     (XLOAD "DOSLIB13")

                    )

                    ((= AC_VER "12")(XLOAD "DOSLIB12"))

                    (T (ARXLOAD (STRCAT "DOSLIB" AC_VER)))

         )

        )

    )

 )

 (PRINC "\nALAN 程式已载入 !")(PRINC "\n")

 (PROMPT "----------------------------<< C:ALAN >>------------------------------\n") (PRINC)

 

 

上网搜寻DOSLIB就可下载

发表于 2010-11-1 00:14:00 | 显示全部楼层

版主的这句似乎有错:

(while (/= (setq s (substr i 2)) ",")

  •    (setq tmp (strcat tmp (substr s 1 1)) i (1+ i))
  •   )
  •  ----》

    (while (/= (setq s (substr s2 i 2)) ",")
       (setq tmp (strcat tmp (substr s2 i 1)) i (1+ i))
      )

    发表于 2010-11-1 13:03:00 | 显示全部楼层
    先收藏了,以后会用上!!
    发表于 2010-11-1 17:11:00 | 显示全部楼层
    看看,学习了
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

    GMT+8, 2024-11-16 10:51 , Processed in 0.151991 second(s), 19 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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