(defun c:z20 (/ 10ER 11ER ANZAHL BSCALE_ERROR CMD_ALT EDATEN ERROR_ALT INDEX LETZTER O_CLASS SGET TEMP_LAENGE TEMP_LISTE TXT WRT ) (defun bscale_error (msg) (princ msg) (setq *error* error_alt error_alt nil ) ;_ end setq (princ (strcat "Fehler! AutoCAD meldet \"" msg "\" als Ursache.\nFehlerbehandlung setzt Änderungen zurück!" ) ;_ end strcat ) ;_ end princ (command "_.undo" "_b") (princ) ) ;_ end defun (setq error_alt *error* *error* bscale_error cmd_alt (getvar "cmdecho") ) ;_ end setq (command "_.undo" "_m") (setvar "cmdecho" 0) (command "_.ucs" "_w") (princ "\nZ - Koordinaten auf auf Höhe 0.00 setzen...") (princ "\nWählen Sie die Objekte aus...") (setq sget (ssget) anzahl (sslength sget) index 0 ) ;_ end setq (while (< index anzahl) (setq edaten (entget (ssname sget index)) o_class (cdr (assoc 0 edaten)) ) ;_ end setq (cond ((= o_class "LINE") (setq 10er (assoc 10 edaten) letzter (last 10er) 10er (subst 0.0 letzter 10er) edaten (subst 10er (assoc 10 edaten) edaten) ) ;_ end setq (entmod edaten) (setq 11er (assoc 11 edaten) letzter (last 11er) 11er (subst 0.0 letzter 11er) edaten (subst 11er (assoc 11 edaten) edaten) ) ;_ end setq (entmod edaten) ) ((= o_class "INSERT") (setq 10er (assoc 10 edaten) letzter (last 10er) 10er (subst 0.0 letzter 10er) edaten (subst 10er (assoc 10 edaten) edaten) ) ;_ end setq (entmod edaten) ) ((= o_class "ARC") (setq 10er (assoc 10 edaten) letzter (last 10er) 10er (subst 0.0 letzter 10er) edaten (subst 10er (assoc 10 edaten) edaten) ) ;_ end setq (entmod edaten) ) ((= o_class "TEXT") (setq 10er (assoc 10 edaten) letzter (last 10er) 10er (subst 0.0 letzter 10er) edaten (subst 10er (assoc 10 edaten) edaten) ) ;_ end setq (entmod edaten) ) ((= o_class "CIRCLE") (setq 10er (assoc 10 edaten) letzter (last 10er) 10er (subst 0.0 letzter 10er) edaten (subst 10er (assoc 10 edaten) edaten) ) ;_ end setq (entmod edaten) ) ((= o_class "ELLIPSE") (setq 10er (assoc 10 edaten) letzter (last 10er) 10er (subst 0.0 letzter 10er) edaten (subst 10er (assoc 10 edaten) edaten) ) ;_ end setq (entmod edaten) ) ((= o_class "POINT") (setq 10er (assoc 10 edaten) letzter (last 10er) 10er (subst 0.0 letzter 10er) edaten (subst 10er (assoc 10 edaten) edaten) ) ;_ end setq (entmod edaten) ) ((= o_class "SHAPE") (setq 10er (assoc 10 edaten) letzter (last 10er) 10er (subst 0.0 letzter 10er) edaten (subst 10er (assoc 10 edaten) edaten) ) ;_ end setq (entmod edaten) ) (T (if (null temp_liste) (setq temp_liste '() ) ;_ end setq ) ;_ end if (if (= (member o_class temp_liste) nil) (setq temp_liste (append (list o_class) temp_liste)) ) ;_ end if ) ) ;_ end cond (setq index (1+ index)) ) ;_ end while (setq temp_laenge (length temp_liste)) (repeat temp_laenge (setq wrt (car temp_liste) temp_liste (cdr temp_liste) ) ;_ end setq (if (null txt) (setq txt "Folgende Objektklassen wurden NICHT bearbeitet:\n") ) ;_ end if (setq txt (strcat txt wrt "\n")) ) ;_ end repeat (if txt (alert txt) ) ;_ end if (command "_ucs" "_p") (setvar "cmdecho" cmd_alt) (setq *error* error_alt) (princ "\nAlles klar, Programm beendet !") (princ) ) ;_ end defun (defun c:z_to_txt (/ ANZAHL EDATEN INDEX KORD SGET TS TXT_INS ZKORD) (command "_ucs" "_w") (princ "\nObjekte wählen. Blöcke werden herausgefiltert... " ) ;_ end princ (setq sget (ssget '((0 . "insert"))) anzahl (sslength sget) index 0 ) ;_ end setq (while (< index anzahl) (setq edaten (entget (ssname sget index)) kord (assoc 10 edaten) zkord (rtos (last kord) 2 2) txt_ins (list (nth 1 kord) (nth 2 kord)) ts (tblsearch "LAYER" "Ermittelte_hoehen") ) ;_ end setq (if (null ts) (progn (alert "\nLayer nicht vorhanden!\nErstelle automatisch...") (command "_layer" "_m" "Ermittelte_hoehen" "_c" "3" "" "_l" "continuous" "" "" ) ;_ end command ) ;_ end progn (command "_layer" "_thaw" "Ermittelte_hoehen" "_on" "Ermittelte_hoehen" "" ) ;_ end command ) ;_ end if (command "_.text" txt_ins "0.9" "100" zkord) (setq index (1+ index)) ) ;_ end while (princ (strcat "\nAlles klar, " (itoa anzahl) " Höhentexte erzeugt !" ) ;_ end strcat ) ;_ end princ (princ) ) ;_ end defun (defun c:objekte (/ ANZAHL EDATEN INDEX O_CLASS SGET TEMP_LAENGE TEMP_LISTE TXT WRT ) (setq sget (ssget "X") anzahl (sslength sget) index 0 ) ;_ end setq (while (< index anzahl) (setq edaten (entget (ssname sget index)) o_class (cdr (assoc 0 edaten)) ) ;_ end setq (if (null temp_liste) (setq temp_liste '()) ) ;_ end if (if (= (member o_class temp_liste) nil) (setq temp_liste (append (list o_class) temp_liste)) ) ;_ end if (setq index (1+ index)) ) ;_ end while (setq temp_laenge (length temp_liste)) (repeat temp_laenge (setq wrt (car temp_liste) temp_liste (cdr temp_liste) ) ;_ end setq (if (null txt) (setq txt "Diese Zeichnung enthält folgende Objekttypen:\n") ) ;_ end if (setq txt (strcat txt wrt "\n")) ) ;_ end repeat (alert txt) (princ) ) ;_ end defun (princ "\nZ20.lsp...\(C\)1999 Marc Scherer\nAufruf mit \"Z20\", \"Z_TO_TXT\", \"OBJEKTE\"!" ) ;_ end princ (princ)