导出每个的度量值
大家好,首先,我要感谢你们提供了这个非常有用的论坛。你帮了我很多。
但现在我需要一个lisp,它将每个多段线线段的度量值导出到excel。有点像附上的图片。
谢谢 很确定李·麦克。com有一个例程可以做到这一点。 我已经找到了,但那一套比我想要的要多。
我想要一个只有片段长度的。并且,如果可能的话,可以为表格选择更多的多段线,如之前附着的图像。 是否要导出这些线段的值,或者选择多段线,并将每个线段单独导出到单独的单元格中,如Excel工作表中所示?
L1和L2呢?它们是否已经存在,或者您希望命名导出的多段线,以引用每行值
到其多段线?
我想单独处理每个部分,如Excel表。
关于L1和L2,它们只是一个例子。对于我需要的,可以只是按选定的每条多段线的顺序进行计算,从1开始。 试试看,让我知道。
(defun c:Test (/ *error* ss f o i l n in sn lst a d st)
;;; Author : Tharwat 16.Dec.2014 ;;;
;;; Write Polylines' segments to Excel ;;;
;;; ;;;
(defun *error* (x)
(if o
(close o)
)
)
(princ "\n Select Polyline :")
(if (and (setq ss (ssget '((0 . "LWPOLYLINE"))))
(setq f (getfiled "\n Save as :" (getvar 'DWGPREFIX) "csv" 1))
)
(progn
(setq o (open f "w")
i 0
l 0.
n 0
)
(write-line "Ref No." o)
(repeat (setq in (sslength ss))
(repeat (fix (vlax-curve-getendparam
(setq sn (ssname ss (setq in (1- in))))
)
)
(setq d (vlax-curve-getdistatparam sn (setq i (1+ i))))
(if (< 0. l)
(setq lst (cons (setq a (- d l)) lst))
(setq lst (cons d lst))
)
(if a
(setq l (+ l a))
(setq l (+ l d))
)
)
(entmake (list '(0 . "TEXT")
(setq st (assoc 10 (entget sn)))
(cons 11 (cdr st))
(cons 40 (getvar 'TEXTSIZE))
(cons 1 (itoa (setq n (1+ n))))
(cons 7 (getvar 'TEXTSTYLE))
)
)
(write-line
(apply 'strcat
(mapcar '(lambda (x) (strcat (rtos x 2 2) ";"))
(append (list n) lst)
)
)
o
)
(setq lst nil
i 0
l 0.
)
)
(close o)
)
)
(princ)
)(vl-load-com)
页:
[1]