(defun c:area2excel () (vl-load-com) ;;;Erst mal einen Auswahlsatz erstellen in dem Linien und Polylinien drinn sind: (setq satz (ssget '((-4 . "")) ) ) ;;;Dann den Auswahlsatz durchlaufen und eine Liste erzeugen den Startpunkt und die Fläche des Elements enthält ;;;Diese Liste, die für jedes Element erzeugt wird, packen wir gleich in eine Liste die das für alle Elemente sammelt (setq data_list (list)) (setq n (1- (sslength satz))) (repeat (sslength satz) (setq ent_data (entget (setq ent_name (ssname satz n)))) (setq data_list (cons (list (cdr (assoc 10 ent_data)) (VLA-GET-AREA (VLAX-ENAME->VLA-OBJECT ent_name)) ) data_list ) ) (setq n (1- n)) ) ;;;jezt das Ganze in Richtung Excel - Excel muss geöffnet sein ;;; erst mal einrichten (if (setq excel (vlax-get-object "excel.application")) (progn (setq ExcelWorkbook (if excel (vlax-get-property excel "ActiveWorkbook" ) ) ExcelSheet (if ExcelWorkbook (vlax-get-property ExcelWorkbook "ACTIVESHEET" ) ) ExcelCells (if ExcelSheet (vlax-get-property ExcelSheet "CELLS" ) ) ) ) (alert "Excel nicht gefunden") ) ;;; und dann rüberschieben (setq zeile 1) (foreach data data_list (setq spalte 1) ;;;aus der Koordinatenliste einen Text machen (setq txt "") (mapcar '(lambda (dummy) (setq txt (strcat txt " " dummy))) (mapcar 'rtos (nth 0 data)) ) (setq txt (substr txt 2)) (vlax-put-property ExcelCells "ITEM" zeile spalte (strcat "'" txt) ) (setq spalte 2) (vlax-put-property ExcelCells "ITEM" zeile spalte (vl-string-translate "." "," (rtos (nth 1 data))) ) (setq zeile (1+ zeile)) ) ;;; ordentlich abmelden (vlax-release-object excel) (vlax-release-object ExcelWorkbook) (vlax-release-object ExcelSheet) (vlax-release-object ExcelCells) ;;; fertig (princ) )