找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: hsb-hy

[编程申请]:在CAD中读取坐标数据,生成数据文件

[复制链接]
发表于 2006-6-15 16:47:48 | 显示全部楼层
俺编啦个小程序,可以把指定点的数据输出成电子表格文件(.xls)

;;;输出数学坐标-----------------------------------------------------------------------
(defun C:BGPT1 (/ nam f n1 n2 pt)
  (if (setq nam (getfiled "数学坐标数据保存至(电子表格.xls): " "" "xls" 9))
    (progn
      (setq f (open nam "w"))
      (write-line "数学坐标" f)
      (write-line "X        Y        Z" f)
      (setq n1 0)
      (while (setq pt (getpoint "\n坐标点<退出> : "))
        (write-line
          (strcat (rtos (car pt) 2 2)
                  "        "
                  (rtos (cadr pt) 2 2)
                  "        "
                  (rtos (caddr pt) 2 2)
          )
          f
        )
        (setq n1 (1+ n1))
      )
      (setq n2 (strcat "共" (rtos n1) "组数据"))
      (prin1 n2 f)
      (close f)
    )
  )
  (princ)
)
;;;------------------------------------------------------------------------



;;;输出地理坐标------------------------------------------------------------------------
(defun C:BGPT2 (/ nam f n1 n2 pt)
  (if (setq nam (getfiled "地理坐标数据保存至(电子表格.xls): " "" "xls" 9))
    (progn
      (setq f (open nam "w"))
      (write-line "地理坐标" f)
      (write-line "X        Y        Z" f)
      (setq n1 0)
      (while (setq pt (getpoint "\n坐标点<退出> : "))
        (write-line
          (strcat (rtos (cadr pt) 2 2)
                  "        "
                  (rtos (car pt) 2 2)
                  "        "
                  (rtos (caddr pt) 2 2)
          )
          f
        )
        (setq n1 (1+ n1))
      )
      (setq n2 (strcat "共" (rtos n1) "组数据"))
      (prin1 n2 f)
      (close f)
    )
  )
  (princ)
)
;;;-------------------------------------------------------------------
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-15 17:35:27 | 显示全部楼层
最初由 jsrlb 发布
[B]俺编啦个小程序,可以把指定点的数据输出成电子表格文件(.xls)

;;;输出数学坐标-----------------------------------------------------------------------
(defun C:BGPT1 (/ nam f n1 n2 pt)
  (if (setq nam... [/B]

你好!
与主题不符,要求生成的是.dat文件
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-15 20:49:23 | 显示全部楼层
仅只是支持点取而以,对等高线那样大量数据,还是不怎么适用,希望楼主能修改一下以便支持框取功能,框内所有线段的数据都能一次性提取,那就好了。.XLS格式文件很容易转换成。DAT文件的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-19 21:45:46 | 显示全部楼层
看来是没有人能够帮忙了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-21 14:58:32 | 显示全部楼层
能帮我传一个么?  cqzjy1979@163.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-21 23:01:26 | 显示全部楼层
我自已编写了一个小程序
;;;输出图形中所有904层的点实体的X Y Z值
(DEFUN C:TXTOUT        (/ SS1 %REP %ID #TEMP $F1 $X $Y $Z $XYZ)
  (SETVAR "dimzin" 0)
  (SETQ %ID 0)
  (SETQ SS1 (SSGET '((0 . "POINT") (8 . "904"))))
  (SETQ %REP (SSLENGTH SS1))
  (SETQ $F1 (OPEN "D:\\高程点坐标文件.DAT" "w"))
  (WRITE-LINE "\"X\",\"Y\",\"Z\(Elevation\)\"" $F1)
  (REPEAT %REP
    (SETQ E-NAME1 (SSNAME SS1 %ID))
    (SETQ #TEMP (ENTGET E-NAME1))
    (SETQ #P1 (CDR (ASSOC 10 #TEMP)))
    (SETQ $X (RTOS (CAR #P1) 2 3))
    (SETQ $Y (RTOS (CADR #P1) 2 3))
    (SETQ $Z (RTOS (CADDR #P1) 2 3))
    (SETQ $XYZ (STRCAT $X "," $Y "," $Z))
    (WRITE-LINE $XYZ $F1)
    (SETQ %ID (+ 1 %ID))
  ) ;_ 结束REPEAT
  (CLOSE $F1)
) ;_ 结束DEFUN

;;;==========================
生成的文件格式像这样,前面要流水号的话将程序做点小小的修改就行了

"X","Y","Z(Elevation)"
598261.359,23002.586,626.976
598268.453,23008.933,626.970
598252.727,23024.332,627.092
598254.899,23011.063,626.940
598263.298,23020.481,626.897
598279.989,23004.071,626.933
598342.020,23015.032,637.945
598376.059,23012.260,649.845
598368.164,23028.532,650.288
598344.125,23069.910,659.133
598359.770,23070.004,664.660


改了一下程序,输出的结果像这样

"X","Y","Z(Elevation)"
1,29245.438,14162.236,518.951
2,29315.550,14143.703,517.456
3,29263.699,14173.036,517.068
4,29263.815,14171.403,517.027
5,29262.909,14171.240,517.042
6,29315.776,14141.273,518.003
7,29278.984,14171.540,516.734
8,29312.726,14116.615,517.992
9,29278.824,14167.933,516.706
10,29283.836,14161.279,516.644
11,29311.550,14116.040,518.086

;;;输出图形中所有904层的点实体的X Y Z值
(DEFUN C:TXTOUT        (/ SS1 %REP %ID #TEMP $F1 $X $Y $Z $XYZ)
  (SETVAR "dimzin" 0)
  (SETQ %ID 0)
  (SETQ SS1 (SSGET '((0 . "POINT") (8 . "904"))))
  (SETQ %REP (SSLENGTH SS1))
  (SETQ $F1 (OPEN "D:\\高程点坐标文件.DAT" "w"))
  (WRITE-LINE "\"X\",\"Y\",\"Z\(Elevation\)\"" $F1)
  (REPEAT %REP
    (SETQ E-NAME1 (SSNAME SS1 %ID))
    (SETQ #TEMP (ENTGET E-NAME1))
    (SETQ #P1 (CDR (ASSOC 10 #TEMP)))
    (SETQ $X (RTOS (CAR #P1) 2 3))
    (SETQ $Y (RTOS (CADR #P1) 2 3))
    (SETQ $Z (RTOS (CADDR #P1) 2 3))
    (SETQ $XYZ (STRCAT (itoa (+ %ID 1))"," $X "," $Y "," $Z))
    (WRITE-LINE $XYZ $F1)
    (SETQ %ID (+ 1 %ID))
  ) ;_ 结束REPEAT
  (CLOSE $F1)
) ;_ 结束DEFUN
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-22 05:41:53 | 显示全部楼层
;;;点坐标写出文件
(defun c:test ()
  ;(CMDLA0)
  (setq ffn (getfiled "\n保存的坐标文件" "坐标" "txt" 1)
ff  (open ffn "w")
ss  (ssget '((0 . "POINT")))
i   -1
  )
  (while (setq s1 (ssname ss (setq i (1+ i))))
    (setq pt (dxf 10 (entget s1))
   tx (strcat (rtos (car pt) 2 3)
       " "
       (rtos (cadr pt) 2 3)
       " "
       (rtos (caddr pt) 2 3)
      )
    )
    (write-line tx ff)
  )
  (close ff)
  (princ (strcat "\n 坐标写至=>" ffn))
  ;(CMDLA1)
  (princ)
)
(defun dxf (code elist) (cdr (assoc code elist)))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-22 15:06:19 | 显示全部楼层
感谢狗各位的热心帮助!
要求:
1、选择或新建一个文件(文件扩展名.dat);
2、点取指定点,在点位附近生成序号(流水序号);
3、同时提取该点的坐标信息(文件格式:点号,x坐标,y坐标,z坐标)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-23 16:20:53 | 显示全部楼层
来个坐标标注
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-24 10:28:09 | 显示全部楼层
5楼楼主说:   9pt 10pt 11pt 12pt 13pt 15pt  

给我地址,我发给你.这玩意我刚编好.分享.  


能不能给我发个啊 ,我是个LISP的初学者,正在学这方面的 ,不胜感激!
地址:luoshan@scsedc.cn
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-25 21:31:21 | 显示全部楼层

  1. ;;;拾取Cad点坐标生成数据文件,程序是在d盘根目录下生成一个node.txt文件
  2. ;;;'write by Hejian 2002 free to copy


  3. (defun c:nd (/ kw fil cont esel oldos num1 pt pttext s s1 va pt1 pt2 l n fid)

  4.   (initget "O N")
  5.   (setq kw (getkword "\n[建立新文件(N)/打开文件(O)]<O>:"))
  6.   (if kw
  7.     (progn
  8.       (setq fil        (strcat        "d://"
  9.                         (getstring "[输入文件名(*.dat)]<node>:")
  10.                         ".dat"
  11.                 )
  12.       )
  13.       (setq input 0)

  14.     )
  15.     (progn
  16.       (setq fil (getfiled "\nSelect a Dat File" "D:/" "dat" 8))
  17.       (setq fid (open fil "r"))
  18.       (setq lin (read-line fid))
  19.       (while lin
  20.         (setq end lin)
  21.         (setq lin (read-line fid))
  22.       )
  23.       (close fid)
  24.       (setq l (vl-string-position (ascii ",") end))
  25.       (setq n (atoi (substr end 1 l)))
  26.       (setq input n)


  27.     )
  28.   )
  29.   (if (= nil fil)
  30.     (setq fil "d://node.dat")
  31.   )
  32.   (graphscr)
  33.   (setq pt (getpoint "\nplease pick a point:"))
  34.   (while pt
  35.     (setvar "cmdecho" 0)
  36.     (setq
  37.           input        (1+ input)
  38.           s2        (strcat "\nnode number< " (itoa input))
  39.           s2        (strcat s2 ">")
  40.     )
  41.     (initget 6)
  42.     (setq num1 (getint s2))
  43.     (if        (/= num1 nil)
  44.       (setq input num1)
  45.     )
  46.     (setq pttext (list (+ (car pt) 0.05) (cadr pt) (caddr pt))
  47.           s         (itoa input)
  48.     )

  49.     (setq s1 s)
  50.     (setq va (cadr pt))
  51. ;;;cadr得到y坐标
  52.     (setq s1 (strcat s1 ","))
  53.     (setq s1 (strcat s1 (rtos va 2 3)))
  54.     (setq va (car pt))
  55. ;;;car得到x坐标
  56.     (setq s1 (strcat s1 ","))
  57.     (setq s1 (strcat s1 (rtos va 2 3)))

  58.     (setq va (caddr pt))
  59.     (setq s1 (strcat s1 ","))
  60.     (setq s1 (strcat s1 (rtos va 2 3)))
  61.     (command "layer" "m" "序号层" "s" "序号层" "")
  62.     (command "text" (trans pttext 0 1) "" "" s)
  63.     (command "ucs" "")
  64.     (setq fid (open fil "a"))
  65.     (write-line s1 fid)
  66.     (close fid)
  67.     (setq pt (getpoint "\n点取下一点,回车退出:"))
  68.   )
  69.   (princ)

  70. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-26 19:55:34 | 显示全部楼层
最初由  发布
[B][code]
;;;拾取Cad点坐标生成数据文件,程序是在d盘根目录下生成一个node.txt文件
;;;'write by Hejian 2002 free to copy


(defun c:nd (/ kw fil cont esel oldos num1 pt pttext s s1 va pt1 pt2 l n fid)
... [/B]


感谢你david96007对我的帮助,完全满足我的要求!再次感谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-7-2 09:28:00 | 显示全部楼层

我也要

先谢谢了,邮箱为hq740311@sohu.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-16 19:52:42 | 显示全部楼层
能给我吗?
jjun2003@163.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-16 22:36:50 | 显示全部楼层
各位的程序非常好,多谢了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 18:54 , Processed in 0.212878 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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