Files
dxfmakros/cfg/io_regeln.json
T
Michael StanglandClaude Opus 5.5 8abb6b3c65 feat: HW Planung - Symbole erzeugen, Nummerierung, Ausgabeziel-Dialog
- Symbole erzeugen (HW_SYMBOLE, Einzelbefehle HW_SYM_*): Bauteile nach
  cfg/io_regeln.json (reduzierte Kopie aus kabellaengen), Symbole aus
  cfg/hw_symbole.json katalog-identisch nachgebaut (lib/hw_symbole.py),
  REALE_POSITION mit x auf dem Bauteil, Paare uebereinander, Ausweichen
  in y ohne Ueberlappung
- Symbole nummerieren (HW_NUMMERIEREN): lib/create_numbers.py samt
  error_collector.py und cfg/enumerate.cfg aus kabellaengen uebernommen
- Ausgabeziel per Dialog dcl/hw_ausgabe.dcl: aktuelle Zeichnung,
  bestehende Datei ergaenzen oder neue Datei
- Materialfluss mit XDATA SSG_HW_MF, ergaenzt vorhandene Datei
- Doku doc/hw_planung.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 16:39:37 +01:00

43 lines
3.4 KiB
JSON

{
"_kommentar": "Regelwerk fuer die Symbolerzeugung der HW-Planung (Lisp/HwPlanung.lsp, HW_SYMBOLE): welche E-Geraete (Sensoren, Aktoren, Motoren) an welchem Anlagenbauteil sitzen und mit welchem Katalogsymbol sie gezeichnet werden. Uebernommen aus kabellaengen/cfg/io_regeln.json (dort Grundlage der Pruefung io_zuordnung_pruefen.py, abgeleitet aus Mubea, Stand 2026-10-30); hier nur noch die Teile, die zum Erzeugen noetig sind. Erkennungs-Regex, Suchradien, Nummernpaare und der Konverter-Abschnitt altZuNeu sind entfallen - die Nummern vergibt create_numbers.py entlang der Renamer-Bereiche.",
"_io_vorlage": "Geraete-ID beim Erzeugen = praefix + io_vorlage (z.B. MB1@@@). Die '@' ersetzt erst die Nummerierung (HW_NUMMERIEREN, lib/create_numbers.py) entlang der Renamer-Bereiche; die Anzahl '@' muss zum NAME-Muster des Renamer-Blocks passen (z.B. BG-1@@@).",
"io_vorlage": "1@@@",
"_rollen": "rolle -> Geraete-Praefix und Symbol (Blockname; Aussehen, Layer und Attribute stehen in cfg/hw_symbole.json). block_nach_name: wcmatch-Muster auf den Blocknamen des Bauteils -> abweichender Katalogblock (erster Treffer gewinnt).",
"rollen": [
{"rolle": "sep_ventil", "praefix": "MB", "block": "ILS_Separator-Ausgang"},
{"rolle": "sep_sensor", "praefix": "BG", "block": "ILS_720002003-Separator"},
{"rolle": "ae_ventil", "praefix": "MB", "block": "ILS_Weiche-Abzweig-Ausgang"},
{"rolle": "kreisel_motor", "praefix": "MA", "block": "ILS_Motor-400102811-Kreisel"},
{"rolle": "vario_motor", "praefix": "MA", "block": "ILS_Motor-200000020-VARIO-links",
"block_nach_name": [{"muster": "*RECHTS*", "block": "ILS_Motor-200000021-VARIO-rechts"}]},
{"rolle": "motorschutz", "praefix": "FC", "block": "ILS_Motorschutz"},
{"rolle": "rad_dreht", "praefix": "BG", "block": "ILS_720002011-Rad dreht"},
{"rolle": "encoder", "praefix": "GF", "block": "ILS_829624040-Encoder-800"},
{"rolle": "finger", "praefix": "BG", "block": "ILS_200000375-Finger in Position"},
{"rolle": "pc_in_pos", "praefix": "BG", "block": "ILS_200000248-PC in Position"},
{"rolle": "scanner", "praefix": "BX", "block": "ILS_Scanner-829534306"}
],
"_bauteile": "Mechanik-Bloecke (wcmatch, Gross/Klein egal; auch verschachtelt in VF_n/GF_n/KREISEL_n) und die Rollen, die an jedem davon sitzen. Jeder Eintrag in benoetigt ist eine Liste von Alternativen - erzeugt wird die ERSTE. Die Reihenfolge ist zugleich die Stapelfolge der Symbole am Bauteil (erstes oben).",
"bauteile": [
{"bauteil": "separator", "bloecke": ["Separator_SP*", "Separator_LP*", "S-SP", "S-LP"],
"benoetigt": [["sep_ventil"], ["sep_sensor"]]},
{"bauteil": "ausschleuser", "bloecke": ["AS_Element*", "AE-D", "AE DS"],
"benoetigt": [["ae_ventil"]]},
{"bauteil": "entladung", "bloecke": ["SC_Entladung*"],
"benoetigt": [["ae_ventil"]]},
{"bauteil": "kreisel_antrieb", "bloecke": ["AN8", "AN8_*"],
"benoetigt": [["kreisel_motor"], ["motorschutz"]]},
{"bauteil": "kreisel_spannstation", "bloecke": ["SP8", "SP8_*"],
"benoetigt": [["rad_dreht", "encoder"]]},
{"bauteil": "vario_motorstation", "bloecke": ["Vario_Motorstation*", "Motorstation*"],
"benoetigt": [["vario_motor"], ["motorschutz"]]},
{"bauteil": "vario_umlenkstation", "bloecke": ["Vario_Umlenkstation*", "Umlenkstation*"],
"benoetigt": [["finger"], ["pc_in_pos"]]},
{"bauteil": "scanner", "bloecke": ["Scanner*", "SCAN"],
"benoetigt": [["scanner"]]}
]
}