明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1676|回复: 3

[求助]怎么读入不规则排列数据到autolisp?

[复制链接]
发表于 2005-5-6 12:16:00 | 显示全部楼层 |阅读模式
这是老板给我的数据,格式固定。


对txt附件的说明


第一行3:表示有三个节点


第二行1:表示节点1         


                                                                                                                                                 -17.000000000000000                                                 -4.167000000000000


                                                 -2.500000000000000         表示节点1的三个坐标


同理有节点3和5


第八行2:表示有两个单元


第九行1:表示单元1,有1,3两个节点连接而成


同理有单元2


现在要使autolisp 生成节点1,3,5。再连接成单元1,2


首先想请高人编段程序,有空的话再指点我的错误,谢谢!



我按自己的思路编了个读入程序如下,错误很多,根本不能运行。


(defun rnum()


         (setq ff2 (getfiled "读数据" "D:\\changqing\\data2" "txt" 2))


         (setq f2 (open ff2 "r"))


         (setq data1 (read-line f2))                                 ;读入节点个数


         (setq nnode (atoi data1))


         (setq n1 1)                                         ;读入节点个数所占行数


         (setq n2 (* 2 data1))                         ;读入节点坐标所占行数


         (setq n21 1)


         (while (<= n21 n2)


                         (setq data2 (list (read-line f2)))         ;?可以对读数list不?


                         (setq data3 (read-line f2))


                         (setq (strcat "pt" (car data2))


                                                                                                 (list (cadr data2) (caddr data2) (data3)))


                         (setq n21 (+ n21 2))


         )


         (setq data4 (read-line f2))                                                         ;读入单元个数


         (setq n3 1)                                         ;读入单元个数所占行数


         (setq n4 (atoi data4))                                                 ;读入单元组成所占行数


         (setq n41 1)


         (while (<= n41 n4)


                         (setq data5 (read-line f2))


                         (setq (strcat "c" (itoa (car data5)))


                                                                                                 (list (cadr data5) (caddr data5)))


                         (setq n41 (+ n21 1))


         )


         (close f2)


         (prin1)


)





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2005-5-7 12:58:00 | 显示全部楼层
  1. (DEFUN c:test ()
  2.    ;;选择文件
  3.    (IF (SETQ filename (GETFILED "选择文件" (GETVAR "dwgprefix") "txt" 0))
  4.        (PROGN ;;打开文件
  5.        (IF (NOT (SETQ fp (OPEN filename "r")))
  6.            (*error* "不能打开文件。")
  7.        )
  8.        ;;处理节点
  9.        ;;读入节点数
  10.        (SETQ index (READ (READ-LINE fp)))
  11.        (IF (/= (TYPE index) 'int)
  12.            (*error* "节点数格式错误。")
  13.        )
  14.        ;;依次读入各节点编号及坐标
  15.        (SETQ nodes (LIST))
  16.        (REPEAT index
  17.            ;;每两行表示一个节点,第一项为节点编号,第二、三、四项分别为节点坐标
  18.            ;;在每个节点前后分别加上"("和")",让其表示成表的形式,方便处理
  19.            (SETQ node (READ (STRCAT "(" (READ-LINE fp) (READ-LINE fp) ")")))
  20.            (SETQ nodes (CONS node nodes))
  21.        )
  22.        ;;处理单元
  23.        ;;读入单元数
  24.        (SETQ index (READ (READ-LINE fp)))
  25.        (IF (/= (TYPE index) 'int)
  26.            (*error* "单元数格式错误。")
  27.        )
  28.        ;;依次读入各单元编号及数据
  29.        (SETQ cells (LIST))
  30.        (REPEAT index
  31.            ;;每行表示一个单元,第一项为单元编号,后面跟随节点编号
  32.            ;;在每个单元前后分别加上"("和")",让其表示成表的形式,方便处理
  33.            (SETQ cell (READ (STRCAT "(" (READ-LINE fp) ")")))
  34.            (SETQ cells (CONS cell cells))
  35.        )
  36.        ;;关闭文件
  37.        (CLOSE fp)
  38.        ;;生成各节点
  39.        (FOREACH node nodes (COMMAND "point" (CDR node)))
  40.        ;;生成各单元
  41.        (FOREACH cell cells
  42.            (COMMAND "pline")
  43.            (FOREACH pt (CDR cell)
  44.                (IF (ASSOC pt nodes)
  45.      (COMMAND (CDR (ASSOC pt nodes)))
  46.      (*error* (STRCAT "在单元“"
  47.            (ITOA (CAR cell))
  48.            "”中的节点“"
  49.            (ITOA pt)
  50.            "”的没有定义。"
  51.          )
  52.      )
  53.                )
  54.            )
  55.            (COMMAND "")
  56.        )
  57.        )
  58.    )
  59.    (PRINC)
  60. )
复制代码
发表于 2005-5-7 12:59:00 | 显示全部楼层
嘻嘻,叫你老板给我意思意思啊:)
 楼主| 发表于 2005-5-7 14:59:00 | 显示全部楼层
呵呵,我先意思意思,两个问题都是你答的,太谢谢你了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 04:51 , Processed in 0.181906 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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