1
3
2
初来乍到
使用道具 举报
35
2471
2447
初露锋芒
1069
1050
(defun c:exwr (/ ar del elist en ent filename fn hgt i maxp minp obj per pmax pmin rowdata wid xldata )(setq i 0 ) (setq xldata (cons (list "" "Length (mm)" "Width (mm)""Perimeter" "Area")xldata)) (while (setq ent (entsel "\nSelect a rectangle one by another, press Enter to stop loop: ")) (if (and(setq elist (entget (setq en (car ent))))(eq (cdr (assoc 0 elist)) "LWPOLYLINE")(= (cdr (assoc 70 elist)) 1)(and (> (cdr (assoc 90 elist)) 5) (< (cdr (assoc 90 elist)) 13)))(progn (setq obj (vlax-ename->vla-object en))(vla-getboundingbox obj 'minp 'maxp) (setq pmin (vlax-safearray->list minp) pmax (vlax-safearray->list maxp)) (setq wid (abs (- (car pmax) (car pmin)))hgt (abs (- (cadr pmax) (cadr pmin)))per (vla-get-length obj) ar (vla-get-area obj) ) (setq rowdata (list (itoa (setq i (1+ i))) (rtos wid 2 2) (rtos hgt 2 2) (rtos per 2 2) (rtos ar 2 2))) ;; gather data in a list (setq xldata (append xldata (list rowdata))) ) (prompt "\nNothing or not closed pline selected.")) )(if (> (length xldata) 1) (progn ;; put delimiter to suit: (setq del "\t") ;; build your text file path here: (setq filename (strcat (getvar "dwgprefix") (vl-filename-base (getvar "dwgname"))"_Dim.txt")) (setq fn (open filename "w")) ;; Write info to a file (mapcar'(lambda (x) (write-line (apply 'strcat (append (list (car x)) (mapcar '(lambda (y) (strcat del y)) (cdr x) )) )fn ))xldata ) (close fn) (gc)