;;; +-----------------------------------------------------------------+ ;;; | Projektname: EANM_TUER | ;;; | für AutoCAD Version ab: R14 | ;;; +-----------------------------------------------------------------+ ;;; | (c)2000 NigG @on's; Kög 42, 6600 Reutte, Österreich | ;;; | Tel.: +43-(0)5672-65913; Mobil: +43-(0)664-1356898 | ;;; | eMail: nigg@eunet.at; URL: http://members.eunet.at/nigg/ | ;;; +-----------------------------------------------------------------+ ;;; ;;; ;;; (defun DDT_ERR (MSG) (if (/= MSG "Function cancelled") (if (= MSG "quit / exit abort") (princ) (princ (strcat "\n-->Fehler: " MSG)) ) ) (setq *ERROR* OERR) (setvar "clayer" OLAY) (setvar "celtype" OLTY) (setvar "cecolor" OCOL) (setvar "luprec" OLUP) (setvar "osmode" OOSM) (setvar "cmdecho" OECHO) (command "_.undo" "_end") (command "_.undo" "_group") (princ) ) ; ========== ; (defun DDT_CHK_MASZE () (if (< EANM_DDT_LBREITE 0.5) (setq EANM_DDT_LBREITE 1.0) ) (if (> EANM_DDT_LBREITE 1.6) (setq EANM_DDT_LBREITE 1.6) ) (if (<= EANM_DDT_SBREITE 0.0) (setq EANM_DDT_SBREITE 0.05) ) (set_tile "lbreite" (rtos EANM_DDT_LBREITE)) (set_tile "sbreite" (rtos EANM_DDT_SBREITE)) (if (= EANM_DDT_RAHMEN 1) (set_tile "shoehe" (rtos (+ EANM_DDT_LHOEHE EANM_DDT_SBREITE))) (set_tile "shoehe" (rtos EANM_DDT_LHOEHE)) ) ) ; ========== ; (defun DDT_CHK_POS () (if (= EANM_DDT_POS 1) (progn (set_tile "pos" "1") (mode_tile "pos50" 0)(mode_tile "t30" 0) ) (progn (set_tile "pos" "0") (mode_tile "pos50" 1)(mode_tile "t30" 1) ) ) (if (= EANM_DDT_POS50 nil) (setq EANM_DDT_POS50 0)) (if (= EANM_DDT_POS50 1) (set_tile "pos50" "1") (set_tile "pos50" "0") ) (if (= EANM_DDT_POST30 nil) (setq EANM_DDT_POST30 0)) (if (= EANM_DDT_POST30 1) (set_tile "t30" "1") (set_tile "t30" "0") ) ) ; ========== ; (defun DDT_CHK_TEXT () (if (= EANM_DDT_TEXT 1) (set_tile "text" "1") (set_tile "text" "0") ) ) ; ========== ; (defun DDT_CHK_SLD (/ SLIDE XDIM YDIM) (setq SLIDE nil) (cond ((= EANM_DDT_ART 3) (setq SLIDE "ddtuer(ddtuer3)")) ((= EANM_DDT_ART 2) (setq SLIDE "ddtuer(ddtuer2)")) ((= EANM_DDT_ART 1) (setq SLIDE "ddtuer(ddtuer1)")) ((= EANM_DDT_ART 0) (setq SLIDE "ddtuer(ddtuer0)")) ) (setq XDIM (dimx_tile "ddtprev")) (setq YDIM (dimy_tile "ddtprev")) (start_image "ddtprev") (fill_image 0 0 XDIM YDIM 0) (slide_image 0 0 XDIM YDIM SLIDE) (end_image) (if (= EANM_DDT_ART 2) (mode_tile "tbreite" 0) (mode_tile "tbreite" 1) ) ) ; ========== ; (defun DDT_CHK_ART () (cond ((= EANM_DDT_ART 2) (set_tile "doppelt" "1")) ((= EANM_DDT_ART 1) (set_tile "einfach" "1")) ((= EANM_DDT_ART 0) (progn (set_tile "ohne_art" "1") (mode_tile "art" 1)) ) ) (DDT_CHK_SLD) ) ; ========== ; (defun DDT_CHK_OHNE_ART () (mode_tile "art" (atoi $VALUE)) (if (= (atoi $VALUE) 1) (setq EANM_DDT_ART 0) (setq EANM_DDT_ART 1) ) ) ; ========== ; (defun DDT_CHK_RAHMEN () (if (= EANM_DDT_RAHMEN 1) (set_tile "rahmen" "1") (set_tile "rahmen" "0") ) ) ; ========== ; (defun DDT_CHK_OHNE_RAHMEN () (mode_tile "rahmen" (atoi $VALUE)) (if (= (atoi $VALUE) 1) (setq EANM_DDT_RAHMEN 0) (setq EANM_DDT_RAHMEN 1) ) ) ; ========== ; (defun DDT_CHK_STURZ () (cond ((= EANM_DDT_STURZ 3) (set_tile "2_anschlag" "1")) ((= EANM_DDT_STURZ 2) (set_tile "anschlag" "1")) ((= EANM_DDT_STURZ 1) (set_tile "nur_sturz" "1")) ((= EANM_DDT_STURZ 0) (progn (set_tile "ohne_sturz" "1") (mode_tile "sturz" 1)) ) ) ) ; ========== ; (defun DDT_CHK_OHNE_STURZ () (mode_tile "sturz" (atoi $VALUE)) (if (= (atoi $VALUE) 1) (setq EANM_DDT_STURZ 0) (setq EANM_DDT_STURZ 1) ) ) ; ========== ; (defun DDT_NEWVAL (/ F) (princ (strcat "\n-->Hinweis: Erzeuge neue Definitionsdatei ... " (strcat EANM_V:PFAD EANM_V:LAND "\\DDTUER.ini") ) ) (setq F (open (strcat EANM_V:PFAD EANM_V:LAND "\\DDTUER.ini") "w")) (write-line ";;; Definitionsdatei für DDTUER.LSP" F) (write-line ";;; (c)2000 NigG @on's" F) (write-line ";;;" F) (write-line ";;;" F) (write-line ";;;" F) (write-line ";;; Lichte Türbreite" F) (write-line (strcat "(EANM_DDT_LBREITE " (rtos EANM_DDT_LBREITE) ")") F ) (write-line ";;; Lichte Türhöhe" F) (write-line (strcat "(EANM_DDT_LHOEHE " (rtos EANM_DDT_LHOEHE) ")") F ) (write-line ";;; Stockstärke" F) (write-line (strcat "(EANM_DDT_SBREITE " (rtos EANM_DDT_SBREITE) ")") F ) (write-line ";;; Türart - 0...ohne / 1...einfach / 2...doppelt" F ) (write-line (strcat "(EANM_DDT_ART " (itoa EANM_DDT_ART) ")") F) (write-line ";;; Türrahmen - 0...ohne / 1...Zarge" F) (write-line (strcat "(EANM_DDT_RAHMEN " (itoa EANM_DDT_RAHMEN) ")") F) (write-line ";;; Türsturz - 0...ohne / 1...Streiftür / 2...Anschlag / 3...Doppelanschlag" F ) (write-line (strcat "(EANM_DDT_STURZ " (itoa EANM_DDT_STURZ) ")") F) (write-line ";;; Raumgrenzlinie einfügen - 0...ohne / 1...mit" F ) (write-line (strcat "(EANM_DDT_TRENN " (itoa EANM_DDT_TRENN) ")") F) (write-line ";;; Sturzhöhentext einfügen - 0...ohne / 1...mit" F ) (write-line (strcat "(EANM_DDT_TEXT " (itoa EANM_DDT_TEXT) ")") F) (write-line ";;; Beschreibung einfügen - 0...ohne / 1...mit" F) (write-line (strcat "(EANM_DDT_POS " (itoa EANM_DDT_POS) ")") F) (close F) ) ; ========== ; (defun DDT_CHK_OPTIONEN (/ RAHMENH SYMBH ANSCHLH STURZH TRENNH) (if (not (new_dialog "ddtuer_hilf" DCL_ID)) (exit) ) (setq RAHMENH DDT_LAY_RAHMEN SYMBH DDT_LAY_SYMBOL ANSCHLH DDT_LAY_ANSCH STURZH DDT_LAY_STURZ TRENNH DDT_LAY_TRENN ) (set_tile "rahmen" RAHMENH) (set_tile "symbol" SYMBH) (set_tile "anschlag" ANSCHLH) (set_tile "sturz" STURZH) (set_tile "trenn" TRENNH) (set_tile "error" EANM_V:COPY) (set_tile "label" "cadMANdu: Einfügeeinstellungen") (action_tile "rahmen" "(setq RAHMENH $value)") (action_tile "symbol" "(setq SYMBH $value)") (action_tile "anschlag" "(setq ANSCHLH $value)") (action_tile "sturz" "(setq STURZH $value)") (action_tile "trenn" "(setq TRENNH $value)") (set_tile "pos" "1") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq DO_H (start_dialog)) (if (= DO_H 1) (progn (setq DDT_LAY_RAHMEN (strcase RAHMENH) DDT_LAY_SYMBOL (strcase SYMBH) DDT_LAY_ANSCH (strcase ANSCHLH) DDT_LAY_STURZ (strcase STURZH) DDT_LAY_TRENN (strcase TRENNH) ) (DDT_NEWVAL) ) ) ) ; ========== ; (defun DDT_GET_POINTS (/ OECHO OCOL OLAY OOSM OLUP) (setq OECHO (getvar "cmdecho") OCOL (getvar "cecolor") OLAY (getvar "clayer") OLTY (getvar "celtype") OOSM (getvar "osmode") OLUP (getvar "luprec") ) (setvar "osmode" 512) (setq LEFT 3.1416 1ST_PT NIL 2ND_PT NIL 3RD_PT NIL PICK NIL ) (setq 1ST_PT (getpoint "\nEinfügepunkt der Tür auf Wand zeigen ... (näc) " ) ) (if (= 1ST_PT NIL) (progn (setq WTYP NIL ENT NIL ) (while (null WTYP) (setq ENT (entsel "\nWand für Türe zeigen: ")) (if (= ENT NIL) (princ) (progn (setq EOBJ (entget (car ENT)) WTYP (cdr (assoc 0 EOBJ)) ) (if (= WTYP "LINE") (princ) (progn (setq WTYP NIL) (princ "\n-->Fehler: Objekt muß eine Linie sein!") ) ) ) ) ) (setq PT_WALL (nth 1 ENT) 1PT_WALL (cdr (assoc 10 EOBJ)) 2PT_WALL (cdr (assoc 11 EOBJ)) ) (if (< (distance 1PT_WALL PT_WALL) (distance 2PT_WALL PT_WALL)) (setq PT_WALL 1PT_WALL PT_WIN (angle 1PT_WALL 2PT_WALL) 2ND_PT 2PT_WALL ) (setq PT_WALL 2PT_WALL PT_WIN (angle 2PT_WALL 1PT_WALL) 2ND_PT 1PT_WALL ) ) (setq DDT_DISTH NIL) (if (or (= DDT_DIST NIL) (= DDT_DIST "")) (setq DDT_DIST (* 1.0 EANM_V:EINH)) ) (setq DDT_DISTH (getdist PT_WALL (strcat "\nAbstand von Bezugspunkt eingeben <" (rtos DDT_DIST) ">: " ) ) ) (if (= DDT_DISTH NIL) (princ) (setq DDT_DIST DDT_DISTH) ) (setq 1ST_PT (polar PT_WALL PT_WIN DDT_DIST)) ) (progn (setq PICK NIL) (while (= PICK NIL) (setq 2ND_PT (getpoint 1ST_PT "\nEinfügerichtung entlang der Wand zeigen ... (näc)" ) PICK 2ND_PT ) (DDT_CHECK_WALL_ENT) ) ) ) (setvar "osmode" 128) (setq PICK NIL) (while (= PICK NIL) (setq 3RD_PT (getpoint 1ST_PT "\n2. Wandlinie zeigen ... (lot)") PICK 3RD_PT ) (DDT_CHECK_WALL_ENT) ) (setvar "osmode" 0) (DDT_CHECK_WALL_LYR) (setq OEFF_H (atof (angtos (angle 1ST_PT 2ND_PT) 0 4)) RAHMEN_H (atof (angtos (angle 1ST_PT 3RD_PT) 0 4)) ) (if (>= (- OEFF_H RAHMEN_H) 0.0) (progn (setq OEFF_WIN (angle 1ST_PT 2ND_PT) RAHMEN_WIN (angle 1ST_PT 3RD_PT) ) ) (progn (setq OEFF_WIN (angle 1ST_PT 2ND_PT) RAHMEN_WIN (angle 1ST_PT 3RD_PT) WALL_DIST (distance 1ST_PT 3RD_PT) 2ND_PT 1ST_PT ) (if (= EANM_DDT_ART 2) (setq 1ST_PT (polar 2ND_PT OEFF_WIN (* (* EANM_DDT_LBREITE EANM_V:EINH) 2))) (setq 1ST_PT (polar 2ND_PT OEFF_WIN (* EANM_DDT_LBREITE EANM_V:EINH))) ) (setq 3RD_PT (polar 1ST_PT RAHMEN_WIN WALL_DIST) OEFF_WIN (angle 1ST_PT 2ND_PT) RAHMEN_WIN (angle 1ST_PT 3RD_PT) ) ) ) (setq BRK_PT1 1ST_PT BRK_PT2 (polar 1ST_PT OEFF_WIN (* EANM_DDT_LBREITE EANM_V:EINH)) BRK_PT3 3RD_PT BRK_PT4 (polar 3RD_PT OEFF_WIN (* EANM_DDT_LBREITE EANM_V:EINH)) BRK_PT5 (polar BRK_PT1 OEFF_WIN (* 2 (* EANM_DDT_LBREITE EANM_V:EINH))) BRK_PT6 (polar BRK_PT3 OEFF_WIN (* 2 (* EANM_DDT_LBREITE EANM_V:EINH))) ) (setq RAHMEN1_PT1 1ST_PT RAHMEN1_PT2 3RD_PT RAHMEN1_PT3 (polar 3RD_PT (+ LEFT OEFF_WIN) (* EANM_DDT_SBREITE EANM_V:EINH)) RAHMEN1_PT4 (polar 1ST_PT (+ LEFT OEFF_WIN) (* EANM_DDT_SBREITE EANM_V:EINH)) ) (setq RAHMEN2_PT1 BRK_PT2 RAHMEN2_PT2 BRK_PT4 RAHMEN2_PT3 (polar BRK_PT4 OEFF_WIN (* EANM_DDT_SBREITE EANM_V:EINH)) RAHMEN2_PT4 (polar BRK_PT2 OEFF_WIN (* EANM_DDT_SBREITE EANM_V:EINH)) ) (setq RAHMEN2A_PT1 BRK_PT5 RAHMEN2A_PT2 BRK_PT6 RAHMEN2A_PT3 (polar RAHMEN2A_PT2 OEFF_WIN (* EANM_DDT_SBREITE EANM_V:EINH)) RAHMEN2A_PT4 (polar RAHMEN2A_PT1 OEFF_WIN (* EANM_DDT_SBREITE EANM_V:EINH)) ) (setvar "cmdecho" 0) (setvar "celtype" "BYLAYER") (setvar "cecolor" "BYLAYER") (setvar "osmode" 0) (if (= EANM_DDT_ART 2) (DDT_BREAK_WALLS_DOUBLE) (DDT_BREAK_WALLS_SINGLE) ) (if (> EANM_DDT_STURZ 0) (DDT_DRAW_STURZ) ) (if (> EANM_DDT_TRENN 0) (DDT_DRAW_TRENN) ) (if (> EANM_DDT_POS 0) (DDT_DRAW_POS) ) (if (> EANM_DDT_TEXT 0) (DDT_DRAW_TEXT) ) (setvar "clayer" OLAY) (setvar "celtype" OLTY) (setvar "cecolor" OCOL) (setvar "luprec" OLUP) (setvar "osmode" OOSM) (setvar "cmdecho" OECHO) (princ) ) ; ========== ; (defun DDT_CHECK_WALL_LYR (/ STATUS LS ENT) (setq DDT_LAY_WALL (cdr (assoc 8 (entget (ssname (ssget 1ST_PT) 0))))) (setq LS (tblsearch "layer" DDT_LAY_WALL)) (setq STATUS (cdr (assoc 70 LS))) (cond ((= 1 STATUS) (command "layer" "_t" DDT_LAY_WALL "")) ((= 4 STATUS) (command "layer" "_u" DDT_LAY_WALL "")) ) ) ; ========== ; (defun DDT_CHECK_WALL_ENT (/ ENT) (setq ENT (entget (ssname (ssget PICK) 0))) (if (/= (cdr (assoc 0 ENT)) "LINE") (progn (princ "\nFehler: Punkt nicht auf Linie!") (setq PICK NIL) ) ) ) ; ========== ; (defun DDT_BREAK_WALLS_SINGLE () ; --- Wand aufreißen und schließen--- ; (setvar "clayer" DDT_LAY_WALL) (if (= EANM_DDT_RAHMEN 0) (progn (command "_.break" BRK_PT1 BRK_PT2) (command "_.break" BRK_PT3 BRK_PT4) (setq ST_PT1 BRK_PT1 ST_PT2 BRK_PT2 ST_PT3 BRK_PT3 ST_PT4 BRK_PT4 ) ) (progn (setq BRK_PT1 RAHMEN1_PT4) (setq BRK_PT3 RAHMEN1_PT3) (setq BRK_PT2 RAHMEN2_PT4) (setq BRK_PT4 RAHMEN2_PT3) (command "_.break" BRK_PT1 BRK_PT2) (command "_.break" BRK_PT3 BRK_PT4) (setq ST_PT1 RAHMEN1_PT1 ST_PT2 RAHMEN2_PT1 ST_PT3 RAHMEN1_PT2 ST_PT4 RAHMEN2_PT2 ) ) ) (command "_.line" BRK_PT1 BRK_PT3 "") (command "_.line" BRK_PT2 BRK_PT4 "") ; --- Rahmen zeichnen --- ; (setvar "clayer" DDT_LAY_RAHMEN) (if (= EANM_DDT_RAHMEN 0) (princ) (progn (command "_.line" RAHMEN1_PT4 RAHMEN1_PT1 RAHMEN1_PT2 RAHMEN1_PT3 "" ) (command "_.line" RAHMEN2_PT4 RAHMEN2_PT1 RAHMEN2_PT2 RAHMEN2_PT3 "" ) ) ) ; --- Türsymbol zeichnen --- ; (setvar "clayer" DDT_LAY_SYMBOL) (setq PTH NIL) (while (= PTH NIL) (setq PTH (getpoint "\nTürdrehpunkt zeigen (nur Nähe): ")) (if (= PTH NIL) (princ "\n-->Fehler: Ungültiger Punkt!") ) ) (setq DIST1 (distance PTH BRK_PT1) DIST3 (distance PTH BRK_PT3) DIST2 (distance PTH BRK_PT2) DIST4 (distance PTH BRK_PT4) DISTH DIST1 ) (if (= EANM_DDT_RAHMEN 0) (setq PTH BRK_PT1) (setq PTH RAHMEN1_PT1) ) (setq WIN (- (atof (angtos (angle PTH BRK_PT1) 0 4)) 180.0) ) (if (< DIST2 DISTH) (progn (if (= EANM_DDT_RAHMEN 0) (setq PTH BRK_PT2) (setq PTH RAHMEN2_PT1) ) (setq WIN (- (atof (angtos (angle PTH BRK_PT1) 0 4)) 180.0) DISTH DIST2 ) ) ) (if (< DIST3 DISTH) (progn (if (= EANM_DDT_RAHMEN 0) (setq PTH BRK_PT3) (setq PTH RAHMEN1_PT2) ) (setq WIN (- (atof (angtos (angle PTH BRK_PT4) 0 4)) 180.0) DISTH DIST3 ) ) ) (if (< DIST4 DISTH) (progn (if (= EANM_DDT_RAHMEN 0) (setq PTH BRK_PT4) (setq PTH RAHMEN2_PT2) ) (setq WIN (- (atof (angtos (angle PTH BRK_PT3) 0 4)) 180.0) DISTH DIST4 ) ) ) (if (or (= PTH BRK_PT1) (= PTH RAHMEN1_PT1)) (setq TUER "ddtuerl" WIN (atof (angtos (angle PTH BRK_PT2) 0 4)) ) ) (if (or (= PTH BRK_PT2) (= PTH RAHMEN2_PT1)) (setq TUER "ddtuerr" WIN (- (atof (angtos (angle PTH BRK_PT1) 0 4)) 180.0)) ) (if (or (= PTH BRK_PT3) (= PTH RAHMEN1_PT2)) (setq TUER "ddtuerr" WIN (- (atof (angtos (angle PTH BRK_PT4) 0 4)) 180.0)) ) (if (or (= PTH BRK_PT4) (= PTH RAHMEN2_PT2)) (setq TUER "ddtuerl" WIN (atof (angtos (angle PTH BRK_PT3) 0 4)) ) ) (if (/= EANM_DDT_ART 0) (command "_.insert" (strcat EANM_V:PFAD EANM_V:LAND "\\" TUER) PTH (* EANM_DDT_LBREITE EANM_V:EINH) "" (rtos WIN)) ) ) ; ========== ; (defun DDT_BREAK_WALLS_DOUBLE () ; --- Wand aufreißen und schließen--- ; (setvar "clayer" DDT_LAY_WALL) (if (= EANM_DDT_RAHMEN 0) (progn (command "_.break" BRK_PT1 BRK_PT5) (command "_.break" BRK_PT3 BRK_PT6) (setq ST_PT1 BRK_PT1 ST_PT2 BRK_PT5 ST_PT3 BRK_PT3 ST_PT4 BRK_PT6 ) ) (progn (setq BRK_PT1 RAHMEN1_PT4) (setq BRK_PT5 RAHMEN2A_PT4) (setq BRK_PT3 RAHMEN1_PT3) (setq BRK_PT6 RAHMEN2A_PT3) (command "_.break" BRK_PT1 BRK_PT5) (command "_.break" BRK_PT3 BRK_PT6) (setq ST_PT1 RAHMEN1_PT1 ST_PT2 RAHMEN2A_PT1 ST_PT3 RAHMEN1_PT2 ST_PT4 RAHMEN2A_PT2 ) ) ) (command "_.line" BRK_PT1 BRK_PT3 "") (command "_.line" BRK_PT5 BRK_PT6 "") ; --- Rahmen zeichnen --- ; (setvar "clayer" DDT_LAY_RAHMEN) (if (= EANM_DDT_RAHMEN 0) (terpri) (progn (command "_.line" RAHMEN1_PT4 RAHMEN1_PT1 RAHMEN1_PT2 RAHMEN1_PT3 "" ) (command "_.line" RAHMEN2A_PT4 RAHMEN2A_PT1 RAHMEN2A_PT2 RAHMEN2A_PT3 "" ) ) ) ; --- Türsymbol zeichnen --- ; (setvar "clayer" DDT_LAY_SYMBOL) (setq PTH NIL) (while (= PTH NIL) (setq PTH (getpoint "\nTürdrehpunktseite zeigen (nur Nähe): ")) (if (= PTH NIL) (princ "\n-->Fehler: Ungültiger Punkt!") ) ) (setq DIST1 (distance PTH BRK_PT1) DIST2 (distance PTH BRK_PT5) DIST3 (distance PTH BRK_PT3) DIST4 (distance PTH BRK_PT6) DISTH DIST1 ) (if (= EANM_DDT_RAHMEN 0) (setq PTH BRK_PT1) (setq PTH RAHMEN1_PT1) ) (setq TUER "ddtuerl" WIN (atof (angtos (angle PTH BRK_PT2) 0 4)) ) (if (< DIST2 DISTH) (progn (if (= EANM_DDT_RAHMEN 0) (setq PTH BRK_PT5) (setq PTH RAHMEN2A_PT1) ) (setq TUER "ddtuerr" WIN (- (atof (angtos (angle PTH BRK_PT1) 0 4)) 180.0) DISTH DIST2 ) ) ) (if (< DIST3 DISTH) (progn (if (= EANM_DDT_RAHMEN 0) (setq PTH BRK_PT3) (setq PTH RAHMEN1_PT2) ) (setq TUER "ddtuerr" WIN (- (atof (angtos (angle PTH BRK_PT6) 0 4)) 180.0) DISTH DIST3 ) ) ) (if (< DIST4 DISTH) (progn (if (= EANM_DDT_RAHMEN 0) (setq PTH BRK_PT6) (setq PTH RAHMEN2A_PT2) ) (setq TUER "ddtuerl" WIN (atof (angtos (angle PTH BRK_PT3) 0 4)) DISTH DIST4 ) ) ) (if (/= EANM_DDT_ART 0) (command "_.insert" (strcat EANM_V:PFAD EANM_V:LAND "\\" TUER) PTH (* EANM_DDT_LBREITE EANM_V:EINH) "" (rtos WIN)) ) (cond ((= DISTH DIST1) (progn (if (= EANM_DDT_RAHMEN 0) (setq PTH BRK_PT5) (setq PTH RAHMEN2A_PT1) ) (setq TUER "ddtuerr" WIN (- (atof (angtos (angle PTH BRK_PT1) 0 4)) 180.0) ) ) ) ((= DISTH DIST2) (progn (if (= EANM_DDT_RAHMEN 0) (setq PTH BRK_PT1) (setq PTH RAHMEN1_PT1) ) (setq TUER "ddtuerl" WIN (atof (angtos (angle PTH BRK_PT2) 0 4)) ) ) ) ((= DISTH DIST3) (progn (if (= EANM_DDT_RAHMEN 0) (setq PTH BRK_PT6) (setq PTH RAHMEN2A_PT2) ) (setq TUER "ddtuerl" WIN (atof (angtos (angle PTH BRK_PT3) 0 4)) ) ) ) ((= DISTH DIST4) (progn (if (= EANM_DDT_RAHMEN 0) (setq PTH BRK_PT3) (setq PTH RAHMEN1_PT2) ) (setq TUER "ddtuerr" WIN (- (atof (angtos (angle PTH BRK_PT6) 0 4)) 180.0) ) ) ) ) (if (/= EANM_DDT_ART 0) (command "_.insert" (strcat EANM_V:PFAD EANM_V:LAND "\\" TUER) PTH (* EANM_DDT_LBREITE EANM_V:EINH) "" (rtos WIN)) ) ) ; ========== ; (defun DDT_DRAW_STURZ () (setvar "clayer" DDT_LAY_STURZ) (cond ((= EANM_DDT_STURZ 3) (progn (setvar "celtype" "CONTINUOUS") (setvar "clayer" DDT_LAY_ANSCH) (command "_.line" ST_PT1 ST_PT2 "" "_line" ST_PT3 ST_PT4 "") ) ) ((= EANM_DDT_STURZ 2) (cond ((or (= DISTH DIST1) (= DISTH DIST2)) (progn (setvar "celtype" "CONTINUOUS") (setvar "clayer" DDT_LAY_ANSCH) (command "_.line" ST_PT1 ST_PT2 "") (setvar "clayer" DDT_LAY_STURZ) (setvar "celtype" "BYLAYER") (command "_.line" ST_PT3 ST_PT4 "") ) ) ((or (= DISTH DIST3) (= DISTH DIST4)) (progn (setvar "clayer" DDT_LAY_ANSCH) (setvar "celtype" "CONTINUOUS") (command "_.line" ST_PT3 ST_PT4 "") (setvar "clayer" DDT_LAY_STURZ) (setvar "celtype" "BYLAYER") (command "_.line" ST_PT1 ST_PT2 "") ) ) ) ) ((= EANM_DDT_STURZ 1) (command "_.line" ST_PT1 ST_PT2 "" "_line" ST_PT3 ST_PT4 "") ) ) (setvar "celtype" "BYLAYER") ) ; ========== ; (defun DDT_DRAW_TRENN () (setvar "clayer" DDT_LAY_TRENN) (if (= DISTH NIL) (progn (setq PTH NIL) (while (= PTH NIL) (setq PTH (getpoint "\nTürdrehpunkt zeigen (nur Nähe): ")) (if (= PTH NIL) (princ "\n-->Fehler: Ungültiger Punkt!") ) ) (setq DIST1 (distance PTH BRK_PT1) DIST3 (distance PTH BRK_PT3) DIST2 (distance PTH BRK_PT2) DIST4 (distance PTH BRK_PT4) DISTH DIST1 ) (if (< DIST2 DISTH) (setq DISTH DIST2) ) (if (< DIST3 DISTH) (setq DISTH DIST3) ) (if (< DIST4 DISTH) (setq DISTH DIST4) ) ) ) (cond ((or (= DISTH DIST1) (= DISTH DIST2)) (command "_.line" ST_PT1 ST_PT2 "") ) ((or (= DISTH DIST3) (= DISTH DIST4)) (progn (command "_.line" ST_PT3 ST_PT4 "") ) ) ) ) ; ========== ; (defun DDT_DRAW_TEXT () (setvar "osmode" 0) (setq PT NIL) (while (= PT NIL) (setq PT (getpoint "\nTexteinfügepunkt zeigen: ")) (if (= PT NIL) (princ "\n-->Fehler: Ungültiger Punkt!") ) ) (S:EANM_LAYMAKE "TUERP") (command "_.layer" "_s" (S:EANM_LAYSET "TUERP") "") (command "_.color" "_bylayer") (setq TEXT_PW (- (atof (angtos (angle BRK_PT1 BRK_PT3) 0 4)) 90)) (if (> TEXT_PW 90.0) (setq TEXT_PW (- TEXT_PW 180.0))) (if (< TEXT_PW 0.0) (setq TEXT_PW (+ TEXT_PW 180.0))) (if (/= (findfile (strcat EANM_V:PFAD EANM_V:LAND "\\tuerhpos.dwg")) nil) (if (= EANM_DDT_RAHMEN 1) (progn (command "_.insert" (strcat EANM_V:PFAD EANM_V:LAND "\\tuerhpos") PT (rtos (* EANM_V:MASS EANM_V:EINH)) "" (rtos TEXT_PW) ) (setvar "luprec" 0) (command (rtos (* (+ EANM_DDT_LHOEHE EANM_DDT_SBREITE) 100)) ) ) (progn (command "_.insert" (strcat EANM_V:PFAD EANM_V:LAND "\\tuerhpos") PT (rtos (* EANM_V:MASS EANM_V:EINH)) "" (rtos TEXT_PW) ) (setvar "luprec" 0) (command (rtos (* EANM_DDT_LHOEHE 100)) ) ) ) (princ "\n-->Fehler: TUERHPOS.DWG nicht gefunden!") ) (setvar "luprec" OLUP) ) ; ========== ; (defun DDT_DRAW_POS () (setvar "osmode" 3) (setq PT NIL) (while (= PT NIL) (setq PT (getpoint "\nBeschreibungseinfügepunkt zeigen: ")) (if (= PT NIL) (princ "\n-->Fehler: Ungültiger Punkt!") ) ) (S:EANM_LAYMAKE "TUERP") (command "_.layer" "_s" (S:EANM_LAYSET "TUERP") "") (command "_.color" "_bylayer") (setq POS_PW (atof (angtos (angle BRK_PT1 BRK_PT3) 0 4))) (if (or (= POS_PW 90.0) (> POS_PW 90.0)) (setq POS_PW (- POS_PW 180.0)) ) (if (or (= POS_PW -90.0) (< POS_PW 0.0)) (setq POS_PW (+ POS_PW 180.0)) ) (if (or (= POS_PW -90.0) (> POS_PW 90.0)) (setq POS_PW (- POS_PW 180.0)) ) (if (= EANM_DDT_POST30 1) (setq POS_T30 "T30") (setq POS_T30 "")) (if (and (/= (findfile (strcat EANM_V:PFAD EANM_V:LAND "\\tuerpos.dwg")) nil) (/= (findfile (strcat EANM_V:PFAD EANM_V:LAND "\\tuerpos50.dwg")) nil) ) (if (= EANM_DDT_ART 2) (progn (if (= EANM_DDT_POS50 0) (command "_.insert" (strcat EANM_V:PFAD EANM_V:LAND "\\tuerpos") PT (rtos (* EANM_V:MASS EANM_V:EINH)) "" (rtos POS_PW) ) (command "_.insert" (strcat EANM_V:PFAD EANM_V:LAND "\\tuerpos50") PT (rtos (* EANM_V:MASS EANM_V:EINH)) "" (rtos POS_PW) ) ) (setvar "luprec" 0) (if (= EANM_DDT_POS50 0) (command (rtos (* (* EANM_DDT_LBREITE 2) 100)) (rtos (* EANM_DDT_LHOEHE 100)) POS_T30) (command (rtos (* (* EANM_DDT_LBREITE 2) 100)) (rtos (* EANM_DDT_LHOEHE 100)) "" POS_T30) ) ) (progn (if (= EANM_DDT_POS50 0) (command "_.insert" (strcat EANM_V:PFAD EANM_V:LAND "\\tuerpos") PT (rtos (* EANM_V:MASS EANM_V:EINH)) "" (rtos POS_PW) ) (command "_.insert" (strcat EANM_V:PFAD EANM_V:LAND "\\tuerpos50") PT (rtos (* EANM_V:MASS EANM_V:EINH)) "" (rtos POS_PW) ) ) (setvar "luprec" 0) (if (= EANM_DDT_POS50 0) (command (rtos (* EANM_DDT_LBREITE 100)) (rtos (* EANM_DDT_LHOEHE 100)) POS_T30) (command (rtos (* EANM_DDT_LBREITE 100)) (rtos (* EANM_DDT_LHOEHE 100)) "" POS_T30) ) ) ) (princ "\n-->Fehler: TUERPOS.DWG und TUERPOS50.DWG nicht gefunden!") ) (setvar "luprec" OLUP) ) ; ========== ; (defun DDT_VAL (/ F) (princ (strcat "\n-->Hinweis: Erzeuge Definitionsdatei ... " (strcat EANM_V:PFAD EANM_V:LAND "\\DDTUER.ini") ) ) (setq F (open (strcat EANM_V:PFAD EANM_V:LAND "\\DDTUER.ini") "w")) (write-line ";;; Definitionsdatei für DDTUER.LSP" F) (write-line ";;; (c)2000 NigG @on's" F) (write-line ";;;" F) (write-line ";;;" F) (write-line ";;;" F) (write-line ";;; Lichte Türbreite" F) (write-line "(EANM_DDT_LBREITE 1.0)" F) (write-line ";;; Lichte Türhöhe" F) (write-line "(EANM_DDT_LHOEHE 2.0)" F) (write-line ";;; Stockstärke" F) (write-line "(EANM_DDT_SBREITE 0.05)" F) (write-line ";;; Türart - 0...ohne / 1...einfach / 2...doppelt" F) (write-line "(EANM_DDT_ART 1)" F) (write-line ";;; Türrahmen - 0...ohne / 1...Zarge" F) (write-line "(EANM_DDT_RAHMEN 1)" F) (write-line ";;; Türsturz - 0...ohne / 1...Streiftür / 2...Anschlag / 3...Doppelanschlag" F) (write-line "(EANM_DDT_STURZ 2)" F) (write-line ";;; Raumgrenzlinie einfügen - 0...ohne / 1...mit" F) (write-line "(EANM_DDT_TRENN 1)" F) (write-line ";;; Sturzhöhentext einfügen - 0...ohne / 1...mit" F) (write-line "(EANM_DDT_TEXT 0)" F) (write-line ";;; Beschreibung einfügen - 0...ohne / 1...mit" F) (write-line "(EANM_DDT_POS 1)" F) (close F) ) ; ========== ; (defun DDT_GETLTC (/ XX LTY) (setq LLIST '()) (setq XX t) (while (setq LTY (tblnext "LTYPE" XX)) (setq LLIST (append LLIST (list (cdr (assoc 2 LTY))))) (setq XX NIL) ) (setq LLIST (append LLIST (list "BYBLOCK" "BYLAYER")) ALIST (length LLIST) ) (if (<= ALIST (getvar "maxsort")) (setq LLIST (acad_strlsort LLIST)) ) ) ; ========== ; (defun DDT_LAY (/ OECHO LINDAT LLIST) (DDT_GETLTC) (setq OECHO (getvar "cmdecho") LINDAT (findfile "cadmandu.lin") FIND 0 ) (setvar "cmdecho" 0) (if (/= (member "VERDECKT" LLIST) NIL) (setq FIND 1) (setq FIND 0) ) (if (= FIND 0) (command "_.linetype" "_l" "VERDECKT" LINDAT "") ) (setq FIND 0) (if (/= (member "STRICHPUNKT" LLIST) NIL) (setq FIND 1) (setq FIND 0) ) (if (= FIND 0) (command "_.linetype" "_l" "STRICHPUNKT" LINDAT "") ) (S:EANM_LAYMAKE "TUER") (S:EANM_LAYMAKE "TUERA") (S:EANM_LAYMAKE "TUERP") (S:EANM_LAYMAKE "TUERH") (S:EANM_LAYMAKE "TUERS") (S:EANM_LAYMAKE "UNS") (setvar "cmdecho" OECHO) (setq OECHO NIL) ) ; ========== ; (defun C:EANM_TUER (/ DCL_ID DO OERR NM_IMX NM_IMY DDT_BLISTE DDT_LAY_RAHMEN DDT_LAY_SYMBOL DDT_LAY_ANSCHDDT_LAY_ANSCH DDT_LAY_STURZ DDT_LAY_TRENN DDT_LAY_POS TFILE) (if (not S:EANM_STATUS) (load "cadmandu") ) (S:EANM_STATUS) (if (not S:EANM_LAYSET) (load "cmdkonfig") ) (setq EANM_HFILE "ddtuer.hlp" EANM_HNAME "DDTUER") (if (= (findfile "cadmandu.lin") NIL) (progn (alert "-->Fehler: CADMANDU.LIN nicht gefunden!") (exit)) ) (if (= (findfile (strcat EANM_V:PFAD EANM_V:LAND "\\ddtuerr.dwg")) NIL) (progn (alert "-->Fehler: DDTUERR.DWG nicht gefunden!") (exit)) ) (if (= (findfile (strcat EANM_V:PFAD EANM_V:LAND "\\ddtuerl.dwg")) NIL) (progn (alert "-->Fehler: DDTUERL.DWG nicht gefunden!") (exit)) ) (if (= EANM_DDT_LBREITE nil) (progn (if (findfile (strcat EANM_V:PFAD EANM_V:LAND "\\DDTUER.ini")) (princ) (DDT_VAL) ) (setq F (open (strcat EANM_V:PFAD EANM_V:LAND "\\DDTUER.ini") "r")) (while (setq VAL (read-line F)) (if (and (listp (setq VAL (read VAL))) (/= VAL NIL)) (set (car VAL) (cadr VAL)) ) ) (close F) ) ) (command "_.undo" "_be") (setq OERR *ERROR* *ERROR* DDT_ERR DDT_HBREITE NIL DDT_LAY_RAHMEN (S:EANM_LAYSET "TUER") DDT_LAY_SYMBOL (S:EANM_LAYSET "TUERS") DDT_LAY_ANSCH (S:EANM_LAYSET "TUERA") DDT_LAY_STURZ (S:EANM_LAYSET "UNS") DDT_LAY_TRENN (S:EANM_LAYSET "TUERH") DDT_LAY_POS (S:EANM_LAYSET "TUERP") ) (if (/= EANM_DDT_LBREITE NIL) (setq DDT_HBREITE EANM_DDT_LBREITE) ) (if (/= DDT_HBREITE NIL) (setq EANM_DDT_LBREITE DDT_HBREITE) ) (DDT_LAY) (setq TFILE (open (strcat EANM_V:PFAD EANM_V:LAND "\\ddtuer.def") "r") DDT_BLISTE NIL ) (while (setq TLINE (read-line TFILE)) (if (/= TLINE NIL) (if (= DDT_BLISTE NIL) (setq DDT_BLISTE (list TLINE)) (setq DDT_BLISTE (append (list TLINE) DDT_BLISTE)) ) (terpri) ) ) (close TFILE) (setq DDT_BLISTE (acad_strlsort DDT_BLISTE)) (setq DCL_ID (load_dialog "ddtuer.dcl")) (if (not (new_dialog "ddtuer" DCL_ID)) (progn (alert "-->Fehler: DDTUER.DCL nicht gefunden!") (exit)) ;progn ) (start_list "pop_lbreite") (mapcar 'add_list DDT_BLISTE) (end_list) (DDT_CHK_MASZE) (DDT_CHK_ART) (DDT_CHK_RAHMEN) (DDT_CHK_STURZ) (DDT_CHK_TEXT) (DDT_CHK_POS) (set_tile "lhoehe" (rtos EANM_DDT_LHOEHE)) (set_tile "trenn" (itoa EANM_DDT_TRENN)) (set_tile "text" (itoa EANM_DDT_TEXT)) (set_tile "error" EANM_V:COPY) (set_tile "label" "cadMANdu: Tür erzeugen") (setq NM_IMX (dimx_tile "nmlogo") NM_IMY (dimy_tile "nmlogo") ) (start_image "nmlogo") (slide_image 0 0 NM_IMX NM_IMY "nmlogo") (end_image) (action_tile "lbreite" "(setq EANM_DDT_LBREITE (atof $value))(ddt_chk_masze)" ) (action_tile "pop_lbreite" "(setq EANM_DDT_LBREITE (atof (nth (atoi $value) DDT_BLISTE)))(ddt_chk_masze)" ) (action_tile "lhoehe" "(setq EANM_DDT_LHOEHE (atof $value))(ddt_chk_masze)" ) (action_tile "sbreite" "(setq EANM_DDT_SBREITE (atof $value))(ddt_chk_masze)" ) (action_tile "einfach" "(setq EANM_DDT_ART 1)(ddt_chk_sld)") (action_tile "doppelt" "(setq EANM_DDT_ART 2)(ddt_chk_sld)") (action_tile "rahmen" "(setq EANM_DDT_RAHMEN (atoi $value))(ddt_chk_masze)") (action_tile "nur_sturz" "(setq EANM_DDT_STURZ 1)") (action_tile "anschlag" "(setq EANM_DDT_STURZ 2)") (action_tile "2_anschlag" "(setq EANM_DDT_STURZ 3)") (action_tile "ohne_art" "(setq EANM_DDT_ART 0)(ddt_chk_ohne_art)(ddt_chk_art)" ) (action_tile "ohne_sturz" "(setq EANM_DDT_STURZ 0)(ddt_chk_ohne_sturz)(ddt_chk_sturz)" ) (action_tile "trenn" "(setq EANM_DDT_TRENN (atoi $value))") (action_tile "text" "(setq EANM_DDT_TEXT (atoi $value))") (action_tile "pos" "(setq EANM_DDT_POS (atoi $value))(DDT_CHK_POS)") (action_tile "pos50" "(setq EANM_DDT_POS50 (atoi $value))") (action_tile "t30" "(setq EANM_DDT_POST30 (atoi $value))") (action_tile "optionen" "(ddt_newval)") (action_tile "help" "(S:EANM_HELP)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq DO (start_dialog)) (unload_dialog DCL_ID) (if (= DO 1) (DDT_GET_POINTS) ) (command "_.undo" "_end") (princ) ) ; ========== ; (princ)