试试这个
- (defun c:NE2CSV ( / ofl i e data j k lst coord)
- (vl-load-com)
- (if (and (= 1 (getvar 'DwgTitled))
- (setq data nil ss (ssget '((0 . "TEXT")))))
- (progn
- (setq fl (Strcat (getvar 'Dwgprefix)
- (cadr (fnsplitl (getvar 'Dwgname)))
- ".csv")
- ofl (open fl "w"))
- (repeat (setq i (sslength ss))
- (setq e (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
- (setq data (cons
- (mapcar '(lambda (d)
- (vlax-get e d))
- '("TextString" "TextAlignmentPoint")) data)))
- (setq data (vl-sort data
- '(lambda (a b)
- (setq a (cadr a) b (cadr b))
- (cond
- ((> (cadr a) (cadr b)) T)
- ((equal (cadr a) (cadr b) 0.1) (< (car a) (car b)))
- )
- )
- ))
- (while (and (setq j (car data))
- (setq k (cdr data)))
- (setq lst (list j (car k))
- lst (if (numberp
- (read (caar lst))) lst (reverse lst))
- coord (cadar lst))
- (write-line (strcat (rtos (cadr coord))
- "," (rtos (car coord))
- "," (caadr lst)
- "," (caar lst))
- ofl)
- (setq data (cdr k))
- )
- (close ofl)
- )
- )
- (princ)
- )
|