Merge branch 'master' of https://gitea.schoenenberger.de/Schoenenberger_Systeme_GmbH/dxfmakros
This commit is contained in:
+305
-305
File diff suppressed because it is too large
Load Diff
+97
-17
@@ -58,7 +58,10 @@
|
||||
;; lib/vf_spec_export.py uebernimmt sie beim Neuerzeugen der Spec-Daten
|
||||
;; unveraendert ans Dateiende (sonst waeren sie beim naechsten Lauf weg).
|
||||
;;
|
||||
;; Bisher unterstuetzt: Kreisel (function "insert", wie test_kreisel.lsp).
|
||||
;; Unterstuetzt: Kreisel (function "insert", wie test_kreisel.lsp) und
|
||||
;; Separator/Scanner (zusaetzlich "block", wie in mubea.json - Schema
|
||||
;; tests/testdata/object_data.md Abschnitt 5). Unterscheidung ueber das
|
||||
;; Feld "block": nur Separator/Scanner-Eintraege haben es.
|
||||
;; Weitere Arten kommen als eigener cond-Zweig dazu.
|
||||
|
||||
(defun hundm05:zusatz-objekt-p (obj)
|
||||
@@ -116,10 +119,80 @@
|
||||
(vsp-set (vsp-set rec "status" "abbruch") "fehler_text"
|
||||
"kreisel-insert-script lieferte nil"))))))
|
||||
|
||||
;; Separator/Scanner bauen ("block"-Eintraege, siehe object_data.md
|
||||
;; Abschnitt 5). ils-insert-sensor (SSG_LIB_Commands.lsp) ist dafuer NICHT
|
||||
;; scriptbar (fragt Punkt/Rotation per getpoint/pause in einer Schleife) -
|
||||
;; wir bauen den _.INSERT darum direkt selbst nach, wie
|
||||
;; mubea:build-separator-one in tests/test_mubea.lsp es fuer die
|
||||
;; Mubea-Anlage schon vorgemacht hat (dieselbe Vorlage, hier auf das
|
||||
;; hundm05:bau-*/vsp-rec-neu-Record-Format dieser Datei uebertragen statt
|
||||
;; mubeas eigenes result-json). "sensor" als Sammelbegriff fuer den "kind"-
|
||||
;; Wert, weil dieselbe Routine Separator UND Scanner einfuegt - genau wie
|
||||
;; ils-insert-sensor selbst.
|
||||
(defun hundm05:bau-sensor (obj / id blockname x y z rotation pt eff n ent ed rec)
|
||||
(setq id (ssg-val obj "id"))
|
||||
(setq blockname (ssg-val obj "block"))
|
||||
(setq x (ssg-val obj "x")
|
||||
y (ssg-val obj "y")
|
||||
z (ssg-val obj "z")
|
||||
rotation (ssg-val obj "rotation"))
|
||||
(if (numberp x) (setq x (float x)))
|
||||
(if (numberp y) (setq y (float y)))
|
||||
(if (numberp z) (setq z (float z)))
|
||||
(setq rotation (if (numberp rotation) (float rotation) 0.0))
|
||||
(setq rec (vsp-rec-neu (cond (id) (blockname) ("(ohne id)"))))
|
||||
(setq rec (vsp-set rec "kind" "sensor"))
|
||||
(setq rec (vsp-set rec "dimension" (vsp-dim-text)))
|
||||
(cond
|
||||
((not (and (numberp x) (numberp y) (numberp z)))
|
||||
(princ (strcat "\n [SENSOR] " (if id id "?")
|
||||
" - FEHLER: x, y und z muessen Zahlen sein"))
|
||||
(vsp-set (vsp-set rec "status" "spec-fehler") "fehler_text"
|
||||
"x, y oder z fehlt bzw. ist keine Zahl"))
|
||||
(T
|
||||
(setq pt (list x y z))
|
||||
;; NICHT (and blockname (ssg-ils-block-laden blockname)) - and liefert
|
||||
;; T/nil statt des Blocknamen-Strings (siehe CLAUDE.md, and/or-Falle).
|
||||
(setq eff (if blockname (ssg-ils-block-laden blockname)))
|
||||
(if (null eff) (setq eff (ssg-ils-block-laden "Separator_SP")))
|
||||
(cond
|
||||
((null eff)
|
||||
(princ (strcat "\n [SENSOR] " (if id id "?")
|
||||
" - FEHLER: weder '" blockname
|
||||
"' noch Fallback 'Separator_SP' als Blockdatei gefunden"))
|
||||
(vsp-set (vsp-set rec "status" "abbruch") "fehler_text"
|
||||
"kein Block gefunden"))
|
||||
(T
|
||||
(princ (strcat "\n [SENSOR] " id " '" blockname "' -> ("
|
||||
(rtos x 2 0) ", " (rtos y 2 0) ", " (rtos z 2 0)
|
||||
") R=" (rtos rotation 2 1)))
|
||||
(command "_.INSERT" eff pt "" "" rotation)
|
||||
;; Verbleibende Prompts mit Enter abfangen, aber GEZAEHLT - siehe
|
||||
;; mubea:build-separator-one (ein Prompt, der Leer-Antworten
|
||||
;; ablehnt, haelt CMDACTIVE sonst dauerhaft > 0).
|
||||
(setq n 0)
|
||||
(while (and (> (getvar "CMDACTIVE") 0) (< n 5))
|
||||
(command "")
|
||||
(setq n (1+ n)))
|
||||
(if (> (getvar "CMDACTIVE") 0)
|
||||
(progn
|
||||
(command)
|
||||
(princ (strcat "\n WARNUNG: INSERT von '" eff
|
||||
"' nicht sauber beendet - abgebrochen."))))
|
||||
(setq ent (entlast))
|
||||
(if (atoms-family 1 '("ssg-id-generate")) (ssg-id-generate ent))
|
||||
(setq ed (entget ent))
|
||||
(princ (strcat " -> Block " (cdr (assoc 2 ed))))
|
||||
(setq rec (vsp-set rec "block_name" (cdr (assoc 2 ed))))
|
||||
(setq rec (vsp-set rec "block_handle" (cdr (assoc 5 ed))))
|
||||
(setq rec (vsp-set rec "insert_point" (cdr (assoc 10 ed))))
|
||||
(setq rec (vsp-set rec "attribs" (ssg-attrib-read ent)))
|
||||
(vsp-set rec "status" "executed"))))))
|
||||
|
||||
;; Alle Zusatzobjekte der Datei bauen. Eigener ssg-start-Rahmen, weil
|
||||
;; vsp-bau-datei seinen schon geschlossen hat; ATTREQ/ATTDIA 0 ist Pflicht -
|
||||
;; sonst fragt (command "_.INSERT" ...) nach Attributwerten.
|
||||
(defun hundm05:bau-zusatzobjekte (datei / daten objekte out rec)
|
||||
(defun hundm05:bau-zusatzobjekte (datei / daten objekte out rec builder kind)
|
||||
(setq daten (ssg-load-json datei))
|
||||
(setq objekte '())
|
||||
(foreach obj daten
|
||||
@@ -127,11 +200,6 @@
|
||||
(setq objekte (reverse objekte))
|
||||
(cond
|
||||
((null objekte) nil)
|
||||
((null (car (atoms-family 1 '("KREISEL-INSERT-SCRIPT"))))
|
||||
(princ (strcat "\n[TEST_HUNDM05] WARNUNG: " (itoa (length objekte))
|
||||
" Zusatzobjekt(e) uebersprungen - KreiselInsert nicht"
|
||||
" geladen."))
|
||||
nil)
|
||||
(T
|
||||
(princ (strcat "\n " (itoa (length objekte))
|
||||
" weitere(s) Objekt(e) der Anlage"))
|
||||
@@ -142,16 +210,28 @@
|
||||
(setvar "ATTDIA" 0)
|
||||
(setq out '())
|
||||
(foreach obj objekte
|
||||
(setq rec (vl-catch-all-apply 'hundm05:bau-kreisel (list obj)))
|
||||
(if (vl-catch-all-error-p rec)
|
||||
(progn
|
||||
(princ (strcat "\n [KREISEL] Ausnahme: "
|
||||
(vl-catch-all-error-message rec)))
|
||||
(setq rec (vsp-set (vsp-set (vsp-set
|
||||
(vsp-rec-neu (ssg-val obj "id"))
|
||||
"kind" "kreisel") "status" "abbruch")
|
||||
"fehler_text"
|
||||
(vl-catch-all-error-message rec)))))
|
||||
;; Unterscheidung Kreisel/Sensor ueber "block" (nur Separator/
|
||||
;; Scanner-Eintraege haben es), je eigener Builder + "kind"-Wert.
|
||||
(setq kind (if (ssg-val obj "block") "sensor" "kreisel"))
|
||||
(setq builder (if (ssg-val obj "block") 'hundm05:bau-sensor 'hundm05:bau-kreisel))
|
||||
(cond
|
||||
((and (= kind "kreisel")
|
||||
(null (car (atoms-family 1 '("KREISEL-INSERT-SCRIPT")))))
|
||||
(princ (strcat "\n [KREISEL] " (ssg-val obj "id")
|
||||
" uebersprungen - KreiselInsert nicht geladen."))
|
||||
(setq rec (vsp-set (vsp-set (vsp-rec-neu (ssg-val obj "id"))
|
||||
"kind" kind) "status" "spec-fehler")))
|
||||
(T
|
||||
(setq rec (vl-catch-all-apply builder (list obj)))
|
||||
(if (vl-catch-all-error-p rec)
|
||||
(progn
|
||||
(princ (strcat "\n [" (strcase kind) "] Ausnahme: "
|
||||
(vl-catch-all-error-message rec)))
|
||||
(setq rec (vsp-set (vsp-set (vsp-set
|
||||
(vsp-rec-neu (ssg-val obj "id"))
|
||||
"kind" kind) "status" "abbruch")
|
||||
"fehler_text"
|
||||
(vl-catch-all-error-message rec)))))))
|
||||
(setq out (cons rec out)))
|
||||
(ssg-end)
|
||||
(reverse out))))
|
||||
|
||||
Vendored
+18
-18
@@ -348,24 +348,24 @@
|
||||
"anzahl_eingaben": 54,
|
||||
"block": "VF_46",
|
||||
"dxf_handle": "EFD4",
|
||||
"startpunkt_mm": [8571.95068, 1276.061424, 2494.930831],
|
||||
"startpunkt_mm": [8572.181, 1226.825, 2154.0],
|
||||
"rotation_grad": 0.0,
|
||||
"beschreibung": "Linienzug (Modus 1), Start Z2495: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
|
||||
"beschreibung": "Linienzug (Modus 1), Start Z2154: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
|
||||
"sivas_id": "0019",
|
||||
"sivas_bezeichnung": "VarioFoerderer :5",
|
||||
"planquadrat": "D/1",
|
||||
"erwartung_hinweis": "Sivas-Export (EXPORTSIVAS), Strecke 0019: DeltaL_mm=1788, DeltaH_mm=220, Hoehe_Von_mm=2154, Hoehe_Bis_mm=2374, L_GF_m=2.727,0.4,0.418, L_VF_m=0.177,0.339,0.356,0.548, VF_Winkel=0,0,39,0, Anzahl_Separator=3",
|
||||
"quelle": "INSERT EFD4 (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]"
|
||||
"quelle": "INSERT EFD4 (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]; korrigiert per HundM05.dxf (sps_skel) - Startpunkt war faelschlich auf [8571.95068, 1276.061424, 2494.930831] aufgezeichnet (Anschluss an Kreisel hatte Luecke)"
|
||||
},
|
||||
{
|
||||
"typ": "point_abs",
|
||||
"wert": [8571.95068, 1276.061424, 2494.930831],
|
||||
"wert": [8572.181, 1226.825, 2154.0],
|
||||
"kommentar": "getpoint Startpunkt der Kette (absoluter Weltpunkt, einziger Anker der ganzen Kette)"
|
||||
},
|
||||
{
|
||||
"typ": "real",
|
||||
"wert": 2494.930831,
|
||||
"kommentar": "getreal Hoehe (Z) Startpunkt -> 2494.9 mm"
|
||||
"wert": 2154.0,
|
||||
"kommentar": "getreal Hoehe (Z) Startpunkt -> 2154.0 mm"
|
||||
},
|
||||
{
|
||||
"typ": "string",
|
||||
@@ -635,24 +635,24 @@
|
||||
"anzahl_eingaben": 54,
|
||||
"block": "VF_46",
|
||||
"dxf_handle": "FA5A",
|
||||
"startpunkt_mm": [12916.465798, 1276.061424, 2494.930831],
|
||||
"startpunkt_mm": [12916.988, 1237.971, 2154.0],
|
||||
"rotation_grad": 0.0,
|
||||
"beschreibung": "Linienzug (Modus 1), Start Z2495: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
|
||||
"beschreibung": "Linienzug (Modus 1), Start Z2154: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
|
||||
"sivas_id": "0018",
|
||||
"sivas_bezeichnung": "VarioFoerderer :4",
|
||||
"planquadrat": "F/1",
|
||||
"erwartung_hinweis": "Sivas-Export (EXPORTSIVAS), Strecke 0018: DeltaL_mm=1788, DeltaH_mm=220, Hoehe_Von_mm=2154, Hoehe_Bis_mm=2374, L_GF_m=2.727,0.4,0.418, L_VF_m=0.177,0.339,0.356,0.548, VF_Winkel=0,0,39,0, Anzahl_Separator=3",
|
||||
"quelle": "INSERT FA5A (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]"
|
||||
"quelle": "INSERT FA5A (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]; korrigiert per HundM05.dxf (sps_skel) - Startpunkt war faelschlich auf [12916.465798, 1276.061424, 2494.930831] aufgezeichnet (Anschluss an Kreisel hatte Luecke)"
|
||||
},
|
||||
{
|
||||
"typ": "point_abs",
|
||||
"wert": [12916.465798, 1276.061424, 2494.930831],
|
||||
"wert": [12916.988, 1237.971, 2154.0],
|
||||
"kommentar": "getpoint Startpunkt der Kette (absoluter Weltpunkt, einziger Anker der ganzen Kette)"
|
||||
},
|
||||
{
|
||||
"typ": "real",
|
||||
"wert": 2494.930831,
|
||||
"kommentar": "getreal Hoehe (Z) Startpunkt -> 2494.9 mm"
|
||||
"wert": 2154.0,
|
||||
"kommentar": "getreal Hoehe (Z) Startpunkt -> 2154.0 mm"
|
||||
},
|
||||
{
|
||||
"typ": "string",
|
||||
@@ -1209,24 +1209,24 @@
|
||||
"anzahl_eingaben": 54,
|
||||
"block": "VF_46",
|
||||
"dxf_handle": "104E0",
|
||||
"startpunkt_mm": [21490.273781, 1195.739767, 2494.930831],
|
||||
"startpunkt_mm": [21491.319, 1213.582, 2154.0],
|
||||
"rotation_grad": 0.0,
|
||||
"beschreibung": "Linienzug (Modus 1), Start Z2495: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
|
||||
"beschreibung": "Linienzug (Modus 1), Start Z2154: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
|
||||
"sivas_id": "0008",
|
||||
"sivas_bezeichnung": "VarioFoerderer :3",
|
||||
"planquadrat": "J/1",
|
||||
"erwartung_hinweis": "Sivas-Export (EXPORTSIVAS), Strecke 0008: DeltaL_mm=1788, DeltaH_mm=220, Hoehe_Von_mm=2154, Hoehe_Bis_mm=2374, L_GF_m=2.727,0.4,0.418, L_VF_m=0.177,0.339,0.356,0.548, VF_Winkel=0,0,39,0, Anzahl_Separator=3",
|
||||
"quelle": "INSERT 104E0 (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]"
|
||||
"quelle": "INSERT 104E0 (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]; korrigiert per HundM05.dxf (sps_skel) - Startpunkt war faelschlich auf [21490.273781, 1195.739767, 2494.930831] aufgezeichnet"
|
||||
},
|
||||
{
|
||||
"typ": "point_abs",
|
||||
"wert": [21490.273781, 1195.739767, 2494.930831],
|
||||
"wert": [21491.319, 1213.582, 2154.0],
|
||||
"kommentar": "getpoint Startpunkt der Kette (absoluter Weltpunkt, einziger Anker der ganzen Kette)"
|
||||
},
|
||||
{
|
||||
"typ": "real",
|
||||
"wert": 2494.930831,
|
||||
"kommentar": "getreal Hoehe (Z) Startpunkt -> 2494.9 mm"
|
||||
"wert": 2154.0,
|
||||
"kommentar": "getreal Hoehe (Z) Startpunkt -> 2154.0 mm"
|
||||
},
|
||||
{
|
||||
"typ": "string",
|
||||
|
||||
Vendored
+152
-12
@@ -94,18 +94,18 @@
|
||||
{
|
||||
"spec_id": "VF_hundm05_LZ_02",
|
||||
"modus": 1,
|
||||
"start_punkt": [8571.95068, 1276.061424, 2494.930831],
|
||||
"start_hoehe": 2494.930831,
|
||||
"start_punkt": [8572.181, 1226.825, 2154.0],
|
||||
"start_hoehe": 2154.0,
|
||||
"as": 1,
|
||||
"as_winkel": "90",
|
||||
"as_seite": "links",
|
||||
"beschreibung": "Linienzug (Modus 1), Start Z2495: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
|
||||
"beschreibung": "Linienzug (Modus 1), Start Z2154: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
|
||||
"sivas_id": "0019",
|
||||
"sivas_bezeichnung": "VarioFoerderer :5",
|
||||
"planquadrat": "D/1",
|
||||
"block": "VF_46",
|
||||
"dxf_handle": "EFD4",
|
||||
"quelle": "INSERT EFD4 (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]"
|
||||
"quelle": "INSERT EFD4 (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]; korrigiert per HundM05.dxf (sps_skel) - Startpunkt war faelschlich auf [8571.95068, 1276.061424, 2494.930831] aufgezeichnet (Anschluss an Kreisel hatte Luecke)"
|
||||
},
|
||||
{
|
||||
"glied": "Linie-GF",
|
||||
@@ -175,18 +175,18 @@
|
||||
{
|
||||
"spec_id": "VF_hundm05_LZ_03",
|
||||
"modus": 1,
|
||||
"start_punkt": [12916.465798, 1276.061424, 2494.930831],
|
||||
"start_hoehe": 2494.930831,
|
||||
"start_punkt": [12916.988, 1237.971, 2154.0],
|
||||
"start_hoehe": 2154.0,
|
||||
"as": 1,
|
||||
"as_winkel": "90",
|
||||
"as_seite": "links",
|
||||
"beschreibung": "Linienzug (Modus 1), Start Z2495: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
|
||||
"beschreibung": "Linienzug (Modus 1), Start Z2154: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
|
||||
"sivas_id": "0018",
|
||||
"sivas_bezeichnung": "VarioFoerderer :4",
|
||||
"planquadrat": "F/1",
|
||||
"block": "VF_46",
|
||||
"dxf_handle": "FA5A",
|
||||
"quelle": "INSERT FA5A (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]"
|
||||
"quelle": "INSERT FA5A (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]; korrigiert per HundM05.dxf (sps_skel) - Startpunkt war faelschlich auf [12916.465798, 1276.061424, 2494.930831] aufgezeichnet (Anschluss an Kreisel hatte Luecke)"
|
||||
},
|
||||
{
|
||||
"glied": "Linie-GF",
|
||||
@@ -337,18 +337,18 @@
|
||||
{
|
||||
"spec_id": "VF_hundm05_LZ_05",
|
||||
"modus": 1,
|
||||
"start_punkt": [21490.273781, 1195.739767, 2494.930831],
|
||||
"start_hoehe": 2494.930831,
|
||||
"start_punkt": [21491.319, 1213.582, 2154.0],
|
||||
"start_hoehe": 2154.0,
|
||||
"as": 1,
|
||||
"as_winkel": "90",
|
||||
"as_seite": "links",
|
||||
"beschreibung": "Linienzug (Modus 1), Start Z2495: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
|
||||
"beschreibung": "Linienzug (Modus 1), Start Z2154: GF-Linie 3149 mm / 3 Grad -> Horizontal-VF 1575 mm -> Vario-Kurve 90 rechts innen -> Vario-Kurve 90 rechts innen -> Linie bis Kettenende 1153 mm auf Z2154 -> ES 90 links",
|
||||
"sivas_id": "0008",
|
||||
"sivas_bezeichnung": "VarioFoerderer :3",
|
||||
"planquadrat": "J/1",
|
||||
"block": "VF_46",
|
||||
"dxf_handle": "104E0",
|
||||
"quelle": "INSERT 104E0 (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]"
|
||||
"quelle": "INSERT 104E0 (Block VF_46) in polylines.dxf, XDATA-App SSG_VF_EDIT, Marker linienzug; im Journal aufgezeichneter Kettenstart: [17201.778323, 1205.360995, 2100.000000]; korrigiert per HundM05.dxf (sps_skel) - Startpunkt war faelschlich auf [21490.273781, 1195.739767, 2494.930831] aufgezeichnet"
|
||||
},
|
||||
{
|
||||
"glied": "Linie-GF",
|
||||
@@ -427,5 +427,145 @@
|
||||
"expect_block_prefix": "KREISEL_",
|
||||
"expect_hoehe": "2154",
|
||||
"expect_kreiselart": "STANDARD"
|
||||
},
|
||||
{
|
||||
"id": "HundM05_SEP_01",
|
||||
"comment": "Separator 1 (Nachtrag HundM05, reale Koordinate laut Anwender)",
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 2355,
|
||||
"y": 365,
|
||||
"z": 2154,
|
||||
"rotation": 0
|
||||
},
|
||||
{
|
||||
"id": "HundM05_SEP_02",
|
||||
"comment": "Separator 2 (Nachtrag HundM05, reale Koordinate laut Anwender)",
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 4052.79,
|
||||
"y": 1165.94,
|
||||
"z": 2154,
|
||||
"rotation": 180
|
||||
},
|
||||
{
|
||||
"id": "HundM05_SCANNER_02",
|
||||
"comment": "Scanner zu Separator 2 (Nachtrag HundM05, reale Koordinate laut Anwender)",
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 4095.51,
|
||||
"y": 1164.08,
|
||||
"z": 2154,
|
||||
"rotation": 270
|
||||
},
|
||||
{
|
||||
"id": "HundM05_SEP_03",
|
||||
"comment": "Separator 3 (Nachtrag HundM05, reale Koordinate laut Anwender)",
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 7831.77,
|
||||
"y": 1169.53,
|
||||
"z": 2154,
|
||||
"rotation": 180
|
||||
},
|
||||
{
|
||||
"id": "HundM05_SCANNER_03",
|
||||
"comment": "Scanner zu Separator 3 (Nachtrag HundM05, reale Koordinate laut Anwender)",
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 7874.49,
|
||||
"y": 1167.67,
|
||||
"z": 2154,
|
||||
"rotation": 270
|
||||
},
|
||||
{
|
||||
"id": "HundM05_SEP_04",
|
||||
"comment": "Separator 4 (Nachtrag HundM05, reale Koordinate laut Anwender)",
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 12191.01,
|
||||
"y": 1168.25,
|
||||
"z": 2154,
|
||||
"rotation": 180
|
||||
},
|
||||
{
|
||||
"id": "HundM05_SCANNER_04",
|
||||
"comment": "Scanner zu Separator 4 (Nachtrag HundM05, reale Koordinate laut Anwender)",
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 12233.73,
|
||||
"y": 1166.39,
|
||||
"z": 2154,
|
||||
"rotation": 270
|
||||
},
|
||||
{
|
||||
"id": "HundM05_SEP_05",
|
||||
"comment": "Separator 5 (Nachtrag HundM05, reale Koordinate laut Anwender)",
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 16488.38,
|
||||
"y": 1171.7,
|
||||
"z": 2154,
|
||||
"rotation": 180
|
||||
},
|
||||
{
|
||||
"id": "HundM05_SCANNER_05",
|
||||
"comment": "Scanner zu Separator 5 (Nachtrag HundM05, reale Koordinate laut Anwender)",
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 16531.1,
|
||||
"y": 1169.84,
|
||||
"z": 2154,
|
||||
"rotation": 270
|
||||
},
|
||||
{
|
||||
"id": "HundM05_SEP_06",
|
||||
"comment": "Separator 6 (Nachtrag HundM05, reale Koordinate laut Anwender)",
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 20764.96,
|
||||
"y": 1166.18,
|
||||
"z": 2154,
|
||||
"rotation": 180
|
||||
},
|
||||
{
|
||||
"id": "HundM05_SCANNER_06",
|
||||
"comment": "Scanner zu Separator 6 (Nachtrag HundM05, reale Koordinate laut Anwender)",
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 20807.68,
|
||||
"y": 1164.32,
|
||||
"z": 2154,
|
||||
"rotation": 270
|
||||
},
|
||||
{
|
||||
"id": "HundM05_SEP_07",
|
||||
"comment": "Separator 7 (Nachtrag HundM05, reale Koordinate laut Anwender)",
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 23738.03,
|
||||
"y": 1170.63,
|
||||
"z": 2154,
|
||||
"rotation": 180
|
||||
},
|
||||
{
|
||||
"id": "HundM05_SCANNER_07",
|
||||
"comment": "Scanner zu Separator 7 (Nachtrag HundM05, reale Koordinate laut Anwender)",
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 23780.75,
|
||||
"y": 1168.77,
|
||||
"z": 2154,
|
||||
"rotation": 270
|
||||
},
|
||||
{
|
||||
"id": "HundM05_SEP_08",
|
||||
"comment": "Separator 8 (Nachtrag HundM05, reale Koordinate laut Anwender, ohne zugehoerigen Scanner)",
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 24630.12,
|
||||
"y": 1167.22,
|
||||
"z": 2154,
|
||||
"rotation": 180
|
||||
}
|
||||
]
|
||||
|
||||
Vendored
+1
-1
@@ -649,7 +649,7 @@ Zwei Dateien beschreiben dieselben 5 Ketten, in zwei Formaten:
|
||||
| `tests/testdata/hm_recformat.json` | die **Aufzeichnung**: rohes Eingabe-Journal aus der XDATA der Kundenzeichnung, als Frage-Antwort-Protokoll | `TEST_HM_RECFORMAT` (in `alltests.json` abgeschaltet) |
|
||||
| `tests/testdata/hundm05.json` | die daraus abgeleitete **Spec** (Domaenenwerte statt Menue-Codes, 52 statt 281 Objekte) - hier werden weitere Teile der Anlage nachgetragen | `TEST_HUNDM05` |
|
||||
|
||||
In `hundm05.json` stehen neben den Ketten auch **andere Objekte der Anlage**, erkennbar am Feld `function` - Format wie in den jeweiligen Einzel-Testdaten (ein Kreisel also wie in `kreisel_tests.json`, Schema in Abschnitt 1). Damit beschreibt EINE Datei die ganze Anlage. Der Ketten-Uebersetzer ueberspringt diese Objekte (`vsp-gruppieren`), `hundm05:bau-zusatzobjekte` in `tests/test_hundm05.lsp` baut sie, und `lib/vf_spec_export.py` uebernimmt sie beim Neuerzeugen der Spec-Daten. Im Ergebnis-JSON unterscheidet das Feld `kind` die Objektarten (`linienzug` / `kreisel`).
|
||||
In `hundm05.json` stehen neben den Ketten auch **andere Objekte der Anlage**, erkennbar am Feld `function` - Format wie in den jeweiligen Einzel-Testdaten (ein Kreisel also wie in `kreisel_tests.json`, Schema in Abschnitt 1). Damit beschreibt EINE Datei die ganze Anlage. Der Ketten-Uebersetzer ueberspringt diese Objekte (`vsp-gruppieren`), `hundm05:bau-zusatzobjekte` in `tests/test_hundm05.lsp` baut sie, und `lib/vf_spec_export.py` uebernimmt sie beim Neuerzeugen der Spec-Daten. Im Ergebnis-JSON unterscheidet das Feld `kind` die Objektarten (`linienzug` / `kreisel` / `sensor`). `sensor` sind Separator/Scanner-Eintraege (erkennbar an `block`, Schema wie Abschnitt 5/`mubea.json`) - `hundm05:bau-sensor` baut sie per direktem `_.INSERT` nach, analog zu `mubea:build-separator-one` in `tests/test_mubea.lsp` (`ils-insert-sensor` selbst ist nicht scriptbar).
|
||||
|
||||
Die Spec ist das Eingabeformat, die Aufzeichnung die Vorlage, an der sie gemessen wird (Rundlauf-Beweis in `tests/test_vf_spec.py`). Warum beide bleiben: die Aufzeichnung ist die einzige eingecheckte Kopie der Originaldaten (`data/polylines.dxf` ist zu gross fuer das Repo) UND der einzige Test dafuer, dass ein BESTEHENDER `VF_n`-Block weiter abspielbar ist - also dass Doppelklick-Edit und 2D/3D-Konvertierung an Altbestand funktionieren. Gebaut wird routinemaessig nur noch aus der Spec, damit nicht zweimal dieselbe Geometrie entsteht.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user