像这样的?
- (defun c:XYT (/ *error* c f itemlist loop objlet objtype orgn osmode sorteditemlist textsize x y z)
- (defun *error* ( msg )
- (if osmode (setvar 'OSMODE osmode))
- (and f (close f))
- (setvar 'textsize textsize)
- (setvar 'cmdecho 1)
- (if (not (member msg '("Function cancelled" "quit / exit abort")))
- (princ (strcat "\nError: " msg))
- )
- (princ)
- )
- (setq osmode (getvar 'osmode))
- (setq textsize (getvar 'textsize))
- (setvar 'osmode 0)
- (setvar 'cmdecho 0)
- (setvar 'textsize 2.5)
- (if (and (setq fl (getfiled "Specify the .xls file name :"
- (getvar 'DWGPREFIX)
- "xls"
- 1
- )
- )
- (setq f (open fl "w"))
- (progn
- (setq orgn (getpoint "\n Specify the origin:"))
- (command "ucs" "o" orgn)
- (princ "\n Select Ellipse, Arcs & Circles")
- (setq ss (ssget '((0 . "CIRCLE,ARC,ELLIPSE"))))
- )
- )
- (progn
- (write-line "Serial Number: \t X: \t Y: \t Dia: \t Type:" f)
- (if (setq itemList (mapcar 'entget (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
- (progn
- (setq sortedItemList (vl-sort itemList '(lambda (x z) (< (cdr (assoc 0 x)) (cdr (assoc 0 z))))))
- (mapcar '(lambda (z)
- (if (not (eq (cdr(assoc 0 z)) objType))
- (setq loop 1))
- (write-line
- (strcat (setq objLet (substr (setq objType (cdr (assoc 0 z))) 1 1)) (itoa loop)
- "\t"
- (setq x (rtos (car (trans (setq c (cdr (assoc 10 z))) 0 1)) 2 3))
- "\t"
- (setq y (rtos (cadr (trans c 0 1)) 2 3))
- "\t"
- (rtos (* (cdr (assoc 40 z)) 2.) 2 3)
- "\t"
- (cdr(assoc 0 z))
- )
- f
- )
- (command "mtext" (strcat x "," y) "j" "mc" (strcat x "," y) (strcat objLet (itoa loop)) "")
- (setq loop (+ 1 loop))
- ) sortedItemList)))
- (close f)
- (command "mtext" "0,0" "j" "tr" "-2,-2" "0,0" "ORIGIN" "")
- (command "chprop" "l" "" "c" "4" "")
- (princ)
- )
- (princ)
- )
- (setvar 'osmode osmode)
- (setvar 'cmdecho 1)
- (setvar 'textsize textsize)
- )
|