Files
sps_skel/cfg/dxf_registration.json
T
Samer AyadiandClaude Opus 5.5 df24cf5adb hw_import + merge_hw_layout: Hardwareplanung einlesen und mit dem Layout zusammenfuehren
Stufen 2 und 3 aus doc/Konzept_Layout_Hardware_SCL.md:

- lib/hw_import.py: TIA-Import (*_TIA.xlsx, ohne openpyxl gelesen) +
  Positionsdatei (*_positionsconv.json) -> <projekt>_hw.json: je BMK
  Adresse, Index-Konstante, VERW, Station, Lage, Foerderer (K0102, #106 ->
  K0106); Antriebe MA/FC/GF; Gegenpruefung beider Quellen.
- lib/merge_hw_layout.py: <csv>_tro.json + <projekt>_hw.json ->
  <csv>_anlage.json (model.AnlageDocument): bindings je TRO-ID + Slot +
  Rolle mit Konstante und Adresse, Foerderer per Mehrheit (Mubea: K0102 =
  Kreisel3, K0104 = Kreisel2, K0105 = Kreisel1), Handkorrekturen
  cfg/hw_overrides.ini. Zuordnungslogik aus e_planning.py hierher
  verschoben; e_planning re-exportiert sie, Ergebnis unveraendert.
- TRO-JSON traegt optional `parts` (Lage/Huellbox, tro_flow --json),
  PinStore bekommt Slots line<n>.
- Gespeicherter Lagebezug mit SHA-256 der Positionsdatei; Unterordner in
  Eingabenamen relativ zu SKEL_DATA.
- Doku: Python_Scripts.md 5d/5e, Konzept, E-Planung_Bruecke (Abgleich
  mubea_layout.dxf / CSV / E-Planung).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 16:16:10 +02:00

88 lines
3.0 KiB
JSON

{
"mubea.csv|500573_60_1.dxf": {
"dx": 50833.7283274331,
"dy": 8414.490373798908,
"rotation": 0.0,
"source": "auto",
"anchor": "20 exakte Treffer (<= 50 mm) ueber die Rollen Scanner:8, Separator:38; 22 Stimmen im 100-mm-Raster, 6 Kandidaten geprueft",
"matched": 36,
"candidates": 46,
"residual_max": 487.77757110283585,
"residual_mean": 93.12692369578822,
"csv_file": "mubea.csv",
"dxf_file": "500573_60_1.dxf",
"created": "2026-10-02 12:45"
},
"export.csv|Mubea.dxf": {
"dx": 59.950000000000045,
"dy": 0.0,
"rotation": 0.0,
"source": "auto",
"anchor": "21 exakte Treffer (<= 50 mm) ueber die Rollen Scanner:8, Separator:35; 21 Stimmen im 100-mm-Raster, 6 Kandidaten geprueft",
"matched": 43,
"candidates": 43,
"residual_max": 419.95000000000005,
"residual_mean": 90.1746667187897,
"csv_file": "export.csv",
"dxf_file": "Mubea.dxf",
"created": "2026-08-12 10:09"
},
"HundM05.csv|HundM05.dxf": {
"dx": 0.0,
"dy": 0.0,
"rotation": 0.0,
"source": "cli",
"anchor": "von Hand: CSV aus derselben dxfmakros-Zeichnung exportiert, Koordinaten identisch (Auto-Ermittlung sieht die in VF_/KREISEL_-Bloecken verschachtelten Separatoren nicht und war mehrdeutig)",
"matched": 14,
"candidates": 26,
"residual_max": 360.0,
"residual_mean": 164.97465794329284,
"csv_file": "HundM05.csv",
"dxf_file": "HundM05.dxf",
"created": "2026-10-02 13:40"
},
"mubea.csv|mubea.dxf": {
"dx": 0.0,
"dy": 0.0,
"rotation": 0.0,
"source": "cli",
"anchor": "von Hand: CSV aus derselben dxfmakros-Zeichnung exportiert, Koordinaten identisch (Auto-Ermittlung sieht die in VF_/KREISEL_-Bloecken verschachtelten Separatoren nicht und war mehrdeutig)",
"matched": 20,
"candidates": 46,
"residual_max": 360.0,
"residual_mean": 256.77327549812964,
"csv_file": "mubea.csv",
"dxf_file": "mubea.dxf",
"created": "2026-10-02 13:40"
},
"dematic.csv|dematic_TST.dxf": {
"dx": 0.0,
"dy": 360.0,
"rotation": 0.0,
"source": "auto",
"anchor": "6 exakte Treffer (<= 50 mm) ueber die Rollen Scanner:6, Separator:52; 6 Stimmen im 100-mm-Raster, 2 Kandidaten geprueft",
"matched": 17,
"candidates": 58,
"residual_max": 419.9499999999998,
"residual_mean": 235.56575392994918,
"csv_file": "dematic.csv",
"dxf_file": "dematic_TST.dxf",
"created": "2026-10-06 14:19"
},
"mubea.csv|Mubea_positionsconv.json": {
"dx": -151.4000000000001,
"dy": -696.5699999999997,
"rotation": 0.0,
"source": "auto",
"anchor": "20 exakte Treffer (<= 50 mm) ueber die Rollen Separator:38; 20 Stimmen im 100-mm-Raster, 6 Kandidaten geprueft",
"matched": 23,
"candidates": 38,
"residual_max": 541.020430390572,
"residual_mean": 52.985147546665765,
"csv_file": "mubea.csv",
"dxf_file": "Mubea_positionsconv.json",
"created": "2026-10-15 13:15",
"fingerprint": "085df1af63e4b71d8a51301ea0c6e7812d415b5efd0c6b409c58cf2cb77ba4e2"
}
}