[ADD] Modul zum Erstellen von Hängewarenlagerbereichen und Stockwerken mit Attributsdefinition für den Export in ein Anforderungsdokument für Ausschreibungen

This commit is contained in:
2026-10-30 11:11:20 +01:00
parent 4fdeaf831f
commit 473aeec5bf
26 changed files with 5921 additions and 175 deletions
+99 -1
View File
@@ -1121,6 +1121,104 @@
"kreisel-bp-kollision": "\n KOLLISION %1: %2 <-> %3 [%4] bei X=%5 Y=%6 Z=%7",
"kreisel-bp-marker": "\n%1 Marker gezeichnet (Layer %2).",
"exp-kreisel-weichen": "\n[%1] Kreisel-Weichenpunkte: %2 Beruehrung(en), %3 Kollision(en) -> %4",
"exp-kreisel-kollision": "\n[%1] WARNUNG: %2 Kreisel-Kollision(en) - Befehl KREISEL_WEICHEN zeigt sie an."
"exp-kreisel-kollision": "\n[%1] WARNUNG: %2 Kreisel-Kollision(en) - Befehl KREISEL_WEICHEN zeigt sie an.",
"lg-daten-fehlt": "\n[Lager] Datendatei nicht gefunden: %1 - es gelten die eingebauten Vorgaben.",
"lg-dialog-fehlt": "\n[Lager] Dialog nicht ladbar (%1) - Eingabe ueber die Konsole.",
"lg-einfuegen-fehler": "\n[Lager] Block %1 konnte nicht eingefuegt werden: %2",
"lg-feld-ungueltig": "Ungueltiger Wert: %1",
"lg-wert-ungueltig": "\nUngueltiger Wert - bitte erneut eingeben.",
"lg-wahl-ungueltig": "\nBitte einen der angezeigten Werte eingeben.",
"lg-feld-nr": "\nGeschoss-Nummer",
"lg-feld-bezeichnung": "\nBezeichnung",
"lg-feld-hoehe": "\nBelagshoehe (Oberkante, mm)",
"lg-feld-konstr": "\nKonstruktionshoehe des Belags (mm)",
"lg-feld-lichte": "\nLichte Hoehe (mm, leer = berechnet)",
"lg-feld-belag": "\nBelagsart",
"lg-feld-personen": "\nPersonen im Geschoss",
"lg-feld-brand": "\nBrandgefaehrdung",
"lg-feld-gang": "\nGangbreite (mm)",
"lg-feld-tiefe": "\nRegaltiefe (mm)",
"lg-feld-reihen": "\nReihen je Gang",
"lg-feld-schienen": "\nSchienen je Gang",
"lg-feld-q_abstand": "\nQuergang-Abstand (mm, 0 = keine)",
"lg-feld-q_breite": "\nQuergang-Breite (mm)",
"lg-feld-richtung": "\nReihenrichtung (Grad)",
"lg-feld-ebenen": "\nHaengeebenen Schienenhoehe/Warenlaenge;... (mm)",
"lg-feld-laenge": "\nLaenge (mm)",
"lg-feld-rand_n": "\nRandgang Nord (mm, 0 = keiner)",
"lg-feld-rand_o": "\nRandgang Ost (mm, 0 = keiner)",
"lg-feld-rand_s": "\nRandgang Sued (mm, 0 = keiner)",
"lg-feld-rand_w": "\nRandgang West (mm, 0 = keiner)",
"lg-feld-breite": "\nGangbreite (mm)",
"lg-feld-art": "\nArt des Gangs",
"lg-titel-gang": "Lager: Gaenge einfuegen",
"lg-prompt-gang-start": "\nStartpunkt der Gangmitte oder [%1] <Enter = Ende>: ",
"lg-key-rechteck": "Rechteck",
"lg-rechteck-hinweis": "\nGangflaeche mit RECHTECK zeichnen (alle Optionen wie Abmessungen/Drehung moeglich), Enter = Ende.",
"lg-rechteck-kein-rechteck": "\n[Lager] Keine einfache Rechteckflaeche (4 Ecken, ohne Fase/Rundung) - kein Gang eingefuegt.",
"lg-rechteck-zu-klein": "\n[Lager] Rechteck zu klein (Seite unter 1 mm) - kein Gang eingefuegt.",
"lg-gaenge-eingefuegt": "\n%1 Gang/Gaenge eingefuegt.",
"lg-schraffur-unbekannt": "\n[Lager] Belag %1 hat keinen Eintrag in belag_schraffur (lager.json) - Gaenge ohne Schraffur.",
"lg-schraffur-fehler": "\n[Lager] Schraffur %1 fuer %2 nicht moeglich (%3) - Gang ohne Schraffur.",
"lg-blockdef-ergaenzt": "\n[Lager] Blockdefinition %1 um %2 ergaenzt (Altbestand).",
"lg-titel-kopie": "Lager: Geschoss kopieren",
"lg-feld-quelle": "\nQuellgeschoss (Nr.)",
"lg-feld-anzahl": "\nAnzahl neuer Geschosse",
"lg-feld-abstand": "\nGeschosshoehe je Kopie (mm)",
"lg-feld-versatz_x": "\nVersatz X je Kopie (mm, 0 = deckungsgleich)",
"lg-feld-versatz_y": "\nVersatz Y je Kopie (mm, 0 = deckungsgleich)",
"lg-kopie-abstand-ungueltig": "\n[Lager] Geschosshoehe je Kopie muss groesser 0 sein - nichts kopiert.",
"lg-kopie-hoehe-belegt": "\n[Lager] Auf Belagshoehe %1 mm liegt bereits ein Geschoss - Kopie wird trotzdem angelegt.",
"lg-kopie-racks-mehrdeutig": "\n[Lager] %1 goh_rack ohne eindeutiges Geschoss (Konturen uebereinander, kein Layer _G<nr>) - nicht kopiert.",
"lg-kopie-racks-umgehaengt": "\n%1 goh_rack auf den Regal-Layer von Geschoss %2 gelegt (Zuordnung bei deckungsgleichen Geschossen).",
"lg-kopie-fertig": "\nGeschoss %1 kopiert -> Geschoss %2 auf %3 mm: %4 Regalreihe(n), %5 Gang-/Quergangflaeche(n), %6 goh_rack.",
"lg-kopie-hinweis-aktiv": "\nLetzte Kopie ist aktives Geschoss. Anzeige umschalten mit LG_GESCHOSS_AKTIV.",
"lg-regale-keine": "\n[Lager] Keine Bloecke %1 im Modellbereich gefunden.",
"lg-regale-kopf": "\nRegale (goh_rack) je Geschoss: Anzahl, Laenge, Laenge x Ebenen",
"lg-regale-zeile": "\n %1: %2 Regal(e), %3 m, %4 m",
"lg-regale-geschoss": "Geschoss %1",
"lg-regale-ohne-geschoss": "ohne Geschoss",
"lg-regale-summe": "Gesamt",
"lg-regale-ohne-laenge": "\n[Lager] %1 Regal(e) ohne lesbare Laenge - mit 0 gezaehlt.",
"lg-titel-geschoss": "Lager: Geschoss anlegen",
"lg-titel-bereich": "Lager: Lagerbereich anlegen",
"lg-titel-reihe": "Lager: Regalreihen einfuegen",
"lg-titel-edit": "Lager: bearbeiten",
"lg-titel-hand-yaml": "Hand-YAML fuer den Abgleich (leer = keiner)",
"lg-prompt-kontur-geschoss": "\nBelagskontur des Geschosses waehlen (geschlossene Polylinie) <Enter = zeichnen>: ",
"lg-prompt-kontur-bereich": "\nKontur des Lagerbereichs waehlen (geschlossene Polylinie) <Enter = zeichnen>: ",
"lg-kontur-zeichnen": "\nKontur als Polylinie zeichnen (Enter beendet, wird geschlossen).",
"lg-keine-kontur": "\nDas ist keine Polylinie mit mindestens 3 Punkten.",
"lg-kontur-boegen": "\nHinweis: Bogensegmente der Kontur werden als Gerade gerechnet.",
"lg-kein-geschoss": "\n[Lager] Noch kein Geschoss angelegt - zuerst LG_GESCHOSS.",
"lg-prompt-geschoss-nr": "\nGeschoss nicht eindeutig - Geschoss-Nummer",
"lg-prompt-geschoss-aktiv": "\nAktives Geschoss (0 = alle anzeigen)",
"lg-geschoss-unbekannt": "\n[Lager] Geschoss %1 gibt es nicht.",
"lg-geschoss-existiert": "\n[Lager] Geschoss %1 gibt es schon - andere Nummer waehlen.",
"lg-geschoss-angelegt": "\nGeschoss %1 angelegt (Belag %2 mm) und aktiv gesetzt.",
"lg-geschoss-aktiv": "\nAktives Geschoss: %1 - die Layer der uebrigen Geschosse sind gefroren.",
"lg-geschoss-alle": "\nAlle Geschosse sichtbar, kein aktives Geschoss.",
"lg-geaendert": "\nGeaendert.",
"lg-bereich-ohne-kontur": "\n[Lager] Die Kontur des Bereichs fehlt - Fuellung nicht moeglich.",
"lg-bereich-beibehalten": "\nBereich %2: %1 von Hand eingefuegte oder geaenderte Reihe(n)/Gaenge bleiben erhalten und werden ausgespart.",
"lg-bereich-gefuellt": "\nBereich %1: %2 Regalreihe(n), %3 Gang-/Quergangflaeche(n), Restbreite %4 mm.",
"lg-prompt-reihe-start": "\nStartpunkt der Regalreihe <Enter = Ende>: ",
"lg-prompt-reihe-ende": "\nEndpunkt oder Laenge (mm): ",
"lg-prompt-reihe-richtung": "\nRichtung: ",
"lg-reihen-eingefuegt": "\n%1 Regalreihe(n) eingefuegt.",
"lg-exp-keine-geschosse": "Keine Geschosse (LG_GESCHOSS) in der Zeichnung - levels bleiben leer.",
"lg-exp-geschoss-ohne-kontur": "Geschoss %1 hat keine Belagskontur mehr.",
"lg-exp-rack-ohne-geschoss": "goh_rack bei X=%1 Y=%2 keinem Geschoss eindeutig zuzuordnen.",
"lg-exp-rack-ohne-laenge": "goh_rack %1 ohne lesbare Laenge.",
"lg-exp-datei-fehler": "\n[Lager] Datei nicht schreibbar: %1",
"lg-exp-raw": "\n[Lager] Rohdaten: %1",
"lg-exp-yaml": "\n[Lager] Overlay-YAML: %1\n[Lager] Nachweis: %2",
"lg-exp-ohne-python": "\n[Lager] Python-Aufruf nicht moeglich (export.lsp/DXFM_LIB fehlt) - YAML von Hand erzeugen: python lib/lager_yaml_export.py <raw.json> <out.yaml>",
"lg-exp-python-fehler": "\n[Lager] lager_yaml_export.py endete mit Code %1 - siehe %2",
"lg-hand-yaml": "\nHand-YAML fuer den Abgleich: %1",
"lg-regel-profil-fehlt": "\n[Lager] Regelprofil %1 nicht gefunden (%2).",
"lg-regel-profil-ungepflegt": "\n[Lager] WARNUNG: Regelprofil %1 ist nicht gepflegt - es gelten die geerbten Werte.",
"lg-regel-unbekannt": "\n[Lager] Regel %1 nicht im Profil.",
"lg-regel-liste-kopf": "\nRegelprofil %1: %2 Regeln (Kontext: erhoehte Brandgefaehrdung ohne Loeschanlage)"
}
}
+99 -1
View File
@@ -1121,6 +1121,104 @@
"kreisel-bp-kollision": "\n COLLISION %1: %2 <-> %3 [%4] at X=%5 Y=%6 Z=%7",
"kreisel-bp-marker": "\n%1 markers drawn (layer %2).",
"exp-kreisel-weichen": "\n[%1] Kreisel switch points: %2 contact(s), %3 collision(s) -> %4",
"exp-kreisel-kollision": "\n[%1] WARNING: %2 Kreisel collision(s) - command KREISEL_WEICHEN shows them."
"exp-kreisel-kollision": "\n[%1] WARNING: %2 Kreisel collision(s) - command KREISEL_WEICHEN shows them.",
"lg-daten-fehlt": "\n[Storage] Data file not found: %1 - built-in defaults apply.",
"lg-dialog-fehlt": "\n[Storage] Dialog not loadable (%1) - input via command line.",
"lg-einfuegen-fehler": "\n[Storage] Block %1 could not be inserted: %2",
"lg-feld-ungueltig": "Invalid value: %1",
"lg-wert-ungueltig": "\nInvalid value - please enter again.",
"lg-wahl-ungueltig": "\nPlease enter one of the listed values.",
"lg-feld-nr": "\nLevel number",
"lg-feld-bezeichnung": "\nName",
"lg-feld-hoehe": "\nFloor elevation (top, mm)",
"lg-feld-konstr": "\nFloor construction depth (mm)",
"lg-feld-lichte": "\nClear height (mm, empty = calculated)",
"lg-feld-belag": "\nFloor type",
"lg-feld-personen": "\nPersons on the level",
"lg-feld-brand": "\nFire risk",
"lg-feld-gang": "\nAisle width (mm)",
"lg-feld-tiefe": "\nRack depth (mm)",
"lg-feld-reihen": "\nRows per aisle",
"lg-feld-schienen": "\nRails per aisle",
"lg-feld-q_abstand": "\nCross aisle spacing (mm, 0 = none)",
"lg-feld-q_breite": "\nCross aisle width (mm)",
"lg-feld-richtung": "\nRow direction (degrees)",
"lg-feld-ebenen": "\nHanging levels rail height/goods length;... (mm)",
"lg-feld-laenge": "\nLength (mm)",
"lg-feld-rand_n": "\nPerimeter aisle north (mm, 0 = none)",
"lg-feld-rand_o": "\nPerimeter aisle east (mm, 0 = none)",
"lg-feld-rand_s": "\nPerimeter aisle south (mm, 0 = none)",
"lg-feld-rand_w": "\nPerimeter aisle west (mm, 0 = none)",
"lg-feld-breite": "\nAisle width (mm)",
"lg-feld-art": "\nAisle type",
"lg-titel-gang": "Storage: insert aisles",
"lg-prompt-gang-start": "\nStart point of the aisle centre line or [%1] <Enter = finish>: ",
"lg-key-rechteck": "Rectangle",
"lg-rechteck-hinweis": "\nDraw the aisle area with RECTANG (all options such as dimensions/rotation available), Enter = finish.",
"lg-rechteck-kein-rechteck": "\n[Storage] Not a plain rectangle (4 corners, no chamfer/fillet) - no aisle inserted.",
"lg-rechteck-zu-klein": "\n[Storage] Rectangle too small (side below 1 mm) - no aisle inserted.",
"lg-gaenge-eingefuegt": "\n%1 aisle(s) inserted.",
"lg-schraffur-unbekannt": "\n[Storage] Floor type %1 has no entry in belag_schraffur (lager.json) - aisles without hatch.",
"lg-schraffur-fehler": "\n[Storage] Hatch %1 for %2 not possible (%3) - aisle without hatch.",
"lg-blockdef-ergaenzt": "\n[Storage] Block definition %1 extended by %2 (existing drawing).",
"lg-titel-kopie": "Storage: copy level",
"lg-feld-quelle": "\nSource level (no.)",
"lg-feld-anzahl": "\nNumber of new levels",
"lg-feld-abstand": "\nLevel height per copy (mm)",
"lg-feld-versatz_x": "\nOffset X per copy (mm, 0 = congruent)",
"lg-feld-versatz_y": "\nOffset Y per copy (mm, 0 = congruent)",
"lg-kopie-abstand-ungueltig": "\n[Storage] Level height per copy must be greater than 0 - nothing copied.",
"lg-kopie-hoehe-belegt": "\n[Storage] A level already exists at floor height %1 mm - copy is created anyway.",
"lg-kopie-racks-mehrdeutig": "\n[Storage] %1 goh_rack without a unique level (stacked contours, no layer _G<no>) - not copied.",
"lg-kopie-racks-umgehaengt": "\n%1 goh_rack moved to the rack layer of level %2 (assignment for congruent levels).",
"lg-kopie-fertig": "\nLevel %1 copied -> level %2 at %3 mm: %4 rack row(s), %5 aisle/cross aisle area(s), %6 goh_rack.",
"lg-kopie-hinweis-aktiv": "\nLast copy is the active level. Switch the display with LG_GESCHOSS_AKTIV.",
"lg-regale-keine": "\n[Storage] No %1 blocks found in model space.",
"lg-regale-kopf": "\nRacks (goh_rack) per level: count, length, length x levels",
"lg-regale-zeile": "\n %1: %2 rack(s), %3 m, %4 m",
"lg-regale-geschoss": "Level %1",
"lg-regale-ohne-geschoss": "no level",
"lg-regale-summe": "Total",
"lg-regale-ohne-laenge": "\n[Storage] %1 rack(s) without readable length - counted as 0.",
"lg-titel-geschoss": "Storage: create level",
"lg-titel-bereich": "Storage: create storage area",
"lg-titel-reihe": "Storage: insert rack rows",
"lg-titel-edit": "Storage: edit",
"lg-titel-hand-yaml": "Manual YAML for comparison (empty = none)",
"lg-prompt-kontur-geschoss": "\nSelect floor contour of the level (closed polyline) <Enter = draw>: ",
"lg-prompt-kontur-bereich": "\nSelect contour of the storage area (closed polyline) <Enter = draw>: ",
"lg-kontur-zeichnen": "\nDraw the contour as polyline (Enter finishes, it will be closed).",
"lg-keine-kontur": "\nThis is not a polyline with at least 3 points.",
"lg-kontur-boegen": "\nNote: arc segments of the contour are treated as straight lines.",
"lg-kein-geschoss": "\n[Storage] No level defined yet - run LG_GESCHOSS first.",
"lg-prompt-geschoss-nr": "\nLevel not unique - level number",
"lg-prompt-geschoss-aktiv": "\nActive level (0 = show all)",
"lg-geschoss-unbekannt": "\n[Storage] Level %1 does not exist.",
"lg-geschoss-existiert": "\n[Storage] Level %1 already exists - choose another number.",
"lg-geschoss-angelegt": "\nLevel %1 created (floor %2 mm) and set active.",
"lg-geschoss-aktiv": "\nActive level: %1 - layers of the other levels are frozen.",
"lg-geschoss-alle": "\nAll levels visible, no active level.",
"lg-geaendert": "\nChanged.",
"lg-bereich-ohne-kontur": "\n[Storage] The contour of the area is missing - cannot fill.",
"lg-bereich-beibehalten": "\nArea %2: %1 manually inserted or changed row(s)/aisle(s) are kept and left out.",
"lg-bereich-gefuellt": "\nArea %1: %2 rack row(s), %3 aisle/cross aisle area(s), remaining width %4 mm.",
"lg-prompt-reihe-start": "\nStart point of the rack row <Enter = finish>: ",
"lg-prompt-reihe-ende": "\nEnd point or length (mm): ",
"lg-prompt-reihe-richtung": "\nDirection: ",
"lg-reihen-eingefuegt": "\n%1 rack row(s) inserted.",
"lg-exp-keine-geschosse": "No levels (LG_GESCHOSS) in the drawing - levels stay empty.",
"lg-exp-geschoss-ohne-kontur": "Level %1 has no floor contour any more.",
"lg-exp-rack-ohne-geschoss": "goh_rack at X=%1 Y=%2 cannot be assigned to a level.",
"lg-exp-rack-ohne-laenge": "goh_rack %1 without readable length.",
"lg-exp-datei-fehler": "\n[Storage] File not writable: %1",
"lg-exp-raw": "\n[Storage] Raw data: %1",
"lg-exp-yaml": "\n[Storage] Overlay YAML: %1\n[Storage] Report: %2",
"lg-exp-ohne-python": "\n[Storage] Cannot call Python (export.lsp/DXFM_LIB missing) - create the YAML manually: python lib/lager_yaml_export.py <raw.json> <out.yaml>",
"lg-exp-python-fehler": "\n[Storage] lager_yaml_export.py ended with code %1 - see %2",
"lg-hand-yaml": "\nManual YAML for comparison: %1",
"lg-regel-profil-fehlt": "\n[Storage] Rule profile %1 not found (%2).",
"lg-regel-profil-ungepflegt": "\n[Storage] WARNING: rule profile %1 is not maintained - inherited values apply.",
"lg-regel-unbekannt": "\n[Storage] Rule %1 not in profile.",
"lg-regel-liste-kopf": "\nRule profile %1: %2 rules (context: increased fire risk without extinguishing system)"
}
}