试试看,让我知道。
- (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)
|