From 1250864849283902a4438f47af686e1b6369f91a Mon Sep 17 00:00:00 2001 From: Samer Ayadi Date: Mon, 5 Oct 2026 15:39:11 +0200 Subject: [PATCH] [ADD] Dematic/Arvato: Nachbau-Vorlage tests/testdata/dematic_arvato.json (Abschnitt Flowpuffer/Kreisel) + Treiber TEST_DEMATIC_ARVATO (Menue Tests, in alltests.json vorerst disabled); [FIX] dxf_scan_components.py: liest jetzt auch ASCII-DXF, Kreisel-Paarung global nach Abstand und nur auf gemeinsamer Achse (vorher klaute ein AN8 die SP8 des Nachbarn), Kreisel-Position aus der Radmitte statt dem Einfuegepunkt (AN8/SP8 Pinband haben das Rad ~15 m daneben), Kreisel als insert mit Mittenabstand statt connect (war an beiden Enden einen Radius zu kurz), AN8/SP8 Pinband erkannt, Projektkennung in den IDs per --projekt statt fest HundM05; [FIX] hundm05:bau-sensor brach bei Eintraegen ohne id mit bad argument type ab Co-Authored-By: Claude Opus 5.5 --- lib/dxf_scan_components.py | 180 +++- menu/SSG_LIB.cui | 12 + menu/SSG_LIB.mnu | 1 + tests/alltests.json | 1 + tests/test_dematic_arvato.lsp | 138 +++ tests/test_hundm05.lsp | 4 + tests/testdata/dematic_arvato.json | 1381 ++++++++++++++++++++++++++++ 7 files changed, 1688 insertions(+), 29 deletions(-) create mode 100644 tests/test_dematic_arvato.lsp create mode 100644 tests/testdata/dematic_arvato.json diff --git a/lib/dxf_scan_components.py b/lib/dxf_scan_components.py index 2cb37f2..043bd20 100644 --- a/lib/dxf_scan_components.py +++ b/lib/dxf_scan_components.py @@ -44,6 +44,7 @@ import struct import sys from ezdxf.lldxf.types import BINARY_DATA, INT16, INT32, INT64, DOUBLE, BYTES +from ezdxf.lldxf.types import cast_tag_value from ezdxf.math import Matrix44, OCS sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) @@ -62,6 +63,10 @@ MAX_PAAR_ABSTAND = 60000.0 # 10 mm deckt Rundungs- und Zeichenungenauigkeiten der Fremdzeichnung ab. GERADE_MAX_DELTA_H = 10.0 +# Projektkennung in den erzeugten IDs (Kreisel__01 ...); main() +# setzt sie aus --projekt bzw. dem Namen der DXF-Datei. +PROJEKT = "HundM05" + # Toleranz fuer die Dedup-Rundung (Nachkommastellen). RUND = 2 @@ -190,6 +195,48 @@ def iter_binary_tags(mm): yield code, value +def iter_ascii_tags(mm): + """Streamt (code, value)-Tags aus einem ASCII-DXF. + + Gegenstueck zu iter_binary_tags fuer Zeichnungen, die als Text-DXF + gespeichert wurden (z.B. Dematic_arvato.dxf). Die Werte werden ueber die + ezdxf-Typtabelle in float/int gewandelt, damit lese_inserts dieselben + Typen sieht wie beim binaeren Lesen. + """ + i = 0 + n = len(mm) + while i < n: + end = mm.find(b"\n", i) + if end < 0: + break + code_raw = mm[i:end].strip() + i = end + 1 + end = mm.find(b"\n", i) + if end < 0: + end = n + value_raw = mm[i:end].rstrip(b"\r") + i = end + 1 + if not code_raw: + continue + code = int(code_raw) + value = decode_str(value_raw) + if code == 0: + value = value.strip() + else: + try: + value = cast_tag_value(code, value) + except ValueError: + pass + yield code, value + + +def iter_tags(mm): + """Binaer- oder ASCII-DXF anhand der Kopfzeile erkennen.""" + if mm[:22] == b"AutoCAD Binary DXF\r\n\x1a\x00": + return iter_binary_tags(mm) + return iter_ascii_tags(mm) + + # --------------------------------------------------------------------------- # Familien-Erkennung (Blockname -> Bauteilfamilie) # --------------------------------------------------------------------------- @@ -197,8 +244,8 @@ def iter_binary_tags(mm): # mit Wildcards - die Blocknamen der Fremdzeichnungen enthalten Umlaute und # Sonderzeichen (z.B. "3D_Schraegfoerderer_Antrieb", "TEF_Bogen_90Grad_..."). FAMILIEN = [ - ("kreisel_an", ["AN8", "AN8_*"]), - ("kreisel_sp", ["SP8", "SP8_*"]), + ("kreisel_an", ["AN8", "AN8_*", "AN8 Pinband*"]), + ("kreisel_sp", ["SP8", "SP8_*", "SP8 Pinband*"]), ("foerderer_antrieb", ["3D_TEF_Antrieb*", "3D_FF_Antrieb*", "3D_Schr*rderer_Antrieb*", "Antrieb FF"]), ("foerderer_umlenk", ["3D_TEF_Umlenk*", "3D_FF_Umlenk*", @@ -443,7 +490,7 @@ def lese_inserts(dxf_path): fh.close() raise try: - for code, value in iter_binary_tags(mm): + for code, value in iter_tags(mm): if code == 0: # Ein ATTRIB endet immer am naechsten 0-Tag. Erst hier steht # sicher fest, dass Tag UND Wert gelesen sind - in einem ATTRIB @@ -496,6 +543,19 @@ def lese_inserts(dxf_path): block_merken(aktueller_block)["kinder"].add(value) elif aktuell == "ATTRIB": attrib_tag = value + elif aktuell == "CIRCLE" and aktueller_block and code in (10, 20, 30): + # Mittelpunkt des ERSTEN Kreises der Blockdefinition merken - + # bei AN8/SP8 ist das das Rad. Die Pinband-Varianten in + # Dematic_arvato.dxf haben ihr Rad ~15 m neben dem + # Einfuegepunkt; ohne diesen Wert laege der Kreisel dort. + # Ein zweiter Kreis beginnt mit Code 10, waehrend "kreis" schon + # existiert - ab da ist der erste fertig (Code 30 ist optional). + info = block_merken(aktueller_block) + if code == 10 and "kreis" in info: + info["kreis_fertig"] = True + if not info.get("kreis_fertig"): + kreis = info.setdefault("kreis", [0.0, 0.0, 0.0]) + kreis[{10: 0, 20: 1, 30: 2}[code]] = value elif aktuell == "BLOCK" and aktueller_block and code in (10, 20, 30): block_base[aktueller_block][{10: 0, 20: 1, 30: 2}[code]] = value elif aktuell == "INSERT" and rec is not None: @@ -630,6 +690,13 @@ def sammle_vorkommen(ms_inserts, block_inserts, block_base, max_tiefe=12, xachse = mat.transform((1.0, 0.0, 0.0)) - ursprung rot = math.degrees(math.atan2(xachse.y, xachse.x)) % 360.0 fam = familie_von(rec["name"]) + # Kreisel-Stationen: Position = Radmitte, nicht Einfuegepunkt + # (siehe "kreis" in lese_inserts). Die Rotation oben bleibt die + # des Inserts. + kreis = ((block_info or {}).get(rec["name"], {}).get("kreis") + if fam in ("kreisel_an", "kreisel_sp") else None) + if kreis: + ursprung = mat.transform(tuple(kreis)) if fam: treffer.append({ "familie": fam, @@ -866,6 +933,48 @@ def zwillinge_zusammenfuehren(treffer): # Paarbildung und Schema-Abbildung # --------------------------------------------------------------------------- +# Querversatz (mm), bis zu dem AN8 und SP8 noch auf derselben Kreisel-Achse +# liegen. Beide Stationen sitzen auf der Mittellinie des Kreisels; in +# Dematic_arvato.dxf liegen echte Paare auf 0,2 mm genau auf einer Achse. +KREISEL_MAX_QUER = 100.0 + + +def kreisel_paare_bilden(an_liste, sp_liste): + """AN8 und SP8 zu Kreiseln paaren. + + Global nach Abstand (kuerzestes Paar zuerst) statt AN8 fuer AN8 in + X-Reihenfolge: dort griff sich ein frueh sortierter AN8 die naechste noch + freie SP8 eines Nachbar-Kreisels, und alle folgenden Paare rutschten mit + (Dematic_arvato: ein 33,5-m-Kreisel wurde mit der SP8 eines 3,6-m-Kreisels + 19 m daneben gepaart). Zusaetzlich muessen beide auf einer gemeinsamen + Achse liegen (Querversatz <= KREISEL_MAX_QUER). + + Rueckgabe: (paare [(an, sp, abstand)] nach AN-Position sortiert, + AN8 ohne Partner, SP8 ohne Partner) + """ + kandidaten = [] + for ia, an in enumerate(an_liste): + for isp, sp in enumerate(sp_liste): + dx = abs(sp["x"] - an["x"]) + dy = abs(sp["y"] - an["y"]) + if min(dx, dy) > KREISEL_MAX_QUER: + continue + kandidaten.append((math.hypot(dx, dy), ia, isp)) + kandidaten.sort() + an_frei = set(range(len(an_liste))) + sp_frei = set(range(len(sp_liste))) + paare = [] + for dist, ia, isp in kandidaten: + if ia in an_frei and isp in sp_frei: + an_frei.discard(ia) + sp_frei.discard(isp) + paare.append((an_liste[ia], sp_liste[isp], dist)) + paare.sort(key=lambda p: (p[0]["x"], p[0]["y"])) + return (paare, + [an_liste[i] for i in sorted(an_frei)], + [sp_liste[i] for i in sorted(sp_frei)]) + + def paare_bilden(antriebe, umlenkungen): """Gegenseitig naechste Nachbarn paaren. @@ -978,7 +1087,7 @@ def foerderer_eintrag(a, u, dist_xy, nummer, gf_winkel_min): # Die echte Hoehe liefert der 3D-Zwilling (siehe Zusammenfuehrung). if a.get("darstellung") == "2D": return { - "test_id": "GERADE_HundM05_%02d" % nummer, + "test_id": "GERADE_%s_%02d" % (PROJEKT, nummer), "typ": "gerade", "darstellung": "2D", "laenge": round(dist_xy, RUND), @@ -993,7 +1102,7 @@ def foerderer_eintrag(a, u, dist_xy, nummer, gf_winkel_min): if abs(dz) < GERADE_MAX_DELTA_H: return { - "test_id": "GERADE_HundM05_%02d" % nummer, + "test_id": "GERADE_%s_%02d" % (PROJEKT, nummer), "typ": "gerade", "darstellung": a.get("darstellung", "?"), "laenge": round(dist_xy, RUND), @@ -1008,7 +1117,7 @@ def foerderer_eintrag(a, u, dist_xy, nummer, gf_winkel_min): if dz < 0 and neigung >= gf_winkel_min: return { - "test_id": "GF_HundM05_%02d" % nummer, + "test_id": "GF_%s_%02d" % (PROJEKT, nummer), "modus": 1, "darstellung": a.get("darstellung", "?"), "deltaL_mm": round(dist_xy, RUND), @@ -1025,7 +1134,7 @@ def foerderer_eintrag(a, u, dist_xy, nummer, gf_winkel_min): } return { - "test_id": "VF_HundM05_%02d" % nummer, + "test_id": "VF_%s_%02d" % (PROJEKT, nummer), "typ": "standard", "darstellung": a.get("darstellung", "?"), "richtung": "Auf" if dz > 0 else "Ab", @@ -1116,16 +1225,12 @@ def baue_eintraege(treffer, defaults, boegen, weichen, # --- Kreisel: AN8 (Antriebsstation) + SP8 (Spannstation) -------------- durchmesser = defaults.get("kreisel", {}).get("durchmesser", 800.0) - an_liste = sorted(nach_familie.get("kreisel_an", []), key=lambda t: (t["x"], t["y"])) - sp_liste = list(nach_familie.get("kreisel_sp", [])) - for i, an in enumerate(an_liste, start=1): - if not sp_liste: - hinweise.append("AN8 bei (%.2f, %.2f) ohne SP8-Partner" % (an["x"], an["y"])) - eintraege.append(sensor_eintrag(an, bekannte_bloecke, hinweise, treffer)) - continue - sp = min(sp_liste, key=lambda s: math.hypot(s["x"] - an["x"], s["y"] - an["y"])) - sp_liste.remove(sp) - dist = math.hypot(sp["x"] - an["x"], sp["y"] - an["y"]) + kreisel_paare, an_rest, sp_liste = kreisel_paare_bilden( + nach_familie.get("kreisel_an", []), nach_familie.get("kreisel_sp", [])) + for an in an_rest: + hinweise.append("AN8 bei (%.2f, %.2f) ohne SP8-Partner" % (an["x"], an["y"])) + eintraege.append(sensor_eintrag(an, bekannte_bloecke, hinweise, treffer)) + for i, (an, sp, dist) in enumerate(kreisel_paare, start=1): rotation = math.degrees(math.atan2(sp["y"] - an["y"], sp["x"] - an["x"])) % 360.0 # AN8/SP8 sind flache 2D-Symbole auf Z=0 - die Einbauhoehe steht nicht # im DXF. Sie wird aus den 3D-Modellen in der Umgebung abgeleitet @@ -1144,19 +1249,31 @@ def baue_eintraege(treffer, defaults, boegen, weichen, hoehe_hinweis = (" ACHTUNG hoehe=%.1f ist NICHT belegt: " "AN8/SP8 sind flache 2D-Symbole auf Z=0 und " "%s." % (hoehe, grund)) + # an/sp sind Radmitten (siehe "kreis" in lese_inserts). draw-module + # (KreiselInsert.lsp) legt AN8 bei (radius, 0) und SP8 bei + # (radius + abstand, 0) in den Block: abstand ist also der + # Mittenabstand, und der Einfuegepunkt liegt einen Radius VOR der + # AN8-Mitte. Die fruehere "connect"-Ausgabe uebergab die Radmitten an + # kreisel-connect-script, das Aussenkanten erwartet - der Kreisel + # wurde dadurch an beiden Enden um einen Radius zu kurz. + radius = durchmesser / 2.0 + richtung = math.radians(rotation) eintraege.append({ - "id": "Kreisel_HundM05_%02d" % i, - "function": "connect", - "start_x": an["x"], "start_y": an["y"], "start_z": an["z"], - "end_x": sp["x"], "end_y": sp["y"], "end_z": sp["z"], + "id": "Kreisel_%s_%02d" % (PROJEKT, i), + "function": "insert", + "x": round(an["x"] - radius * math.cos(richtung), RUND) + 0.0, + "y": round(an["y"] - radius * math.sin(richtung), RUND) + 0.0, + "z": hoehe, + "abstand": round(dist, RUND), + "rotation": round(rotation, RUND) + 0.0, "typ": "STANDARD", "darstellung": an.get("darstellung", "?"), - "hoehe": hoehe, - "comment": ("aus DXF: AN8 (Layer %s) -> SP8 (Layer %s), Abstand " - "%.2f; daraus folgt produktionsseitig abstand = %.2f - " - "%.1f = %.2f und rotation = %.2f Grad." - % (an["layer"], sp["layer"], dist, dist, durchmesser, - dist - durchmesser, rotation)) + hoehe_hinweis, + "comment": ("aus DXF: Radmitte %s (Layer %s) (%.2f, %.2f) -> " + "%s (Layer %s) (%.2f, %.2f), Mittenabstand %.2f, " + "rotation %.2f Grad; x/y = AN8-Mitte minus Radius." + % (an["block"], an["layer"], an["x"], an["y"], + sp["block"], sp["layer"], sp["x"], sp["y"], dist, + rotation)) + hoehe_hinweis, }) for sp in sp_liste: hinweise.append("SP8 bei (%.2f, %.2f) ohne AN8-Partner" % (sp["x"], sp["y"])) @@ -1188,7 +1305,7 @@ def baue_eintraege(treffer, defaults, boegen, weichen, hinweise.append("Omniflo %s ohne Sivasnr: '%s' (%s)" % (typ, t["block"], grund)) eintraege.append({ - "id": sivasnr or ("%s_HundM05_%02d" % (typ.upper(), i)), + "id": sivasnr or ("%s_%s_%02d" % (typ.upper(), PROJEKT, i)), "type": typ, "sivasnr": sivasnr, "x": t["x"], "y": t["y"], "z": t["z"], @@ -1346,7 +1463,7 @@ def main(): description="Erkennt ILS-/Omniflo-Komponenten in einem fremden DXF " "und schreibt sie im JSON-Schema aus " "tests/testdata/object_data.md.") - parser.add_argument("dxf", help="Quellzeichnung (binaeres DXF)") + parser.add_argument("dxf", help="Quellzeichnung (binaeres oder ASCII-DXF)") parser.add_argument("data_dir", help="Datenverzeichnis mit json/") parser.add_argument("output", help="Ziel-JSON") parser.add_argument("--fenster", nargs=4, type=float, @@ -1354,8 +1471,13 @@ def main(): help="Nur Bauteile in diesem XY-Fenster (mm) " "ausgeben - fuer den Nachbau eines einzelnen " "Anlagenabschnitts statt der ganzen Zeichnung") + parser.add_argument("--projekt", + help="Projektkennung in den erzeugten IDs " + "(Default: Name der DXF-Datei ohne Endung)") args = parser.parse_args() dxf_path, data_dir, output_path = args.dxf, args.data_dir, args.output + global PROJEKT + PROJEKT = args.projekt or os.path.splitext(os.path.basename(dxf_path))[0] fenster = None if args.fenster: x0, y0, x1, y1 = args.fenster diff --git a/menu/SSG_LIB.cui b/menu/SSG_LIB.cui index 0cd7164..369b401 100644 --- a/menu/SSG_LIB.cui +++ b/menu/SSG_LIB.cui @@ -734,6 +734,12 @@ ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_hundm05.lsp")) (c:TEST_HUNDM05) + + + Dematic/Arvato Flowpuffer (Vorlage) + ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_dematic_arvato.lsp")) (c:TEST_DEMATIC_ARVATO) + + KS 2D/3D pruefen (CSV) @@ -1627,6 +1633,12 @@ + + Dematic/Arvato Flowpuffer (Vorlage) + + + + KS 2D/3D pruefen (CSV) diff --git a/menu/SSG_LIB.mnu b/menu/SSG_LIB.mnu index 578eece..703b508 100644 --- a/menu/SSG_LIB.mnu +++ b/menu/SSG_LIB.mnu @@ -154,6 +154,7 @@ [Gefaellestrecke]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_gefaellestrecke.lsp")) (c:TEST_GEFAELLESTRECKE) [Mubea Gesamtmodell]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_mubea.lsp")) (c:TEST_MUBEA) [HundM05 Kreisel-Abschnitt]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_hundm05.lsp")) (c:TEST_HUNDM05) +[Dematic/Arvato Flowpuffer (Vorlage)]^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_dematic_arvato.lsp")) (c:TEST_DEMATIC_ARVATO) [<-KS 2D/3D pruefen (CSV)]^C^C(load (strcat (getenv "DXFMAKRO") "/Lisp/ks_pruefung.lsp")) KS_PRUEFEN ***DOUBLECLICK diff --git a/tests/alltests.json b/tests/alltests.json index dc98cb9..f427384 100644 --- a/tests/alltests.json +++ b/tests/alltests.json @@ -10,5 +10,6 @@ { "name": "gefaellestrecke", "save": "dwg", "module": "Gefaellestrecke" }, { "name": "mubea", "save": "dxf", "module": "KreiselInsert" }, { "name": "hundm05", "save": "dxf", "module": "VarioFoerderer" }, + { "name": "dematic_arvato", "save": "dxf", "module": "VarioFoerderer", "disabled": true }, { "name": "hm_recformat", "save": "dxf", "module": "VarioFoerderer", "disabled": true } ] diff --git a/tests/test_dematic_arvato.lsp b/tests/test_dematic_arvato.lsp new file mode 100644 index 0000000..7823b7a --- /dev/null +++ b/tests/test_dematic_arvato.lsp @@ -0,0 +1,138 @@ +;; ============================================================ +;; test_dematic_arvato.lsp - Nachbau des Abschnitts Flowpuffer/Kreisel der +;; Anlage Dematic/Arvato aus der Scanner-Vorlage. +;; +;; Datenquelle: tests/testdata/dematic_arvato.json, erzeugt mit +;; python lib/dxf_scan_components.py \ +;; C:/develop/sps_skel/data/Dematic_arvato.dxf data \ +;; tests/testdata/dematic_arvato.json --projekt Arvato \ +;; --fenster -3000 159000 49000 193000 +;; +;; Die Datei ist eine VORLAGE fuer den Nachbau, kein fertiger Testfall: +;; Hoehen fehlen (flaches 2D-Schema, alles auf Z=0), Seiten/Winkel einiger +;; Bloecke sind geraten (siehe "comment" je Eintrag). +;; +;; Eintragsarten (Schema von dxf_scan_components.py): +;; "function": "insert" ohne "block" -> Kreisel (hundm05:bau-kreisel -> +;; kreisel-insert-script; x/y = Einfuegepunkt +;; einen Radius vor der AN8-Radmitte, abstand = +;; Mittenabstand AN8-SP8) +;; "function": "insert" + "block" -> Einzelblock (hundm05:bau-sensor, +;; Fallback Separator_SP bei unbekanntem Block) +;; "typ": "gerade" -> waagrechter Foerderer Antrieb->Umlenkung - +;; dafuer gibt es noch keinen Bau-Pfad, wird +;; gemeldet und uebersprungen +;; +;; Keine eigene Bau-Logik: hundm05:bau-kreisel/-sensor aus +;; tests/test_hundm05.lsp wird mitgeladen (die Datei definiert nur Funktionen). +;; +;; Aufruf in BricsCAD: +;; (load (strcat (getenv "DXFMAKRO") "/tests/test_dematic_arvato.lsp")) +;; TEST_DEMATIC_ARVATO +;; ============================================================ + +(if (not (boundp '*dematic-arvato-records*)) (setq *dematic-arvato-records* nil)) + +;; Module und die Bau-Funktionen aus test_hundm05.lsp beim LADEN dieser Datei +;; holen, nicht erst in c:TEST_DEMATIC_ARVATO: in BricsCAD werden per load +;; definierte Funktionen erst nach Rueckkehr zum Top-Level sichtbar (siehe +;; tests/test_unit.scr). +(ssg-ensure "KreiselInsert") +(ssg-ensure "VarioFoerderer") +(ssg-ensure "SSG_LIB_Commands") +(if (null (car (atoms-family 1 '("HUNDM05:BAU-SENSOR")))) + (load (strcat (getenv "DXFMAKRO") "/tests/test_hundm05.lsp"))) + +(defun dematic_arvato:datei () + (strcat (getenv "DXFMAKRO") "/tests/testdata/dematic_arvato.json")) + +;; Foerderer "gerade": noch kein Bau-Pfad - nur melden. +(defun dematic_arvato:gerade-melden (obj / tid rec) + (setq tid (ssg-val obj "test_id")) + (princ (strcat "\n [GERADE] " (if tid tid "?") + " uebersprungen - waagrechter Foerderer noch nicht unterstuetzt")) + (setq rec (vsp-rec-neu (if tid tid "(ohne id)"))) + (setq rec (vsp-set rec "kind" "gerade")) + (vsp-set (vsp-set rec "status" "uebersprungen") "fehler_text" + "kein Bau-Pfad fuer typ gerade")) + +(defun dematic_arvato:bau-eintrag (obj / kind res) + (cond + ((and (= (ssg-val obj "function") "insert") (ssg-val obj "block")) + (setq kind "sensor") + (setq res (vl-catch-all-apply 'hundm05:bau-sensor (list obj)))) + ((= (ssg-val obj "function") "insert") + (setq kind "kreisel") + (setq res (vl-catch-all-apply 'hundm05:bau-kreisel (list obj)))) + ((= (ssg-val obj "typ") "gerade") + (setq kind "gerade") + (setq res (dematic_arvato:gerade-melden obj))) + (T + (setq kind "unbekannt") + (princ "\n WARNUNG: unbekannter Eintrag uebersprungen") + (setq res (vsp-set (vsp-rec-neu "(unbekannt)") "status" "uebersprungen")))) + (if (vl-catch-all-error-p res) + (progn + (princ (strcat "\n [" (strcase kind) "] Ausnahme: " + (vl-catch-all-error-message res))) + (vsp-set (vsp-set (vsp-set (vsp-rec-neu (cond ((ssg-val obj "id")) + ((ssg-val obj "block")) + ("?"))) + "kind" kind) "status" "abbruch") + "fehler_text" (vl-catch-all-error-message res))) + res)) + +(defun c:TEST_DEMATIC_ARVATO ( / datei daten out zaehler st) + (setq datei (dematic_arvato:datei)) + (princ "\n\n================================================================") + (princ "\n TEST_DEMATIC_ARVATO - Abschnitt Flowpuffer/Kreisel (Vorlage)") + (princ (strcat "\n " datei)) + (princ "\n================================================================") + (cond + ((null (car (atoms-family 1 '("VSP-REC-NEU")))) + (princ "\n[TEST_DEMATIC_ARVATO] FEHLER: vf_spec.lsp nicht geladen" + " (VarioFoerderer laden).") + (setq *dematic-arvato-records* nil)) + ((null (findfile datei)) + (princ (strcat "\n[TEST_DEMATIC_ARVATO] FEHLER: " datei " nicht gefunden!")) + (setq *dematic-arvato-records* nil)) + (T + (setq daten (ssg-json-laden datei)) + (princ (strcat "\n " (itoa (length daten)) " Eintraege geladen")) + (ssg-start "TEST_DEMATIC_ARVATO" + '(("OSMODE") ("CECOLOR") ("ATTREQ") ("ATTDIA"))) + (setvar "OSMODE" 0) + (setvar "ATTREQ" 0) + (setvar "ATTDIA" 0) + (setq out '()) + (foreach obj daten + (setq out (cons (dematic_arvato:bau-eintrag obj) out))) + (ssg-end) + (setq *dematic-arvato-records* (reverse out)) + ;; Zusammenfassung je Status + (setq zaehler '()) + (foreach r *dematic-arvato-records* + (setq st (cond ((ssg-val r "status")) ("?"))) + (if (assoc st zaehler) + (setq zaehler (subst (cons st (1+ (cdr (assoc st zaehler)))) + (assoc st zaehler) zaehler)) + (setq zaehler (cons (cons st 1) zaehler)))) + (princ "\n================================================================") + (foreach z (reverse zaehler) + (princ (strcat "\n " (car z) ": " (itoa (cdr z))))) + (princ "\n================================================================") + (command "_.ZOOM" "_E"))) + (princ)) + +;; Ergebnis-Export (Konvention :export-results fuer test_run_all.lsp) +(defun dematic_arvato:export-results (out-dir / pfad) + (if (null *dematic-arvato-records*) + (princ "\n Keine Dematic/Arvato-Ergebnisse vorhanden.") + (progn + (vl-mkdir out-dir) + (setq pfad (strcat out-dir "/dematic_arvato_results.json")) + (vsp-results-schreiben *dematic-arvato-records* pfad))) + (princ)) + +(princ "\nTEST_DEMATIC_ARVATO geladen. Aufruf: TEST_DEMATIC_ARVATO") +(princ) diff --git a/tests/test_hundm05.lsp b/tests/test_hundm05.lsp index e579570..4ca9f40 100644 --- a/tests/test_hundm05.lsp +++ b/tests/test_hundm05.lsp @@ -138,6 +138,10 @@ (defun hundm05:bau-sensor (obj / id blockname x y z rotation pt eff n vorher ent ed attribs rec) (setq id (ssg-val obj "id")) (setq blockname (ssg-val obj "block")) + ;; Eintraege aus lib/dxf_scan_components.py haben kein "id" - die + ;; Meldungen unten setzen id per strcat zusammen und brachen dann mit + ;; "bad argument type " ab. + (if (null id) (setq id (cond (blockname) ("(ohne id)")))) (setq x (ssg-val obj "x") y (ssg-val obj "y") z (ssg-val obj "z") diff --git a/tests/testdata/dematic_arvato.json b/tests/testdata/dematic_arvato.json new file mode 100644 index 0000000..b9c122c --- /dev/null +++ b/tests/testdata/dematic_arvato.json @@ -0,0 +1,1381 @@ +[ + { + "id": "Kreisel_Arvato_03", + "function": "insert", + "x": 18737.94, + "y": 165252.93, + "z": 0.0, + "abstand": 3619.15, + "rotation": 90.0, + "typ": "STANDARD", + "darstellung": "2D", + "comment": "aus DXF: Radmitte AN8 (Layer 1ANTR-800) (18737.94, 165652.93) -> SP8 (Layer 1SP-800) (18737.94, 169272.08), Mittenabstand 3619.15, rotation 90.00 Grad; x/y = AN8-Mitte minus Radius. ACHTUNG hoehe=0.0 ist NICHT belegt: AN8/SP8 sind flache 2D-Symbole auf Z=0 und nur 0 3D-Nachbarn in 3000 mm - zu wenige fuer eine belegbare Hoehe." + }, + { + "id": "Kreisel_Arvato_04", + "function": "insert", + "x": 35394.31, + "y": 176069.0, + "z": 370.0, + "abstand": 33044.28, + "rotation": 180.0, + "typ": "STANDARD", + "darstellung": "2D", + "comment": "aus DXF: Radmitte AN8 Pinband (Layer 1ANTR-800) (34994.31, 176069.00) -> SP8 Pinband (mit Inkrementalgeber 829522024) (Layer 1SP-800) (1950.03, 176069.00), Mittenabstand 33044.28, rotation 180.00 Grad; x/y = AN8-Mitte minus Radius. ACHTUNG hoehe=370.0 ist NICHT belegt: AN8/SP8 sind flache 2D-Symbole auf Z=0 und nur 0 3D-Nachbarn in 3000 mm - zu wenige fuer eine belegbare Hoehe." + }, + { + "id": "Kreisel_Arvato_05", + "function": "insert", + "x": 36195.18, + "y": 188428.08, + "z": 0.0, + "abstand": 33470.18, + "rotation": 180.0, + "typ": "STANDARD", + "darstellung": "2D", + "comment": "aus DXF: Radmitte AN8 (Layer 1ANTR-800) (35795.18, 188428.08) -> SP8 (Layer 1SP-800) (2325.00, 188428.08), Mittenabstand 33470.18, rotation 180.00 Grad; x/y = AN8-Mitte minus Radius. ACHTUNG hoehe=0.0 ist NICHT belegt: AN8/SP8 sind flache 2D-Symbole auf Z=0 und nur 0 3D-Nachbarn in 3000 mm - zu wenige fuer eine belegbare Hoehe." + }, + { + "id": "Kreisel_Arvato_06", + "function": "insert", + "x": 42097.73, + "y": 165252.93, + "z": 0.0, + "abstand": 3619.15, + "rotation": 90.0, + "typ": "STANDARD", + "darstellung": "2D", + "comment": "aus DXF: Radmitte AN8 (Layer 1ANTR-800) (42097.73, 165652.93) -> SP8 (Layer 1SP-800) (42097.72, 169272.08), Mittenabstand 3619.15, rotation 90.00 Grad; x/y = AN8-Mitte minus Radius. ACHTUNG hoehe=0.0 ist NICHT belegt: AN8/SP8 sind flache 2D-Symbole auf Z=0 und nur 0 3D-Nachbarn in 3000 mm - zu wenige fuer eine belegbare Hoehe." + }, + { + "test_id": "GERADE_Arvato_01", + "typ": "gerade", + "darstellung": "2D", + "laenge": 8313.39, + "hz": 90.0, + "startpunkt": [2334.97, 177818.67, 0.0], + "endpunkt": [2334.96, 186132.06, 0.0], + "hoehe_unbekannt": true, + "comment": "aus DXF: Antrieb FF -> Umlenkung FF (Layer z-3 / z-3), Achse 90 Grad, Laenge 8313.39, Querversatz 0.01 (Bezugspunkt-Unterschied), Neigung 0.00 Grad; 2D-Schema - Z ist dort keine Einbauhoehe, darum waagrechte Strecke und hoehe_unbekannt=true. Einbauhoehe nur ueber den 3D-Zwilling zu bekommen." + }, + { + "test_id": "GERADE_Arvato_09", + "typ": "gerade", + "darstellung": "2D", + "laenge": 8313.39, + "hz": 90.0, + "startpunkt": [14264.99, 177818.71, 0.0], + "endpunkt": [14264.99, 186132.1, 0.0], + "hoehe_unbekannt": true, + "comment": "aus DXF: Antrieb FF -> Umlenkung FF (Layer z-3 / z-3), Achse 90 Grad, Laenge 8313.39, Querversatz 0.00 (Bezugspunkt-Unterschied), Neigung 0.00 Grad; 2D-Schema - Z ist dort keine Einbauhoehe, darum waagrechte Strecke und hoehe_unbekannt=true. Einbauhoehe nur ueber den 3D-Zwilling zu bekommen." + }, + { + "test_id": "GERADE_Arvato_10", + "typ": "gerade", + "darstellung": "2D", + "laenge": 3183.28, + "hz": 270.0, + "startpunkt": [19545.38, 174003.47, 370.0], + "endpunkt": [19545.58, 170820.19, 0.0], + "hoehe_unbekannt": true, + "comment": "aus DXF: Antrieb FF -> Umlenkung FF (Layer z-3 / z-3), Achse 270 Grad, Laenge 3183.28, Querversatz 0.20 (Bezugspunkt-Unterschied), Neigung 6.63 Grad; 2D-Schema - Z ist dort keine Einbauhoehe, darum waagrechte Strecke und hoehe_unbekannt=true. Einbauhoehe nur ueber den 3D-Zwilling zu bekommen." + }, + { + "test_id": "GERADE_Arvato_11", + "typ": "gerade", + "darstellung": "2D", + "laenge": 17664.81, + "hz": 0.0, + "startpunkt": [21626.92, 167134.77, 0.0], + "endpunkt": [39291.73, 167134.97, 0.0], + "hoehe_unbekannt": true, + "comment": "aus DXF: Antrieb FF -> Umlenkung FF (Layer z-3 / z-3), Achse 0 Grad, Laenge 17664.81, Querversatz 0.20 (Bezugspunkt-Unterschied), Neigung 0.00 Grad; 2D-Schema - Z ist dort keine Einbauhoehe, darum waagrechte Strecke und hoehe_unbekannt=true. Einbauhoehe nur ueber den 3D-Zwilling zu bekommen." + }, + { + "test_id": "GERADE_Arvato_12", + "typ": "gerade", + "darstellung": "2D", + "laenge": 3124.62, + "hz": 0.0, + "startpunkt": [21626.97, 165578.18, 0.0], + "endpunkt": [24751.59, 165578.37, 0.0], + "hoehe_unbekannt": true, + "comment": "aus DXF: Antrieb FF -> Umlenkung FF (Layer z-3 / z-3), Achse 0 Grad, Laenge 3124.62, Querversatz 0.19 (Bezugspunkt-Unterschied), Neigung 0.00 Grad; 2D-Schema - Z ist dort keine Einbauhoehe, darum waagrechte Strecke und hoehe_unbekannt=true. Einbauhoehe nur ueber den 3D-Zwilling zu bekommen." + }, + { + "test_id": "GERADE_Arvato_13", + "typ": "gerade", + "darstellung": "2D", + "laenge": 8313.39, + "hz": 90.0, + "startpunkt": [22854.62, 177818.71, 0.0], + "endpunkt": [22854.61, 186132.1, 0.0], + "hoehe_unbekannt": true, + "comment": "aus DXF: Antrieb FF -> Umlenkung FF (Layer z-3 / z-3), Achse 90 Grad, Laenge 8313.39, Querversatz 0.01 (Bezugspunkt-Unterschied), Neigung 0.00 Grad; 2D-Schema - Z ist dort keine Einbauhoehe, darum waagrechte Strecke und hoehe_unbekannt=true. Einbauhoehe nur ueber den 3D-Zwilling zu bekommen." + }, + { + "test_id": "GERADE_Arvato_14", + "typ": "gerade", + "darstellung": "2D", + "laenge": 6717.41, + "hz": 0.0, + "startpunkt": [32574.32, 165578.18, 0.0], + "endpunkt": [39291.73, 165578.37, 0.0], + "hoehe_unbekannt": true, + "comment": "aus DXF: Antrieb FF -> Umlenkung FF (Layer z-3 / z-3), Achse 0 Grad, Laenge 6717.41, Querversatz 0.19 (Bezugspunkt-Unterschied), Neigung 0.00 Grad; 2D-Schema - Z ist dort keine Einbauhoehe, darum waagrechte Strecke und hoehe_unbekannt=true. Einbauhoehe nur ueber den 3D-Zwilling zu bekommen." + }, + { + "test_id": "GERADE_Arvato_15", + "typ": "gerade", + "darstellung": "2D", + "laenge": 3706.41, + "hz": 180.0, + "startpunkt": [34650.88, 173417.91, 0.0], + "endpunkt": [30944.47, 173408.89, 0.0], + "hoehe_unbekannt": true, + "comment": "aus DXF: Antrieb FF -> Umlenkung FF (Layer z-3 / z-3), Achse 180 Grad, Laenge 3706.41, Querversatz 9.02 (Bezugspunkt-Unterschied), Neigung 0.00 Grad; 2D-Schema - Z ist dort keine Einbauhoehe, darum waagrechte Strecke und hoehe_unbekannt=true. Einbauhoehe nur ueber den 3D-Zwilling zu bekommen." + }, + { + "test_id": "GERADE_Arvato_16", + "typ": "gerade", + "darstellung": "2D", + "laenge": 3566.48, + "hz": 270.0, + "startpunkt": [41688.71, 185921.64, 0.0], + "endpunkt": [41678.01, 182355.16, 0.0], + "hoehe_unbekannt": true, + "comment": "aus DXF: Antrieb FF -> Umlenkung FF (Layer z-3 / z-3), Achse 270 Grad, Laenge 3566.48, Querversatz 10.70 (Bezugspunkt-Unterschied), Neigung 0.00 Grad; 2D-Schema - Z ist dort keine Einbauhoehe, darum waagrechte Strecke und hoehe_unbekannt=true. Einbauhoehe nur ueber den 3D-Zwilling zu bekommen." + }, + { + "function": "insert", + "block": "Vario_Motorstation_500mm_rechts", + "x": 41271.73, + "y": 171724.16, + "z": -370.0, + "rotation": 0.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Antrieb FF', Layer 'z-3', auf Makro-Block 'Vario_Motorstation_500mm_rechts' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Seite=rechts - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Vario_Umlenkstation_500mm_rechts", + "x": 30282.95, + "y": 174208.89, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Umlenkung FF', Layer 'z-3', auf Makro-Block 'Vario_Umlenkstation_500mm_rechts' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Seite=rechts - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Vario_Umlenkstation_500mm_rechts", + "x": 36190.75, + "y": 186482.16, + "z": 0.0, + "rotation": 0.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Umlenkung FF', Layer 'z-3', auf Makro-Block 'Vario_Umlenkstation_500mm_rechts' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Seite=rechts - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Vario_Kurve_rechts_30_TEF_aussen", + "x": 41377.46, + "y": 179475.63, + "z": 0.0, + "rotation": 0.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'tef30°', Layer '0', auf Makro-Block 'Vario_Kurve_rechts_30_TEF_aussen' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Lage=aussen, Seite=rechts - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Vario_Kurve_rechts_30_TEF_aussen", + "x": 35984.01, + "y": 173395.48, + "z": 0.0, + "rotation": 120.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'tef30°außen', Layer '0', auf Makro-Block 'Vario_Kurve_rechts_30_TEF_aussen' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Seite=rechts - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Vario_Kurve_rechts_30_TEF_aussen", + "x": 36210.84, + "y": 173622.64, + "z": 0.0, + "rotation": 150.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'tef30°außen', Layer '0', auf Makro-Block 'Vario_Kurve_rechts_30_TEF_aussen' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Seite=rechts - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Vario_Kurve_rechts_30_TEF_aussen", + "x": 36296.49, + "y": 173937.59, + "z": 0.0, + "rotation": 180.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'tef30°außen', Layer '0', auf Makro-Block 'Vario_Kurve_rechts_30_TEF_aussen' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Seite=rechts - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Vario_Kurve_rechts_30_TEF_aussen", + "x": 41169.03, + "y": 187345.02, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'tef30°außen', Layer '0', auf Makro-Block 'Vario_Kurve_rechts_30_TEF_aussen' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Seite=rechts - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Vario_Kurve_rechts_30_TEF_aussen", + "x": 41483.98, + "y": 187259.38, + "z": 0.0, + "rotation": 240.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'tef30°außen', Layer '0', auf Makro-Block 'Vario_Kurve_rechts_30_TEF_aussen' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Seite=rechts - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Vario_Kurve_rechts_30_TEF_aussen", + "x": 41711.14, + "y": 187032.54, + "z": 0.0, + "rotation": 210.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'tef30°außen', Layer '0', auf Makro-Block 'Vario_Kurve_rechts_30_TEF_aussen' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Seite=rechts - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Vario_Kurve_rechts_30_TEF_aussen", + "x": 41784.82, + "y": 180461.57, + "z": 0.0, + "rotation": 180.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'tef30°außen', Layer '0', auf Makro-Block 'Vario_Kurve_rechts_30_TEF_aussen' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Seite=rechts - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 2801.42, + "y": 186442.19, + "z": 0.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 4901.05, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 5801.05, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 6601.05, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 7401.05, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 8451.06, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 9251.06, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 10051.06, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 11391.05, + "y": 178054.91, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 12191.05, + "y": 178054.91, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 12991.05, + "y": 178054.91, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 14731.45, + "y": 186442.19, + "z": 0.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 15801.05, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 16601.05, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 17401.05, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 18448.56, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 19348.56, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 20148.56, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 20948.56, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 23321.08, + "y": 186442.19, + "z": 0.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 24608.56, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 25408.56, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 26908.55, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 27808.55, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 28608.55, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 29408.55, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 30958.55, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 31858.55, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 32658.55, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_links", + "x": 33458.55, + "y": 178054.88, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement links 200000217 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_links' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_rechts", + "x": 42932.74, + "y": 166073.59, + "z": 0.0, + "rotation": 180.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement rechts 200000241 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_rechts' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "AS_Element_90_rechts", + "x": 42932.74, + "y": 167630.19, + "z": 0.0, + "rotation": 180.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Ausschleuselement rechts 200000241 Draufsicht', Layer '0', auf Makro-Block 'AS_Element_90_rechts' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "ES_Element_90_rechts", + "x": 4958.03, + "y": 166992.08, + "z": 0.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Einschleuselement rechts 200000146 Seitenansicht', Layer '4-EE', auf Makro-Block 'ES_Element_90_rechts' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "ES_Element_90_rechts", + "x": 8058.82, + "y": 168049.64, + "z": 0.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Einschleuselement rechts 200000146 Seitenansicht', Layer '4-EE', auf Makro-Block 'ES_Element_90_rechts' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90 - bei Bedarf hier im JSON korrigieren; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "ES_Element_30_rechts", + "x": 20513.9, + "y": 187602.73, + "z": -4.49, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'Einschleuselement rechts 30° 200000688 Vorderansicht', Layer '0', auf Makro-Block 'ES_Element_30_rechts' abgebildet; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-LP", + "x": 2572.67, + "y": 175669.0, + "z": 370.0, + "rotation": 0.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-LP", + "x": 3016.33, + "y": 188028.08, + "z": 0.0, + "rotation": 0.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-LP", + "x": 4628.04, + "y": 176469.0, + "z": 370.0, + "rotation": 180.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-LP", + "x": 14946.35, + "y": 188028.08, + "z": 0.0, + "rotation": 0.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-LP", + "x": 15528.05, + "y": 176469.05, + "z": 370.0, + "rotation": 180.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-LP", + "x": 19137.94, + "y": 168591.49, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-LP", + "x": 23535.98, + "y": 188028.08, + "z": 0.0, + "rotation": 0.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-LP", + "x": 24328.05, + "y": 176469.09, + "z": 370.0, + "rotation": 180.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-LP", + "x": 34584.31, + "y": 176469.0, + "z": 370.0, + "rotation": 180.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-LP", + "x": 35391.12, + "y": 188828.08, + "z": 0.0, + "rotation": 180.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-LP", + "x": 41697.93, + "y": 167818.8, + "z": 0.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 2334.91, + "y": 186756.85, + "z": 0.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 2334.97, + "y": 176994.56, + "z": 370.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 5367.5, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 6267.5, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 7067.5, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 7867.5, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 8917.51, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 9717.51, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 10517.51, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 11857.51, + "y": 187359.45, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 12657.51, + "y": 187359.45, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 13457.51, + "y": 187359.45, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 14264.94, + "y": 186756.89, + "z": 0.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 14264.99, + "y": 176994.61, + "z": 370.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 16267.51, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 17067.51, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 17867.51, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 18915.01, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 19546.07, + "y": 170249.91, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 19546.07, + "y": 175157.16, + "z": 370.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 19680.48, + "y": 167135.46, + "z": 0.0, + "rotation": 0.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 19680.53, + "y": 165578.85, + "z": 0.0, + "rotation": 0.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 19815.01, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 20615.01, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 21415.01, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 22854.57, + "y": 186756.89, + "z": 0.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 22854.62, + "y": 176994.61, + "z": 370.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 25075.01, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 25462.17, + "y": 165578.85, + "z": 0.0, + "rotation": 0.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 25875.01, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 27375.0, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 28275.0, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 29075.0, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 29875.0, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 30851.32, + "y": 174208.89, + "z": 0.0, + "rotation": 0.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 30944.14, + "y": 165578.85, + "z": 0.0, + "rotation": 0.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 31425.0, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 31494.84, + "y": 173408.89, + "z": 0.0, + "rotation": 0.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 32325.0, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 33125.0, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 33925.0, + "y": 187359.42, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 36195.18, + "y": 187066.18, + "z": 0.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 39889.85, + "y": 167135.46, + "z": 0.0, + "rotation": 0.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 39889.9, + "y": 165578.85, + "z": 0.0, + "rotation": 0.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 41439.64, + "y": 169070.08, + "z": 0.0, + "rotation": 120.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "S-SP", + "x": 41697.72, + "y": 182892.95, + "z": 0.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Scanner", + "x": 3166.57, + "y": 188414.66, + "z": 0.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Scanner", + "x": 4477.8, + "y": 176855.58, + "z": 370.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Scanner", + "x": 15096.6, + "y": 188414.66, + "z": 0.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Scanner", + "x": 15377.81, + "y": 176855.63, + "z": 370.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Scanner", + "x": 23686.22, + "y": 188414.66, + "z": 0.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Scanner", + "x": 24177.81, + "y": 176855.68, + "z": 370.0, + "rotation": 90.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Scanner", + "x": 25618.13, + "y": 165246.94, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Scanner", + "x": 30966.81, + "y": 165246.94, + "z": 0.0, + "rotation": 270.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + }, + { + "function": "insert", + "block": "Scanner", + "x": 41298.05, + "y": 167879.95, + "z": 0.0, + "rotation": 180.0, + "darstellung": "2D", + "hoehe_unbekannt": true, + "comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet; 2D-Schema ohne 3D-Zwilling - z ist keine Einbauhoehe (hoehe_unbekannt)" + } +]