HundM05-Testfall und DXF-Analyse-Skripte
- lib/dxf_scan_components.py: erkennt ILS-/Omniflo-Komponenten in fremden
Projektzeichnungen und schreibt sie im Testdaten-JSON-Schema aus
- lib/dxf_abbild.py: getreue Abbildung der Bauteile einer Fremdzeichnung
(Attribute, Weltkoordinaten, Unterkomponenten) ohne Interpretation
- tests/test_hundm05.{lsp,py}, testdata/hundm05.json, conftest-Fixtures und
alltests.json-Eintrag fuer den Kreisel-Abschnitt aus ST500592_05.dxf
- menu: TEST_HUNDM05 im Testmenue, Connection_Insert/Edit in SSG_LIB.cui
- Doku: hartkodierte Pfade durch (getenv "DXFMAKRO") ersetzt
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Vendored
+573
@@ -0,0 +1,573 @@
|
||||
[
|
||||
{
|
||||
"id": "Kreisel_HundM05_01",
|
||||
"function": "connect",
|
||||
"start_x": 216120.19,
|
||||
"start_y": 151070.0,
|
||||
"start_z": 0.0,
|
||||
"end_x": 239701.9,
|
||||
"end_y": 151070.0,
|
||||
"end_z": 0.0,
|
||||
"typ": "STANDARD",
|
||||
"hoehe": 0.0,
|
||||
"comment": "aus DXF: AN8 (Layer 1ANTR-800) -> SP8 (Layer 1SP-800), Abstand 23581.71; daraus folgt produktionsseitig abstand = 23581.71 - 800.0 = 22781.71 und rotation = 0.00 Grad. ACHTUNG hoehe: AN8 und SP8 sind in dieser Zeichnung flache 2D-Symbole (nur Linien/Kreis/Text auf Z=0) und auf Z=0 eingefuegt - die Einfuegehoehe des Kreisels steht NICHT im DXF und muss hier von Hand gesetzt werden (vgl. mubea.json, wo z ebenfalls Handarbeit ist)."
|
||||
},
|
||||
{
|
||||
"test_id": "GF_HundM05_04",
|
||||
"modus": 1,
|
||||
"deltaL_mm": 2094.45,
|
||||
"winkel_grad": 48.21,
|
||||
"hz_grad": 125.48,
|
||||
"start_mm": [219540.85, 152832.91, 2342.96],
|
||||
"as_seite": "links",
|
||||
"es_seite": "links",
|
||||
"as_winkel": "90",
|
||||
"es_winkel": "90",
|
||||
"comment": "aus DXF: 3D_FF_Antrieb_rechts -> Umlenkung FF (Layer _3D_Fingerförderer / z-3), XY-Abstand 2094.45, Neigung 48.21 Grad; Gefaellestrecke, da fallend und Neigung >= 3 Grad. as_/es_seite und -winkel sind Defaults (im DXF nicht ableitbar)."
|
||||
},
|
||||
{
|
||||
"test_id": "VF_HundM05_05",
|
||||
"typ": "standard",
|
||||
"richtung": "Auf",
|
||||
"deltaL": 1694.19,
|
||||
"deltaH": 2057.58,
|
||||
"startpunkt": [219542.27, 153175.18, 0.0],
|
||||
"seite": "rechts",
|
||||
"hz": 135.86,
|
||||
"comment": "aus DXF: Antrieb FF -> 3D_FF_Umlenk_rechts (Layer z-3 / _3D_Fingerförderer), XY-Abstand 1694.19, Neigung 50.53 Grad; VarioFoerderer. 'winkel' bewusst nicht gesetzt - der Solver waehlt den kleinsten gueltigen Kandidaten. 'seite' ist Default (im DXF nicht ableitbar)."
|
||||
},
|
||||
{
|
||||
"test_id": "GERADE_HundM05_08",
|
||||
"typ": "gerade",
|
||||
"laenge": 3305.26,
|
||||
"hz": 143.35,
|
||||
"startpunkt": [223150.89, 152953.65, 0.0],
|
||||
"endpunkt": [220499.01, 154926.53, 0.0],
|
||||
"comment": "aus DXF: Antrieb FF -> Umlenkung FF (Layer z-3 / z-3), XY-Abstand 3305.26, Neigung 0.00 Grad; waagrechte Foerderstrecke (Hoehendifferenz 0.00 mm < 10 mm) - KEIN VarioFoerderer, da dessen Winkel-Solver eine Hoehendifferenz braucht."
|
||||
},
|
||||
{
|
||||
"test_id": "GF_HundM05_09",
|
||||
"modus": 1,
|
||||
"deltaL_mm": 3817.56,
|
||||
"winkel_grad": 6.75,
|
||||
"hz_grad": 107.51,
|
||||
"start_mm": [223151.48, 152603.13, 2337.66],
|
||||
"as_seite": "links",
|
||||
"es_seite": "links",
|
||||
"as_winkel": "90",
|
||||
"es_winkel": "90",
|
||||
"comment": "aus DXF: 3D_FF_Antrieb_rechts -> 3D_FF_Umlenk_rechts (Layer _3D_Fingerförderer / _3D_Fingerförderer), XY-Abstand 3817.56, Neigung 6.75 Grad; Gefaellestrecke, da fallend und Neigung >= 3 Grad. as_/es_seite und -winkel sind Defaults (im DXF nicht ableitbar)."
|
||||
},
|
||||
{
|
||||
"test_id": "GERADE_HundM05_10",
|
||||
"typ": "gerade",
|
||||
"laenge": 11940.15,
|
||||
"hz": 33.61,
|
||||
"startpunkt": [225207.36, 149949.84, 0.0],
|
||||
"endpunkt": [235151.11, 156559.61, -3.45],
|
||||
"comment": "aus DXF: Antrieb FF -> Umlenkung FF (Layer z-3 / z-3), XY-Abstand 11940.15, Neigung 0.02 Grad; waagrechte Foerderstrecke (Hoehendifferenz 3.45 mm < 10 mm) - KEIN VarioFoerderer, da dessen Winkel-Solver eine Hoehendifferenz braucht."
|
||||
},
|
||||
{
|
||||
"test_id": "VF_HundM05_11",
|
||||
"typ": "standard",
|
||||
"richtung": "Auf",
|
||||
"deltaL": 11769.21,
|
||||
"deltaH": 5827.59,
|
||||
"startpunkt": [225207.48, 149949.9, -3941.61],
|
||||
"seite": "rechts",
|
||||
"hz": 32.34,
|
||||
"comment": "aus DXF: Antrieb FF -> 3D_FF_Umlenk_rechts (Layer z-3 / _3D_Fingerförderer), XY-Abstand 11769.21, Neigung 26.34 Grad; VarioFoerderer. 'winkel' bewusst nicht gesetzt - der Solver waehlt den kleinsten gueltigen Kandidaten. 'seite' ist Default (im DXF nicht ableitbar)."
|
||||
},
|
||||
{
|
||||
"test_id": "VF_HundM05_12",
|
||||
"typ": "standard",
|
||||
"richtung": "Auf",
|
||||
"deltaL": 3450.94,
|
||||
"deltaH": 1885.98,
|
||||
"startpunkt": [227298.92, 152942.18, 0.0],
|
||||
"seite": "rechts",
|
||||
"hz": 106.79,
|
||||
"comment": "aus DXF: Antrieb FF -> 3D_FF_Umlenk_rechts (Layer z-3 / _3D_Fingerförderer), XY-Abstand 3450.94, Neigung 28.66 Grad; VarioFoerderer. 'winkel' bewusst nicht gesetzt - der Solver waehlt den kleinsten gueltigen Kandidaten. 'seite' ist Default (im DXF nicht ableitbar)."
|
||||
},
|
||||
{
|
||||
"test_id": "GF_HundM05_13",
|
||||
"modus": 1,
|
||||
"deltaL_mm": 4078.06,
|
||||
"winkel_grad": 29.82,
|
||||
"hz_grad": 104.2,
|
||||
"start_mm": [227300.62, 152605.32, 2337.74],
|
||||
"as_seite": "links",
|
||||
"es_seite": "links",
|
||||
"as_winkel": "90",
|
||||
"es_winkel": "90",
|
||||
"comment": "aus DXF: 3D_FF_Antrieb_rechts -> Umlenkung FF (Layer _3D_Fingerförderer / z-3), XY-Abstand 4078.06, Neigung 29.82 Grad; Gefaellestrecke, da fallend und Neigung >= 3 Grad. as_/es_seite und -winkel sind Defaults (im DXF nicht ableitbar)."
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Vario_Motorstation_500mm_rechts",
|
||||
"x": 224346.52,
|
||||
"y": 149549.9,
|
||||
"z": 21677.04,
|
||||
"rotation": 90.0,
|
||||
"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"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Vario_Motorstation_500mm_rechts",
|
||||
"x": 223998.19,
|
||||
"y": 149549.84,
|
||||
"z": 2384.8,
|
||||
"rotation": 180.0,
|
||||
"comment": "aus DXF: Block '3D_FF_Antrieb_rechts', Layer '_3D_Fingerförderer', auf Makro-Block 'Vario_Motorstation_500mm_rechts' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Vario_Motorstation_500mm_rechts",
|
||||
"x": 224346.4,
|
||||
"y": 149549.84,
|
||||
"z": 0.0,
|
||||
"rotation": 90.0,
|
||||
"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"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Vario_Kurve_rechts_30_TEF_aussen",
|
||||
"x": 219480.78,
|
||||
"y": 153174.98,
|
||||
"z": 2230.86,
|
||||
"rotation": 270.0,
|
||||
"comment": "aus DXF: Block '3D_FF_Bogen_außen_30°', Layer '_3D_Fingerförderer', auf Makro-Block 'Vario_Kurve_rechts_30_TEF_aussen' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Seite=rechts - bei Bedarf hier im JSON korrigieren"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Vario_Kurve_rechts_30_TEF_innen",
|
||||
"x": 220438.78,
|
||||
"y": 154981.88,
|
||||
"z": 1726.02,
|
||||
"rotation": 90.0,
|
||||
"comment": "aus DXF: Block '3D_FF_Bogen_innen_30°', Layer '_3D_Fingerförderer', auf Makro-Block 'Vario_Kurve_rechts_30_TEF_innen' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Seite=rechts - bei Bedarf hier im JSON korrigieren"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Vario_Kurve_rechts_30_TEF_aussen",
|
||||
"x": 219535.71,
|
||||
"y": 153172.45,
|
||||
"z": 2349.22,
|
||||
"rotation": 270.0,
|
||||
"comment": "aus DXF: Block '3D_ILS_Bogen_30°', Layer '_3D_ILS_Bogen_30°', 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"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Vario_Kurve_rechts_30_TEF_aussen",
|
||||
"x": 220500.01,
|
||||
"y": 154973.55,
|
||||
"z": 1850.0,
|
||||
"rotation": 90.0,
|
||||
"comment": "aus DXF: Block '3D_ILS_Bogen_30°', Layer '_3D_ILS_Bogen_30°', 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"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Vario_Kurve_rechts_30_TEF_aussen",
|
||||
"x": 222776.13,
|
||||
"y": 149549.84,
|
||||
"z": 2335.65,
|
||||
"rotation": 0.0,
|
||||
"comment": "aus DXF: Block '3D_ILS_Bogen_30°', Layer '_3D_ILS_Bogen_30°', 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"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Vario_Kurve_rechts_30_TEF_aussen",
|
||||
"x": 223249.77,
|
||||
"y": 149949.81,
|
||||
"z": 2360.47,
|
||||
"rotation": 0.0,
|
||||
"comment": "aus DXF: Block '3D_ILS_Bogen_30°', Layer '_3D_ILS_Bogen_30°', 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"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "AS_Element_90_rechts",
|
||||
"x": 217765.98,
|
||||
"y": 151472.13,
|
||||
"z": 2099.94,
|
||||
"rotation": 0.0,
|
||||
"comment": "aus DXF: Block 'Ausschleuselement_V3', Layer '_3D_ILS_AE', auf Makro-Block 'AS_Element_90_rechts' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90, Seite=rechts - bei Bedarf hier im JSON korrigieren"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "AS_Element_90_rechts",
|
||||
"x": 221440.62,
|
||||
"y": 151470.0,
|
||||
"z": 2067.0,
|
||||
"rotation": 0.0,
|
||||
"comment": "aus DXF: Block 'Ausschleuselement_V3', Layer '_3D_ILS_AE', auf Makro-Block 'AS_Element_90_rechts' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90, Seite=rechts - bei Bedarf hier im JSON korrigieren"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "AS_Element_90_rechts",
|
||||
"x": 225739.77,
|
||||
"y": 151470.0,
|
||||
"z": 2067.0,
|
||||
"rotation": 0.0,
|
||||
"comment": "aus DXF: Block 'Ausschleuselement_V3', Layer '_3D_ILS_AE', auf Makro-Block 'AS_Element_90_rechts' abgebildet; ACHTUNG geraten (im DXF nicht ableitbar): Winkel=90, Seite=rechts - bei Bedarf hier im JSON korrigieren"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 216525.22,
|
||||
"y": 150670.0,
|
||||
"z": 0.0,
|
||||
"rotation": 0.0,
|
||||
"comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 217622.88,
|
||||
"y": 151470.0,
|
||||
"z": 0.0,
|
||||
"rotation": 180.0,
|
||||
"comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 221298.51,
|
||||
"y": 151470.0,
|
||||
"z": 0.0,
|
||||
"rotation": 180.0,
|
||||
"comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 224908.15,
|
||||
"y": 150670.0,
|
||||
"z": 0.0,
|
||||
"rotation": 0.0,
|
||||
"comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 225508.15,
|
||||
"y": 150670.0,
|
||||
"z": 0.0,
|
||||
"rotation": 0.0,
|
||||
"comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 225597.66,
|
||||
"y": 151470.0,
|
||||
"z": 0.0,
|
||||
"rotation": 180.0,
|
||||
"comment": "aus DXF: Block 'S-LP', Layer '5SEP-LP'; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-SP",
|
||||
"x": 218325.21,
|
||||
"y": 154009.54,
|
||||
"z": 0.0,
|
||||
"rotation": 270.0,
|
||||
"comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-SP",
|
||||
"x": 219542.38,
|
||||
"y": 151961.76,
|
||||
"z": 0.0,
|
||||
"rotation": 90.0,
|
||||
"comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-SP",
|
||||
"x": 220498.95,
|
||||
"y": 155645.73,
|
||||
"z": 0.09,
|
||||
"rotation": 90.0,
|
||||
"comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-SP",
|
||||
"x": 220498.95,
|
||||
"y": 155953.39,
|
||||
"z": 0.09,
|
||||
"rotation": 90.0,
|
||||
"comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-SP",
|
||||
"x": 222000.85,
|
||||
"y": 155698.7,
|
||||
"z": 0.0,
|
||||
"rotation": 270.0,
|
||||
"comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-SP",
|
||||
"x": 222153.05,
|
||||
"y": 149875.67,
|
||||
"z": 0.0,
|
||||
"rotation": 330.0,
|
||||
"comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-SP",
|
||||
"x": 223150.84,
|
||||
"y": 151972.72,
|
||||
"z": -7.54,
|
||||
"rotation": 90.0,
|
||||
"comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-SP",
|
||||
"x": 223617.86,
|
||||
"y": 149949.84,
|
||||
"z": 0.0,
|
||||
"rotation": 0.0,
|
||||
"comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-SP",
|
||||
"x": 226300.0,
|
||||
"y": 155718.69,
|
||||
"z": 0.0,
|
||||
"rotation": 270.0,
|
||||
"comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-SP",
|
||||
"x": 227300.01,
|
||||
"y": 151981.61,
|
||||
"z": -7.54,
|
||||
"rotation": 90.0,
|
||||
"comment": "aus DXF: Block 'S-SP', Layer '5SEP-SP'; Block 'S-SP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 217622.88,
|
||||
"y": 151190.0,
|
||||
"z": 0.0,
|
||||
"rotation": 270.0,
|
||||
"comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 220218.95,
|
||||
"y": 155609.84,
|
||||
"z": 0.09,
|
||||
"rotation": 180.0,
|
||||
"comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 221298.51,
|
||||
"y": 151190.0,
|
||||
"z": 0.0,
|
||||
"rotation": 270.0,
|
||||
"comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 222013.05,
|
||||
"y": 149633.18,
|
||||
"z": 0.0,
|
||||
"rotation": 240.0,
|
||||
"comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 223617.86,
|
||||
"y": 149669.84,
|
||||
"z": 0.0,
|
||||
"rotation": 270.0,
|
||||
"comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 224882.1,
|
||||
"y": 150392.28,
|
||||
"z": 0.0,
|
||||
"rotation": 270.0,
|
||||
"comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 225597.66,
|
||||
"y": 151190.0,
|
||||
"z": 0.0,
|
||||
"rotation": 270.0,
|
||||
"comment": "aus DXF: Block 'SCAN', Layer 'ZZSCANNER', auf Makro-Block 'Scanner' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Separator_SP",
|
||||
"x": 218326.39,
|
||||
"y": 153912.84,
|
||||
"z": 2066.06,
|
||||
"rotation": 0.0,
|
||||
"comment": "aus DXF: Block 'Separator 200000070', Layer '_3D_Separator', auf Makro-Block 'Separator_SP' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Separator_SP",
|
||||
"x": 219544.61,
|
||||
"y": 152086.0,
|
||||
"z": 2318.68,
|
||||
"rotation": 180.29,
|
||||
"comment": "aus DXF: Block 'Separator 200000070', Layer '_3D_Separator', auf Makro-Block 'Separator_SP' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Separator_SP",
|
||||
"x": 220500.0,
|
||||
"y": 155763.99,
|
||||
"z": 1876.16,
|
||||
"rotation": 180.0,
|
||||
"comment": "aus DXF: Block 'Separator 200000070', Layer '_3D_Separator', auf Makro-Block 'Separator_SP' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Separator_SP",
|
||||
"x": 222001.54,
|
||||
"y": 155600.71,
|
||||
"z": 1923.14,
|
||||
"rotation": 359.97,
|
||||
"comment": "aus DXF: Block 'Separator 200000070', Layer '_3D_Separator', auf Makro-Block 'Separator_SP' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Separator_SP",
|
||||
"x": 222001.69,
|
||||
"y": 155900.21,
|
||||
"z": 1905.78,
|
||||
"rotation": 359.97,
|
||||
"comment": "aus DXF: Block 'Separator 200000070', Layer '_3D_Separator', auf Makro-Block 'Separator_SP' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Separator_SP",
|
||||
"x": 222201.22,
|
||||
"y": 149847.53,
|
||||
"z": 2318.04,
|
||||
"rotation": 60.49,
|
||||
"comment": "aus DXF: Block 'Separator 200000070', Layer '_3D_Separator', auf Makro-Block 'Separator_SP' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Separator_SP",
|
||||
"x": 223149.87,
|
||||
"y": 152086.02,
|
||||
"z": 2318.68,
|
||||
"rotation": 180.29,
|
||||
"comment": "aus DXF: Block 'Separator 200000070', Layer '_3D_Separator', auf Makro-Block 'Separator_SP' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Separator_SP",
|
||||
"x": 223747.95,
|
||||
"y": 149950.46,
|
||||
"z": 2386.66,
|
||||
"rotation": 90.81,
|
||||
"comment": "aus DXF: Block 'Separator 200000070', Layer '_3D_Separator', auf Makro-Block 'Separator_SP' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Separator_SP",
|
||||
"x": 226300.69,
|
||||
"y": 155600.71,
|
||||
"z": 1923.14,
|
||||
"rotation": 359.97,
|
||||
"comment": "aus DXF: Block 'Separator 200000070', Layer '_3D_Separator', auf Makro-Block 'Separator_SP' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Separator_SP",
|
||||
"x": 226300.84,
|
||||
"y": 155900.21,
|
||||
"z": 1905.78,
|
||||
"rotation": 359.97,
|
||||
"comment": "aus DXF: Block 'Separator 200000070', Layer '_3D_Separator', auf Makro-Block 'Separator_SP' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "Separator_SP",
|
||||
"x": 227298.05,
|
||||
"y": 152086.02,
|
||||
"z": 2318.68,
|
||||
"rotation": 180.29,
|
||||
"comment": "aus DXF: Block 'Separator 200000070', Layer '_3D_Separator', auf Makro-Block 'Separator_SP' abgebildet"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 216630.12,
|
||||
"y": 150670.0,
|
||||
"z": 2167.0,
|
||||
"rotation": 90.0,
|
||||
"comment": "aus DXF: Block 'Separator LP 3D', Layer '_3D_Separator', auf Makro-Block 'S-LP' abgebildet; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 217517.98,
|
||||
"y": 151470.0,
|
||||
"z": 2167.0,
|
||||
"rotation": 270.0,
|
||||
"comment": "aus DXF: Block 'Separator LP 3D', Layer '_3D_Separator', auf Makro-Block 'S-LP' abgebildet; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 221193.61,
|
||||
"y": 151470.0,
|
||||
"z": 2167.0,
|
||||
"rotation": 270.0,
|
||||
"comment": "aus DXF: Block 'Separator LP 3D', Layer '_3D_Separator', auf Makro-Block 'S-LP' abgebildet; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 225013.06,
|
||||
"y": 150670.0,
|
||||
"z": 2167.0,
|
||||
"rotation": 90.0,
|
||||
"comment": "aus DXF: Block 'Separator LP 3D', Layer '_3D_Separator', auf Makro-Block 'S-LP' abgebildet; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 225492.76,
|
||||
"y": 151470.0,
|
||||
"z": 2167.0,
|
||||
"rotation": 270.0,
|
||||
"comment": "aus DXF: Block 'Separator LP 3D', Layer '_3D_Separator', auf Makro-Block 'S-LP' abgebildet; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
},
|
||||
{
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 225613.06,
|
||||
"y": 150670.0,
|
||||
"z": 2167.0,
|
||||
"rotation": 90.0,
|
||||
"comment": "aus DXF: Block 'Separator LP 3D', Layer '_3D_Separator', auf Makro-Block 'S-LP' abgebildet; Block 'S-LP' ist in data/ils/ NICHT vorhanden - erzeugt im Testlauf einen Platzhalter"
|
||||
}
|
||||
]
|
||||
Vendored
+37
-7
@@ -52,7 +52,7 @@
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 400,
|
||||
"y": -3815,
|
||||
"y": -4038,
|
||||
"z": 1467,
|
||||
"rotation": 90,
|
||||
"assigned_to": "Kreisel_links"
|
||||
@@ -62,7 +62,7 @@
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 400,
|
||||
"y": -3925,
|
||||
"y": -4083,
|
||||
"z": 1467,
|
||||
"rotation": 0,
|
||||
"assigned_to": "Kreisel_links"
|
||||
@@ -83,7 +83,7 @@
|
||||
"block": "Scanner",
|
||||
"x": 10310,
|
||||
"y": -610,
|
||||
"z": 1467,
|
||||
"z": 1941,
|
||||
"rotation": 0,
|
||||
"assigned_to": "Kreisel_rechts"
|
||||
},
|
||||
@@ -264,13 +264,23 @@
|
||||
"rotation": 180,
|
||||
"assigned_to": "Kreisel_unten"
|
||||
},
|
||||
{
|
||||
"comment": "Scanner unterer Kreisel",
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 1415,
|
||||
"y": -5100,
|
||||
"z": 1467,
|
||||
"rotation": 270,
|
||||
"assigned_to": "Kreisel_unten"
|
||||
},
|
||||
{
|
||||
"comment": "Separator S-LP #11 Y-Abgleich mit Gefaellestrecken (Sep-Y=8777, GF_Mubea_04-Y=9126, diff=349mm, enger Treffer)",
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 9510,
|
||||
"y": 13649,
|
||||
"z": 1467,
|
||||
"y": 14334,
|
||||
"z": 1941,
|
||||
"rotation": 270,
|
||||
"assigned_to": "Kreisel_rechts"
|
||||
},
|
||||
@@ -293,13 +303,33 @@
|
||||
"z": 1941,
|
||||
"rotation": 90,
|
||||
"assigned_to": "Kreisel_rechts"
|
||||
},
|
||||
{
|
||||
"comment": "Separator Eingang 3 Rechter_Kreisel",
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 10310,
|
||||
"y": -5073,
|
||||
"z": 1941,
|
||||
"rotation": 90,
|
||||
"assigned_to": "Kreisel_rechts"
|
||||
},
|
||||
{
|
||||
"comment": "",
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 8725,
|
||||
"y": -4743,
|
||||
"z": 1941,
|
||||
"rotation": 180,
|
||||
"assigned_to": "GF_Mubea"
|
||||
},
|
||||
{
|
||||
"comment": "Separator S-LP #8 Y-Abgleich mit Gefaellestrecken (Sep-Y=-4823, GF_Mubea_20-Y=-3673, diff=1150mm, naechstgelegene Reihe, kein enger Treffer)",
|
||||
"function": "insert",
|
||||
"block": "S-LP",
|
||||
"x": 9510,
|
||||
"y": -3887,
|
||||
"y": -3636,
|
||||
"z": 1941,
|
||||
"rotation": 270,
|
||||
"assigned_to": "GF_Mubea_20"
|
||||
@@ -309,7 +339,7 @@
|
||||
"function": "insert",
|
||||
"block": "Scanner",
|
||||
"x": 9510,
|
||||
"y": -3787,
|
||||
"y": -3557,
|
||||
"z": 1941,
|
||||
"rotation": 0,
|
||||
"assigned_to": "Kreisel_rechts"
|
||||
|
||||
Vendored
+48
-1
@@ -49,6 +49,7 @@ Grad). Richtung `hz`/`hz_grad`: 0=Ost(+X), 90=Nord(+Y), 180=West(-X),
|
||||
| 4.3 | Omniflo TEF/Zubehoer | `omni:insert-dxf` (fester Sivasnr) | Position ja, Punkt interaktiv | 1 Punkt (nur via Wrapper) | [#43](#43-omniflo-tefzubehoer) |
|
||||
| 4.4 | Omniflo TV_*/APBW_* | — (DUMMY) | **nein** | — | [#44](#44-omniflo-tv_-apbw_) |
|
||||
| 5 | Separator/Scanner/Sensor | `ils-insert-sensor (fname)` + `_.INSERT` | **nein** (Schleife) | 1 Punkt `x,y,z` (nur via Wrapper) | [#5](#5-separatorscannersensor) |
|
||||
| 6 | Waagrechte Foerderstrecke (`gerade`) | `insert-hz-scaled-block-by-ks (blockname startpunkt laenge hz vert)` | **ja** | 1 Punkt `startpunkt` (+ `endpunkt` als Doku) | [#6](#6-waagrechte-foerderstrecke-gerade) |
|
||||
|
||||
Legende Scriptbar-Spalte:
|
||||
- **ja** — direkt per JSON aufrufbar.
|
||||
@@ -541,7 +542,53 @@ Vollstaendiges JSON (wie in `mubea.json`s Separator-Eintraegen):
|
||||
|
||||
---
|
||||
|
||||
## 6. Zusammenfassung: scriptbar vs. nicht scriptbar
|
||||
## 6. Waagrechte Foerderstrecke (`gerade`)
|
||||
|
||||
Produktionsfunktion:
|
||||
`insert-hz-scaled-block-by-ks (blockname startpunkt laenge hz-winkel vert-winkel)`
|
||||
(`Lisp/vf_etage.lsp`) — dieselbe Primitive, mit der der Etage-Foerderer seine
|
||||
waagrechten Abschnitte baut. Skaliert `Staustrecke_SP_1000_mm` auf `laenge`
|
||||
(Massstab = `laenge / 1000`) und richtet sie ueber `KS_EIN`/`KS_AUS` am
|
||||
`startpunkt` aus.
|
||||
|
||||
Dieser Typ entstand beim Nachbau von `results/ST500592_05.dxf`: ein
|
||||
Antriebs-/Umlenkstation-Paar **ohne** Hoehendifferenz ist fachlich kein
|
||||
VarioFoerderer. Dessen Solver (`berechne-standard` →
|
||||
`berechne-alle-winkel`) muss einen Bogenwinkel aus der Kandidatenliste
|
||||
3…51 Grad waehlen, was bei `deltaH ≈ 0` nicht aufgeht — der Eintrag waere
|
||||
unbaubar. `lib/dxf_scan_components.py` trennt solche Paare darum ueber
|
||||
`GERADE_MAX_DELTA_H` (10 mm) ab und gibt sie als `gerade` aus.
|
||||
|
||||
| Feld | Typ | Pflicht | Bedeutung | Default |
|
||||
|---|---|---|---|---|
|
||||
| `test_id` | string | **ja** | Kennung, Praefix `GERADE_` (steuert den Dispatcher) | - |
|
||||
| `typ` | string | nein | `"gerade"` (Dokumentation, nicht ausgewertet) | - |
|
||||
| `laenge` | real (mm) | **ja** | horizontale Laenge; Massstab der Staustrecke | - |
|
||||
| `hz` | real (Grad) | nein | Fahrtrichtung in der XY-Ebene | 0.0 |
|
||||
| `startpunkt` | [x,y,z] (mm) | **ja** | Anfangspunkt (`KS_EIN` wird hierhin gelegt) | - |
|
||||
| `endpunkt` | [x,y,z] (mm) | nein | Endpunkt — reine Dokumentation/Herkunft, **kein** Parameter; die Geometrie folgt aus `startpunkt` + `laenge` + `hz` | - |
|
||||
|
||||
`vert-winkel` wird vom Treiber fest auf `0` gesetzt (waagrecht). Die Funktion
|
||||
gibt den **Ausgangspunkt** zurueck, nicht die Entity — ein Treiber holt den
|
||||
Block ueber `(entlast)`. Bei fehlender Blockdatei ruft sie `(exit)` auf und
|
||||
wuerde einen Testlauf abbrechen, darum vorher mit `ssg-ils-block-laden`
|
||||
pruefen (so macht es `hundm05:build-gerade` in `tests/test_hundm05.lsp`).
|
||||
|
||||
Vollstaendiges JSON (wie in `hundm05.json`):
|
||||
```json
|
||||
{
|
||||
"test_id": "GERADE_HundM05_08",
|
||||
"typ": "gerade",
|
||||
"laenge": 3305.26,
|
||||
"hz": 143.35,
|
||||
"startpunkt": [223150.89, 152953.65, 0.0],
|
||||
"endpunkt": [220499.01, 154926.53, 0.0]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Zusammenfassung: scriptbar vs. nicht scriptbar
|
||||
|
||||
| Element | Produktionsfunktion | Scriptbar? |
|
||||
|---|---|---|
|
||||
|
||||
Reference in New Issue
Block a user