gzbccy 发表于 2011-1-10 20:40:01

如何获取多义线点并输出到EXCEL?

如何获取多义线点并输出到EXCEL?
点击多义线后,能获得多义线上节点坐标,并按点号,X坐标,Y坐标,H坐标(标高)分列排列。跪求。
以前总是通过列表方式获得。
要是三维多段线也这样就更好咯

xyp1964 发表于 2011-1-10 22:16:08

本帖最后由 xyp1964 于 2011-1-10 22:16 编辑

(defun c:tt ()
(setq      s1(car (entsel "\n选择三维多段线: "))
      ptn (xyp-get-Vertexs s1 0)
      lst '("X坐标" "Y坐标" "Z坐标")
)
(foreach pt ptn
    (setq plst (list (rtos (car pt) 2 3)
                     (rtos (cadr pt) 2 3)
                     (rtos (caddr pt) 2 3)
               )
          lst(append lst plst)
    )
)
(xyp-List2Xls lst 3)
(princ)
)

ljttjl 发表于 2011-1-11 21:41:25

http://ljttjl.ys168.com20090805多段线上标注点号并提取坐标程序

gzxl 发表于 2011-1-11 22:20:37

(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
)

gzbccy 发表于 2011-1-12 09:22:58

经过我的应用,发现xyp1964 的不能应用,或许我没用对?ljttjl 的只能提取多段线的坐标,不能提取三维多段线的坐标,同时我觉得不需要将点号那个汉字“号”标出,只需将点号的序号标出即可。gzxl 的程序可以识别应用在多段线和三维多段线,但是提取的精度只有两位,要是可以变成三位的精度最好。而且也没有点号提取。望能改进之。
最后,也可以像ljttjl 那样提取到txt,dat格式文件中也可以。

Andyhon 发表于 2011-1-12 09:40:35

...变成三位的精度...

(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:12

gzbccy 发表于 2011-1-12 09:22 static/image/common/back.gif
经过我的应用,发现xyp1964 的不能应用,或许我没用对?ljttjl 的只能提取多段线的坐标,不能提取三维多段线 ...

你安装了学院派工具箱了吗?

gzbccy 发表于 2011-1-12 09:56:40

不好意思,还没有安装学院派工具箱。不知道这个工具箱

gzbccy 发表于 2011-1-12 10:00:07

6楼的将精度问题解决了,但是点号排列问题还是没有解决

461045462 发表于 2011-1-12 15:21:14

gzbccy 发表于 2011-1-12 09:56 static/image/common/back.gif
不好意思,还没有安装学院派工具箱。不知道这个工具箱

2楼有下载地址
页: [1] 2 3
查看完整版本: 如何获取多义线点并输出到EXCEL?