明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1670|回复: 5

读取txt中的数据画线,为什么有时画的对,有时不对,请大虾指点?

[复制链接]
发表于 2012-6-17 10:32 | 显示全部楼层 |阅读模式
用autolisp编写的一个小程序,读取txt中的数据画直线,txt中每一行有6个数据,前三个与后三个数分别为两个点的三维坐标,共有20行。每次画直线时,指定一个新的ucs坐标系零点,在这个ucs坐标系中画线。第一次在一个新的AutoCAD图形中加载该程序并调用时,画出的图形是正确的,在同一张图中第二次调用画图时就画出的图形不正确。autocad中有世界坐标系wcs,用户坐标系ucs,显示坐标系dcs以及图纸空间坐标系,是不是与这有关,请给位大虾指点指点?
下面是autolisp程序
(vl-load-com)
(defun C:aaxis(/ pipedatastr pt1x pt1y pt1z pt2x pt2y pt2z pf2 pt1 pt2 ptj)
  
  (defun strtolist(searchstr / stringlen return char n)  ;用于把一行字符串转化成表的函数
    (setq stringlen (strlen searchstr))
    (setq return '())
    (while (> stringlen 0)
      (setq n 1)
      (setq char (substr searchstr 1 1))
      (while (and (/= char " ") (/= char ""))
(setq n (+ 1 n))
(setq char (substr searchstr n 1))
)
      (setq return (cons (substr searchstr 1 (- n 1)) return))
      (setq searchstr (substr searchstr (+ 1 n) stringlen))
      (setq stringlen (strlen searchstr))
      )
    (reverse return)
    )
  
  (setq ptj (getpoint "指定一基点用于绘制轴线图"))
  (command "ucs" "n" ptj)
  (setq pf2 (open "c:/pipedata.txt" "r"))
  (repeat 20
   
    (setq pipedatastr (strtolist(read-line pf2)))
     (setq pt1x (atof (car pipedatastr)))
    (setq pt1y (atof (cadr pipedatastr)))
    (setq pt1z (atof (caddr pipedatastr)))
    (setq pt2x (atof (nth 3 pipedatastr)))
    (setq pt2y (atof (nth 4 pipedatastr)))
    (setq pt2z (atof (nth 5 pipedatastr)))
    (setq pt1 (list pt1x pt1y pt1z))
    (setq pt2 (list pt2x pt2y pt2z))
    (command "line" pt1 pt2 "")
    )
  (close pf2)
  )

txt中数据如下
5450.0000000000036 4000.0000000000036 999.9999999999992 5200.0000000000036 1800.0000000000036 5999.9999999999991
5450.0000000000018 4000.0000000000018 1000 5200.0000000000009 6200.0000000000018 6000
3500.0000000000018 6450.0000000000036 1000.0000000000003 5200.0000000000027 6200.0000000000045 6000.0000000000009
3500.0000000000023 6450.0000000000009 1000.0000000000011 1800.0000000000023 6200.0000000000018 6000.0000000000018
1550 3999.9999999999995 999.99999999999977 1800.0000000000002 1800 5999.9999999999991 1550.0000000000007 4000.0000000000018 999.99999999999955 1800.0000000000009 6200.0000000000018 6000 3500.0000000000018 1550.0000000000002 1000.0000000000007 5200.0000000000009 1800.0000000000005 6000.0000000000009
3500.0000000000027 1550.0000000000005 1000.000000000001 1800.0000000000023 1800.0000000000007 6000.0000000000009
1499.9999999999982 6500.0000000000018 5.6843418860808015e-014 1899.9999999999984 6100.0000000000018 8000
5500 6500.0000000000018 3.4106051316484809e-013 5100 6100.0000000000009 8000
5500.0000000000036 1499.9999999999991 1.4210854715202004e-013 5100.0000000000036 1899.9999999999989 8000
1500.0000000000011 1500.0000000000011 -2.8421709430404007e-014 1900.0000000000014 1900.0000000000014 8000
1800 6200 6000 1800 1800 6000
1550 6450 1000 1550 1550 1000
5200 6200 6000 1800 6200 6000
5450 6450 1000 1550 6450 1000
5200 1800 6000 5200 6200 6000
5450 1550 1000 5450 6450 1000
1800 1800 6000 5200 1800 6000
1550 1550 1000 5450 1550 1000



该贴已经同步到 laoli3sh的微博
发表于 2012-6-17 12:19 | 显示全部楼层
把捕捉关了试试

评分

参与人数 1金钱 +10 收起 理由
laoli3sh + 10 赞一个!

查看全部评分

 楼主| 发表于 2012-6-17 15:19 | 显示全部楼层
谢谢楼上,关闭捕捉后就行了,这是为什么呢?
发表于 2012-6-17 17:31 | 显示全部楼层
command会受到捕捉的影响 最好用entmake创建直线
 楼主| 发表于 2012-6-17 20:15 | 显示全部楼层
恩,太谢谢了
发表于 2012-6-18 12:46 | 显示全部楼层
我也猜到是这个原因了,呵呵.老问题.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-27 00:42 , Processed in 0.136743 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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