明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5196|回复: 20

[源码] 如何获取多义线点并输出到EXCEL?

  [复制链接]
发表于 2011-1-10 20:40 | 显示全部楼层 |阅读模式
如何获取多义线点并输出到EXCEL?
点击多义线后,能获得多义线上节点坐标,并按点号,X坐标,Y坐标,H坐标(标高)分列排列。跪求。
以前总是通过列表方式获得。
要是三维多段线也这样就更好咯
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-1-10 22:16 | 显示全部楼层
本帖最后由 xyp1964 于 2011-1-10 22:16 编辑
  1. (defun c:tt ()
  2.   (setq        s1  (car (entsel "\n选择三维多段线: "))
  3.         ptn (xyp-get-Vertexs s1 0)
  4.         lst '("X坐标" "Y坐标" "Z坐标")
  5.   )
  6.   (foreach pt ptn
  7.     (setq plst (list (rtos (car pt) 2 3)
  8.                      (rtos (cadr pt) 2 3)
  9.                      (rtos (caddr pt) 2 3)
  10.                )
  11.           lst  (append lst plst)
  12.     )
  13.   )
  14.   (xyp-List2Xls lst 3)
  15.   (princ)
  16. )
发表于 2011-1-11 21:41 | 显示全部楼层
http://ljttjl.ys168.com  20090805多段线上标注点号并提取坐标程序
发表于 2011-1-11 22:20 | 显示全部楼层
(defun c:tt (/ doc spc ss file sel pts)
  (vl-load-com)
  (setq doc (vla-get-ActiveDocument
              (vlax-get-Acad-Object)
            )
        spc (if (zerop (vla-get-activespace doc))
              (if (= (vla-get-mspace doc) :vlax-true)
                (vla-get-modelspace doc)
                (vla-get-paperspace doc))
              (vla-get-modelspace doc)))
  (if (and (setq ss (ssget '((0 . "*POLYLINE"))))
           (setq file
             (getfiled "Output File"
               (if *load *load "") "csv;txt" 9)
           )
      )
      (progn
         (setq *load file file (open file "a"))
         (vlax-for Obj (setq sel (vla-get-ActiveSelectionSet doc))
            (setq pts
               (vlax-list->3D-point
                  (vlax-get Obj 'Coordinates)
                  (cond ((eq (vla-get-ObjectName Obj) "AcDbPolyline")))
               )
            )
            (mapcar
               (function
                  (lambda (x)
                    (write-line
                       (strcat
                          (rtos (car x) 2 2) (chr 44)
                          (rtos (cadr x) 2 2) (chr 44)
                          (rtos (caddr x) 2 2))
                          file
                    )
                    (vla-addPoint spc (vlax-3D-point x))
                  )
               )
               pts
             )
            )
            (princ (strcat "\n<< 共有 " (itoa (vla-get-Count sel)) " Polylines 写入文件 >>"))
            (close file)
            (vla-delete sel)
      )
  )
  (princ)
)        
(defun vlax-list->3D-point (lst x / oLst)
  (while lst
    (setq oLst
      (cons (list (car lst) (cadr lst) (if x 0.0 (caddr lst))) oLst)
      lst ((if x cddr cdddr) lst)
    )
  )
  oLst
)
 楼主| 发表于 2011-1-12 09:22 | 显示全部楼层
经过我的应用,发现xyp1964 的不能应用,或许我没用对?ljttjl 的只能提取多段线的坐标,不能提取三维多段线的坐标,同时我觉得不需要将点号那个汉字“号”标出,只需将点号的序号标出即可。gzxl 的程序可以识别应用在多段线和三维多段线,但是提取的精度只有两位,要是可以变成三位的精度最好。而且也没有点号提取。望能改进之。
最后,也可以像ljttjl 那样提取到txt,dat格式文件中也可以。
发表于 2011-1-12 09:40 | 显示全部楼层
...变成三位的精度...

(strcat
  (rtos (car x) 2 2) (chr 44)
  (rtos (cadr x) 2 2) (chr 44)
  (rtos (caddr x) 2 2))
  file
)

===>  Prec 对映所须的精度
(strcat
  (rtos (car x) 2 Prec) (chr 44)
  (rtos (cadr x) 2 Prec) (chr 44)
  (rtos (caddr x) 2 Prec))
  file
)
发表于 2011-1-12 09:46 | 显示全部楼层
gzbccy 发表于 2011-1-12 09:22
经过我的应用,发现xyp1964 的不能应用,或许我没用对?ljttjl 的只能提取多段线的坐标,不能提取三维多段线 ...

你安装了学院派工具箱了吗?
 楼主| 发表于 2011-1-12 09:56 | 显示全部楼层
不好意思,还没有安装学院派工具箱。不知道这个工具箱
 楼主| 发表于 2011-1-12 10:00 | 显示全部楼层
6楼的将精度问题解决了,但是点号排列问题还是没有解决
发表于 2011-1-12 15:21 | 显示全部楼层
gzbccy 发表于 2011-1-12 09:56
不好意思,还没有安装学院派工具箱。不知道这个工具箱

2楼有下载地址
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-1 05:11 , Processed in 0.583151 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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