明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3950|回复: 11

VLISP编程如何读取文件数据并利用数据绘图

  [复制链接]
发表于 2007-9-24 22:51 | 显示全部楼层 |阅读模式

请教各位大侠:

     现在有一个文件RESULT.DAT。数据格式如下:

 13.087151  -14.534756  38.385605 43.081169
 12.579989  -14.992249  38.410233 43.108810
 12.045803  -15.417926  38.399708 43.097000
 11.507247 -15.838369  38.422615  43.122707
 10.944670 -16.226143  38.412731  43.111614
 10.377437 -16.607372  38.433907  43.135384
  9.789069 -16.955168   38.424263  43.124557
  9.196147 -17.295441   38.444199  43.146931
现在我想从文件中读取这些数据,并利用每行的前三个数据作为点的x,y,z坐标,并在AutoCAD中绘制该点。

由于result.dat里面数据n多,故绘制点需要用到循环语句,如何使用循环语句呢?

烦请大侠指点!感激不尽!

发表于 2007-9-25 05:33 | 显示全部楼层

;;批量展测量点
(defun zdtxt (/ fn n zb xyz xyz1 xyz2 add xg_group ss ss1 ss2 leixin)
  (setq fle (getfiled "请选择数据文件"
        "*"
        "txt;dat;*"
        2
     )
  )
  (setq xyz_biao (list))
  (setq fn (open fle "r"))
  (setq n 0)
  (while (setq pt (read-line fn))
    (setq xg_group (ssadd))
    (setq dm (vl-princ-to-string (read pt)))
    (setq zb (substr pt (+ (strlen dm) 1)))
    (setq
      xyz (trans (read (strcat "(" zb ")")) 1 0)
    )
    (setq xyz_biao (append xyz_biao (list xyz)))
    (setq h (rtos (last xyz) 2 1))
    (entmake (list (cons 0 "INSERT")
     (cons 100 "AcDbEntity")
     (cons 8 newlayer)
     (cons 100 "AcDbBlockReference")
     (cons 10 xyz)
     (cons 41 blockh)
     (cons 42 blockh)
     (cons 43 blockh)
     (cons 410 "model")
     (cons 2 "gc200")
      )
    )
    (setq add (entlast))
    (setq xg_group (ssadd add xg_group))
    (setq stbmx (itoa 202101))
    (dstbm)
    (setq ss (entget (cdr (car (entget (entlast)))) (list "south")))
    (setq ss1 (cadr (assoc -3 ss)))
    (setq ss2 (list -3 (list "SOUTH" (cadr ss1) (cons 1000 dm))))
    (setq ss (subst ss2 (assoc -3 ss) ss))
    (entmod ss)
    (setq xyz1
    (polar xyz (/ pi 2) (* l 2))
    )
    (setq xyz2
    (polar xyz (* (/ pi 2) 3) (* l 2))
    )
    (entmake (list (cons 0 "Text")
     (cons 100 "AcDbEntity")
     (cons 8 newlayer)
     (cons 100 "AcDbText")
     (cons 7 oldtextstyle)
     (cons 1 dm)
     (cons 40 dmh)
     (cons 41 0.8)
     (cons 410 "model")
     (cons 71 0)
     (cons 72 4)
     (cons 73 0)
     (cons 10 xyz1)
     (cons 11 xyz1)
      )
    )
    (setq add (entlast))
    (setq xg_group (ssadd add xg_group))
    (setq stbmx (itoa 2021111))
    (dstbm)
    (entmake (list (cons 0 "Text")
     (cons 100 "AcDbEntity")
     (cons 8 newlayer)
     (cons 100 "AcDbText")
     (cons 7 oldtextstyle)
     (cons 1 h)
     (cons 40 gch)
     (cons 41 0.8)
     (cons 410 "model")
     (cons 71 0)
     (cons 72 4)
     (cons 73 0)
     (cons 10 xyz2)
     (cons 11 xyz2)
      )
    )
    (setq add (entlast))
    (setq xg_group (ssadd add xg_group))
    (setq stbmx (itoa 2021112))
    (dstbm)
    (setq n (+ n 1))
    (setq leixin (strcat "jxkzd" "_" (itoa n) "_"))
    (xggroup)
  )
  (if (= pt nil)
    (progn
      (alert (strcat "*--*展点结束,共展"
       (itoa n)
       "个点*--*!。"
      )
      )
    )
  )
  (close fn)
  (txsz3)
  (xyz_max_min)
  (princ)
)

     这是我的展点工具的一个子程序,红色部分也是子程序,

    这是批量展点的子程序,测量点采用CASS的格式,为名为GC200的块,展点的格式如图所示,在2004中测试的速度是4000个测量点用时10秒左右,文本的格式是:点号【空格】X【空格】Y【空格】Z  注意Z值后面不能有空格,否则出错。里面的循环语句可以作为你的参考。

 

本帖子中包含更多资源

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

x
发表于 2007-9-25 08:26 | 显示全部楼层

      ;;读模式打开lsp文件
      (setq F1 (open FILE "r"))
      ;;逐行读入
      (while (setq STR (read-line F1))
            *********

            *********

      ) ;_结束 while
      ;;关闭文件
      (close F1)
完整过程,参见:http://zml84.blog.sohu.com/54345418.html

 楼主| 发表于 2007-9-25 10:35 | 显示全部楼层

XGR和zml84两位的帮助,得以顺利解决问题,非常感谢!

发表于 2007-10-17 20:00 | 显示全部楼层

衷心的感谢XGR!!!请问该程序怎样导入CAD呢?

发表于 2007-10-17 21:40 | 显示全部楼层
不错,谢谢提供。
发表于 2007-10-17 22:16 | 显示全部楼层

回5楼

把第一行“defun zdtxt”改为“defun c: zdtxt”,红色部分语句删掉,保存为lsp文件,放在CAD搜索路径里,添加启动组里即可。

发表于 2007-10-18 15:50 | 显示全部楼层
xgr高手,按您的指点,没有成功。CAD命令行输入甚么呢,麻烦你就发个现成的吧,再次感谢!!!这是我几年来最需要解决的问题。
发表于 2007-10-18 16:31 | 显示全部楼层
本帖最后由 作者 于 2007-10-18 16:35:18 编辑

你有用南方CASS软件吗?如果没有还得修改程序!

记事本的文件格式为:

点号 X  Y  Z

请先把你的记事本格式修改一下。

发表于 2007-10-18 17:35 | 显示全部楼层
我用的是CAD2007
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 18:39 , Processed in 0.199745 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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