GF-Block-Erstellung und Attribute-Definition vollständig implementiert.
This commit is contained in:
+255
-8
@@ -46,6 +46,8 @@
|
|||||||
(if (null *aus-ks-ein-local*) (setq *aus-ks-ein-local* nil))
|
(if (null *aus-ks-ein-local*) (setq *aus-ks-ein-local* nil))
|
||||||
(if (null *ein-ks-ein-local*) (setq *ein-ks-ein-local* nil))
|
(if (null *ein-ks-ein-local*) (setq *ein-ks-ein-local* nil))
|
||||||
(if (null *lib-initialized*) (setq *lib-initialized* nil))
|
(if (null *lib-initialized*) (setq *lib-initialized* nil))
|
||||||
|
;; Laufende GF-Blocknummer (sitzungspersistent)
|
||||||
|
(if (null #GF_LetzteNr) (setq #GF_LetzteNr 0))
|
||||||
|
|
||||||
;; DXFM_DIM sicher lesen (type-Guard gegen nicht-String Rueckgabewerte)
|
;; DXFM_DIM sicher lesen (type-Guard gegen nicht-String Rueckgabewerte)
|
||||||
(setq *gf-dxfm-dim* (getenv "DXFM_DIM"))
|
(setq *gf-dxfm-dim* (getenv "DXFM_DIM"))
|
||||||
@@ -356,8 +358,8 @@
|
|||||||
)
|
)
|
||||||
|
|
||||||
;; --- Bibliothek initialisieren: AS/ES-Masse aus einzelnen DWG-Dateien extrahieren ---
|
;; --- Bibliothek initialisieren: AS/ES-Masse aus einzelnen DWG-Dateien extrahieren ---
|
||||||
(if (null (car (atoms-family 1 '("INIT-BIBLIOTHEK"))))
|
(if (null (car (atoms-family 1 '("GF-INIT-BIBLIOTHEK"))))
|
||||||
(defun init-bibliothek ( / temp-obj ks-data ks-ein ks-aus)
|
(defun gf-init-bibliothek ( / temp-obj ks-data ks-ein ks-aus)
|
||||||
(if *lib-initialized*
|
(if *lib-initialized*
|
||||||
t
|
t
|
||||||
(progn
|
(progn
|
||||||
@@ -869,7 +871,10 @@
|
|||||||
entry-hz exit-hz
|
entry-hz exit-hz
|
||||||
first-idx last-idx neu-l
|
first-idx last-idx neu-l
|
||||||
chz shz as-target
|
chz shz as-target
|
||||||
aktuell-pt)
|
aktuell-pt nach-aus-pt
|
||||||
|
gf-nummer last-ent
|
||||||
|
L-gf-str delta-l-gf laengen-liste first-l l-item
|
||||||
|
bL90 bL60 bL30 bR90 bR60 bR30 n-bogen-gf)
|
||||||
(princ "\n\n>>> MODUS 3: Linienzug auswaehlen <<<")
|
(princ "\n\n>>> MODUS 3: Linienzug auswaehlen <<<")
|
||||||
(princ "\nBitte alle Linien (LINE) und Boegen (ARC) des Pfades auswaehlen,")
|
(princ "\nBitte alle Linien (LINE) und Boegen (ARC) des Pfades auswaehlen,")
|
||||||
(princ "\ndann ENTER druecken:")
|
(princ "\ndann ENTER druecken:")
|
||||||
@@ -1034,6 +1039,10 @@
|
|||||||
(setq antwort (getstring "\nEinfuegen? (1=Ja / 2=Nein) [1]: "))
|
(setq antwort (getstring "\nEinfuegen? (1=Ja / 2=Nein) [1]: "))
|
||||||
(if (not (= antwort "2"))
|
(if (not (= antwort "2"))
|
||||||
(progn
|
(progn
|
||||||
|
;; GF-Nummer und Entity-Grenze vor erster Einfuegung sichern
|
||||||
|
(setq gf-nummer (gf-next-number))
|
||||||
|
(setq last-ent (entlast))
|
||||||
|
|
||||||
;; AUS-Element: Block-Ursprung an startpunkt ausrichten.
|
;; AUS-Element: Block-Ursprung an startpunkt ausrichten.
|
||||||
;; KS_EIN liegt im Block seitlich (Delta-Y = Drehteller-Anschluss).
|
;; KS_EIN liegt im Block seitlich (Delta-Y = Drehteller-Anschluss).
|
||||||
;; Damit KS_AUS auf der gezeichneten Linie liegt, muss der Einfuegepunkt
|
;; Damit KS_AUS auf der gezeichneten Linie liegt, muss der Einfuegepunkt
|
||||||
@@ -1055,6 +1064,7 @@
|
|||||||
(princ (strcat "\n\n>>> AUS-Element: " as-block
|
(princ (strcat "\n\n>>> AUS-Element: " as-block
|
||||||
" (hz=" (rtos entry-hz 2 1) grad-zeichen ")"))
|
" (hz=" (rtos entry-hz 2 1) grad-zeichen ")"))
|
||||||
(setq aktuell-pt (gf-insert-gefaellebogen-by-ks as-block as-target entry-hz))
|
(setq aktuell-pt (gf-insert-gefaellebogen-by-ks as-block as-target entry-hz))
|
||||||
|
(setq nach-aus-pt aktuell-pt)
|
||||||
|
|
||||||
;; Linienzug mit Gefaellebogen und Separatoren (gekuerzte Laengen)
|
;; Linienzug mit Gefaellebogen und Separatoren (gekuerzte Laengen)
|
||||||
(setq aktuell-pt (gf-linienzug-einfuegen segmente grade aktuell-pt))
|
(setq aktuell-pt (gf-linienzug-einfuegen segmente grade aktuell-pt))
|
||||||
@@ -1070,6 +1080,64 @@
|
|||||||
" (hz=" (rtos exit-hz 2 1) grad-zeichen ")"))
|
" (hz=" (rtos exit-hz 2 1) grad-zeichen ")"))
|
||||||
(gf-insert-gefaellebogen-by-ks es-block aktuell-pt exit-hz)
|
(gf-insert-gefaellebogen-by-ks es-block aktuell-pt exit-hz)
|
||||||
|
|
||||||
|
;; --- GF_N-Block erstellen ---
|
||||||
|
|
||||||
|
;; L_GF_m: kommagetrennte Segment-Laengen in Metern (angepasste Staustrecke)
|
||||||
|
(setq laengen-liste '() first-l t)
|
||||||
|
(foreach seg segmente
|
||||||
|
(if (= (car seg) "Linie")
|
||||||
|
(setq laengen-liste
|
||||||
|
(append laengen-liste
|
||||||
|
(list (rtos (/ (caddr seg) 1000.0) 2 3))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(setq L-gf-str "")
|
||||||
|
(foreach l-item laengen-liste
|
||||||
|
(if first-l
|
||||||
|
(progn (setq L-gf-str l-item) (setq first-l nil))
|
||||||
|
(setq L-gf-str (strcat L-gf-str "," l-item))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Bogen-Typen zaehlen
|
||||||
|
(setq bL90 0 bL60 0 bL30 0 bR90 0 bR60 0 bR30 0)
|
||||||
|
(foreach seg segmente
|
||||||
|
(if (= (car seg) "Bogen")
|
||||||
|
(progn
|
||||||
|
(cond
|
||||||
|
((and (= (nth 4 seg) "links") (= (nth 3 seg) 90)) (setq bL90 (1+ bL90)))
|
||||||
|
((and (= (nth 4 seg) "links") (= (nth 3 seg) 60)) (setq bL60 (1+ bL60)))
|
||||||
|
((and (= (nth 4 seg) "links") (= (nth 3 seg) 30)) (setq bL30 (1+ bL30)))
|
||||||
|
((and (= (nth 4 seg) "rechts") (= (nth 3 seg) 90)) (setq bR90 (1+ bR90)))
|
||||||
|
((and (= (nth 4 seg) "rechts") (= (nth 3 seg) 60)) (setq bR60 (1+ bR60)))
|
||||||
|
((and (= (nth 4 seg) "rechts") (= (nth 3 seg) 30)) (setq bR30 (1+ bR30)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(setq n-bogen-gf (+ bL90 bL60 bL30 bR90 bR60 bR30))
|
||||||
|
|
||||||
|
;; Horizontaldistanz Start->Ende (2D)
|
||||||
|
(setq delta-l-gf
|
||||||
|
(sqrt (+ (expt (- (car endpunkt-ref) (car startpunkt)) 2)
|
||||||
|
(expt (- (cadr endpunkt-ref) (cadr startpunkt)) 2))))
|
||||||
|
|
||||||
|
;; Block mit allen Attributen erstellen
|
||||||
|
(gf-block-erstellen
|
||||||
|
"gruppe" as-seite gf-nummer
|
||||||
|
(caddr startpunkt)
|
||||||
|
(caddr endpunkt-ref)
|
||||||
|
deltaH
|
||||||
|
delta-l-gf
|
||||||
|
L-gf-str
|
||||||
|
grade
|
||||||
|
(1+ n-bogen-gf)
|
||||||
|
0
|
||||||
|
bL90 bL60 bL30
|
||||||
|
bR90 bR60 bR30
|
||||||
|
startpunkt last-ent nach-aus-pt entry-hz
|
||||||
|
(caddr (nth first-idx segmente)))
|
||||||
|
|
||||||
(princ "\n\n=========================================")
|
(princ "\n\n=========================================")
|
||||||
(princ "\n>>> Fertig! <<<")
|
(princ "\n>>> Fertig! <<<")
|
||||||
(princ "\n=========================================")
|
(princ "\n=========================================")
|
||||||
@@ -1078,19 +1146,180 @@
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
;; ============================================================
|
||||||
|
;; TEIL 4.5: GF-BLOCK-SYSTEM (Nummerierung, Label, Attribute)
|
||||||
|
;; ============================================================
|
||||||
|
|
||||||
|
;; Attribut-Definitionen fuer GF_N-Bloecke
|
||||||
|
(setq *gf-attrib-defs*
|
||||||
|
'(("NUMMER" "0")
|
||||||
|
("TYP" "standard")
|
||||||
|
("SEITE" "rechts")
|
||||||
|
("MONTAGEHOEHE_m" "0.000")
|
||||||
|
("HOEHE_VON" "0")
|
||||||
|
("HOEHE_BIS" "0")
|
||||||
|
("DELTA_H" "0")
|
||||||
|
("DELTA_L" "0")
|
||||||
|
("L_GF_m" "0.000")
|
||||||
|
("WINKEL" "0.000")
|
||||||
|
("ANZAHL_SEPARATOR" "0")
|
||||||
|
("ANZAHL_SCANNER" "0")
|
||||||
|
("GF_Bogen_L_90" "0")
|
||||||
|
("GF_Bogen_L_60" "0")
|
||||||
|
("GF_Bogen_L_30" "0")
|
||||||
|
("GF_Bogen_R_90" "0")
|
||||||
|
("GF_Bogen_R_60" "0")
|
||||||
|
("GF_Bogen_R_30" "0")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Naechste freie GF-Nummer (scannt alle GF_* Bloecke nach Max-NUMMER)
|
||||||
|
(defun gf-next-number ( / ss i nr maxnr attribs)
|
||||||
|
(setq maxnr 0)
|
||||||
|
(setq ss (ssget "X" '((0 . "INSERT") (2 . "GF_*"))))
|
||||||
|
(if ss
|
||||||
|
(progn
|
||||||
|
(setq i 0)
|
||||||
|
(while (< i (sslength ss))
|
||||||
|
(setq attribs (ssg-attrib-read (ssname ss i)))
|
||||||
|
(foreach pair attribs
|
||||||
|
(if (= (car pair) "NUMMER")
|
||||||
|
(progn
|
||||||
|
(setq nr (atoi (cdr pair)))
|
||||||
|
(if (> nr maxnr) (setq maxnr nr))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(setq i (1+ i))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(setq #GF_LetzteNr (max #GF_LetzteNr maxnr))
|
||||||
|
(setq #GF_LetzteNr (1+ #GF_LetzteNr))
|
||||||
|
#GF_LetzteNr
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Sichtbare Beschriftung auf Layer GF_Beschriftung erzeugen.
|
||||||
|
;; nach-aus-pt: KS_AUS des AUS-Elements (Beginn der ersten Geraden).
|
||||||
|
;; entry-hz: Horizontalwinkel der Foerderrichtung in Grad.
|
||||||
|
;; L-first-seg: Laenge der ersten geraden Staustrecke in mm.
|
||||||
|
;; Beschriftung: Mitte der ersten Geraden, 400mm senkrecht rechts versetzt.
|
||||||
|
(defun gf-make-label (gf-nummer hoehe-von hoehe-bis deltaH deltaL
|
||||||
|
L-gf-str winkel n-separator nach-aus-pt entry-hz L-first-seg /
|
||||||
|
label-txt label-pt chz-l shz-l halb)
|
||||||
|
(setq chz-l (cos (* entry-hz (/ pi 180.0))))
|
||||||
|
(setq shz-l (sin (* entry-hz (/ pi 180.0))))
|
||||||
|
(setq halb (/ (float L-first-seg) 2.0))
|
||||||
|
(setq label-pt
|
||||||
|
(list (+ (car nach-aus-pt) (* halb chz-l) (* 400.0 shz-l))
|
||||||
|
(+ (cadr nach-aus-pt) (* halb shz-l) (* -400.0 chz-l))
|
||||||
|
(caddr nach-aus-pt)))
|
||||||
|
(setq label-txt
|
||||||
|
(strcat "GF" (itoa gf-nummer)
|
||||||
|
" von:" (itoa (fix hoehe-von)) " bis:" (itoa (fix hoehe-bis)) "mm"
|
||||||
|
" dH=" (itoa (fix (abs deltaH))) "mm"
|
||||||
|
" dL=" (itoa (fix deltaL)) "mm"
|
||||||
|
" L=[" L-gf-str "]m"
|
||||||
|
" W=" (rtos (float winkel) 2 2) grad-zeichen
|
||||||
|
" Sep=" (itoa n-separator)))
|
||||||
|
(entmake
|
||||||
|
(list '(0 . "TEXT")
|
||||||
|
(cons 10 label-pt)
|
||||||
|
(cons 11 label-pt)
|
||||||
|
'(40 . 100.0)
|
||||||
|
(cons 1 label-txt)
|
||||||
|
'(7 . "Standard")
|
||||||
|
'(8 . "GF_Beschriftung")
|
||||||
|
'(72 . 1)
|
||||||
|
'(73 . 2)))
|
||||||
|
)
|
||||||
|
|
||||||
|
;; GF_N-Block aus allen seit last-ent erzeugten Entities erstellen
|
||||||
|
;; und alle 18 Attribute setzen.
|
||||||
|
(defun gf-block-erstellen (typ seite gf-nummer
|
||||||
|
hoehe-von hoehe-bis deltaH deltaL
|
||||||
|
L-gf-str winkel n-separator n-scanner
|
||||||
|
bogen-L90 bogen-L60 bogen-L30
|
||||||
|
bogen-R90 bogen-R60 bogen-R30
|
||||||
|
startpunkt last-ent nach-aus-pt entry-hz L-first-seg /
|
||||||
|
gf-bname gf-ss ent gf-insert)
|
||||||
|
;; Beschriftung: Mitte der ersten Geraden, 400mm senkrecht versetzt
|
||||||
|
(gf-make-label gf-nummer hoehe-von hoehe-bis deltaH deltaL
|
||||||
|
L-gf-str winkel n-separator nach-aus-pt entry-hz L-first-seg)
|
||||||
|
;; ATTDEFs (unsichtbar, am Startpunkt)
|
||||||
|
(foreach def *gf-attrib-defs*
|
||||||
|
(entmake
|
||||||
|
(list '(0 . "ATTDEF")
|
||||||
|
(cons 10 startpunkt)
|
||||||
|
(cons 11 startpunkt)
|
||||||
|
'(40 . 50.0)
|
||||||
|
(cons 1 (cadr def))
|
||||||
|
(cons 2 (car def))
|
||||||
|
(cons 3 (car def))
|
||||||
|
'(70 . 1)
|
||||||
|
'(72 . 0)
|
||||||
|
'(74 . 0)))
|
||||||
|
)
|
||||||
|
;; Alle Entities seit last-ent in Selektionssatz sammeln
|
||||||
|
(setq gf-ss (ssadd))
|
||||||
|
(setq ent (if last-ent (entnext last-ent) (entnext)))
|
||||||
|
(while ent
|
||||||
|
(ssadd ent gf-ss)
|
||||||
|
(setq ent (entnext ent))
|
||||||
|
)
|
||||||
|
;; Block definieren und einfuegen
|
||||||
|
(setq gf-bname (strcat "GF_" (itoa gf-nummer)))
|
||||||
|
(command "_.-BLOCK" gf-bname startpunkt gf-ss "")
|
||||||
|
(command "_.INSERT" gf-bname startpunkt 1.0 1.0 0.0)
|
||||||
|
;; Attribute auf das eingefuegte INSERT-Objekt setzen
|
||||||
|
(setq gf-insert (entlast))
|
||||||
|
(ssg-attrib-set-on gf-insert
|
||||||
|
(list
|
||||||
|
(cons "NUMMER" (itoa gf-nummer))
|
||||||
|
(cons "TYP" typ)
|
||||||
|
(cons "SEITE" seite)
|
||||||
|
(cons "MONTAGEHOEHE_m" "0.000")
|
||||||
|
(cons "HOEHE_VON" (itoa (fix hoehe-von)))
|
||||||
|
(cons "HOEHE_BIS" (itoa (fix hoehe-bis)))
|
||||||
|
(cons "DELTA_H" (itoa (fix (abs deltaH))))
|
||||||
|
(cons "DELTA_L" (itoa (fix deltaL)))
|
||||||
|
(cons "L_GF_m" L-gf-str)
|
||||||
|
(cons "WINKEL" (rtos (float winkel) 2 3))
|
||||||
|
(cons "ANZAHL_SEPARATOR" (itoa n-separator))
|
||||||
|
(cons "ANZAHL_SCANNER" (itoa n-scanner))
|
||||||
|
(cons "GF_Bogen_L_90" (itoa bogen-L90))
|
||||||
|
(cons "GF_Bogen_L_60" (itoa bogen-L60))
|
||||||
|
(cons "GF_Bogen_L_30" (itoa bogen-L30))
|
||||||
|
(cons "GF_Bogen_R_90" (itoa bogen-R90))
|
||||||
|
(cons "GF_Bogen_R_60" (itoa bogen-R60))
|
||||||
|
(cons "GF_Bogen_R_30" (itoa bogen-R30))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(princ (strcat "\n>>> GF-Block erstellt: " gf-bname))
|
||||||
|
gf-insert
|
||||||
|
)
|
||||||
|
|
||||||
;; ============================================================
|
;; ============================================================
|
||||||
;; TEIL 5: MODUS 1+2 - EINFACHE GEFAELLESTRECKE
|
;; TEIL 5: MODUS 1+2 - EINFACHE GEFAELLESTRECKE
|
||||||
;; ============================================================
|
;; ============================================================
|
||||||
|
|
||||||
(defun gefaellestrecke-einfuegen (L_stau winkel startpunkt seite /
|
;; deltaL-total: gesamte Horizontaldistanz (fuer DELTA_L-Attribut)
|
||||||
aktueller-punkt as-block es-block endpunkt)
|
(defun gefaellestrecke-einfuegen (L_stau winkel startpunkt seite deltaL-total /
|
||||||
|
aktueller-punkt as-block es-block endpunkt
|
||||||
|
gf-nummer last-ent rad gf-deltaH L-gf-str
|
||||||
|
nach-aus-pt)
|
||||||
(setq aktueller-punkt startpunkt)
|
(setq aktueller-punkt startpunkt)
|
||||||
(setq as-block (strcat "_3D_AS_90_" seite))
|
(setq as-block (strcat "_3D_AS_90_" seite))
|
||||||
(setq es-block (strcat "_3D_ES_90_" seite))
|
(setq es-block (strcat "_3D_ES_90_" seite))
|
||||||
(if (not *lib-initialized*) (init-bibliothek))
|
(if (not *lib-initialized*) (gf-init-bibliothek))
|
||||||
|
|
||||||
|
;; GF-Nummer und Entity-Grenze vor erster Einfuegung
|
||||||
|
(setq gf-nummer (gf-next-number))
|
||||||
|
(setq last-ent (entlast))
|
||||||
|
|
||||||
(princ (strcat "\n\n1/4: " as-block))
|
(princ (strcat "\n\n1/4: " as-block))
|
||||||
(setq aktueller-punkt (insert-block-by-ks as-block aktueller-punkt))
|
(setq aktueller-punkt (insert-block-by-ks as-block aktueller-punkt))
|
||||||
|
(setq nach-aus-pt aktueller-punkt)
|
||||||
|
|
||||||
(princ (strcat "\n\n2/4: Staustrecke L=" (rtos L_stau 2 1)
|
(princ (strcat "\n\n2/4: Staustrecke L=" (rtos L_stau 2 1)
|
||||||
" mm " (itoa winkel) grad-zeichen))
|
" mm " (itoa winkel) grad-zeichen))
|
||||||
@@ -1106,6 +1335,24 @@
|
|||||||
(princ (strcat "\n\n4/4: " es-block))
|
(princ (strcat "\n\n4/4: " es-block))
|
||||||
(setq endpunkt (insert-block-by-ks es-block aktueller-punkt))
|
(setq endpunkt (insert-block-by-ks es-block aktueller-punkt))
|
||||||
|
|
||||||
|
;; Abgeleitete Werte fuer Attribute
|
||||||
|
(setq rad (* (float winkel) (/ pi 180.0)))
|
||||||
|
(setq gf-deltaH (* L_stau (sin rad)))
|
||||||
|
(setq L-gf-str (rtos (/ L_stau 1000.0) 2 3))
|
||||||
|
|
||||||
|
;; GF_N-Block mit Attributen erstellen
|
||||||
|
(gf-block-erstellen
|
||||||
|
"standard" seite gf-nummer
|
||||||
|
(caddr startpunkt)
|
||||||
|
(- (caddr startpunkt) gf-deltaH)
|
||||||
|
gf-deltaH
|
||||||
|
(float deltaL-total)
|
||||||
|
L-gf-str
|
||||||
|
winkel
|
||||||
|
1 0
|
||||||
|
0 0 0 0 0 0
|
||||||
|
startpunkt last-ent nach-aus-pt 0.0 (float L_stau))
|
||||||
|
|
||||||
(princ "\n\n=========================================")
|
(princ "\n\n=========================================")
|
||||||
(princ "\n>>> Gefaellestrecke erfolgreich eingefuegt! <<<")
|
(princ "\n>>> Gefaellestrecke erfolgreich eingefuegt! <<<")
|
||||||
(princ "\n=========================================")
|
(princ "\n=========================================")
|
||||||
@@ -1126,7 +1373,7 @@
|
|||||||
(princ "\n=========================================")
|
(princ "\n=========================================")
|
||||||
|
|
||||||
;; Bibliothek initialisieren
|
;; Bibliothek initialisieren
|
||||||
(if (not (init-bibliothek))
|
(if (not (gf-init-bibliothek))
|
||||||
(progn
|
(progn
|
||||||
(alert "Fehler beim Initialisieren der Bibliothek!\nBitte DXFM_DATA pruefen.")
|
(alert "Fehler beim Initialisieren der Bibliothek!\nBitte DXFM_DATA pruefen.")
|
||||||
(exit)
|
(exit)
|
||||||
@@ -1234,7 +1481,7 @@
|
|||||||
;; Bestaetigung
|
;; Bestaetigung
|
||||||
(setq antwort (getstring "\nEinfuegen? (1=Ja / 2=Nein) [1]: "))
|
(setq antwort (getstring "\nEinfuegen? (1=Ja / 2=Nein) [1]: "))
|
||||||
(if (not (= antwort "2"))
|
(if (not (= antwort "2"))
|
||||||
(gefaellestrecke-einfuegen L_stau (fix winkel) startpunkt-fuer-einfuegen seite)
|
(gefaellestrecke-einfuegen L_stau (fix winkel) startpunkt-fuer-einfuegen seite deltaL)
|
||||||
(princ "\nAbgebrochen.")
|
(princ "\nAbgebrochen.")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user