Files
dxfmakros/doc/cad-datenaufbereitung.md
T

7.9 KiB

Datenaufbereitung der CAD-Bausteine

Kurzanleitung fuer alle, die neue CAD-Modelle (DWG/DXF-Bausteine) fuer die SSG_LIB-Makros anlegen oder bestehende ersetzen.

Hier finden Sie Antworten auf folgende Fragen:

  1. Wo sind Koordinatensysteme anzusetzen?
  2. Wie muessen sie heissen?
  3. Wie werden 3D-Modelle anhand der 2.5D-Skelette platziert?
  4. Wo und wie werden die Dateien abgelegt?

Am Ende steht eine Checkliste.


1. Wo sind Koordinatensysteme anzusetzen?

Ein Koordinatensystem (KS) markiert einen Anschlusspunkt: die Stelle, an der ein Baustein an seinen Vorgaenger bzw. Nachfolger andockt. Es sitzt immer auf der Mittellinie der Foerderstrecke (dem Skelett, siehe Abschnitt 3), genau am Uebergang zum Nachbarteil.

Aufbau eines KS - ein kleiner Block mit drei LINEs, alle ab demselben Ursprung:

Achse Farbe Laenge Richtung
X rot (1) 1 Foerderrichtung (bzw. Anschlussrichtung, siehe unten)
Y gruen (3) 2 quer dazu, nach links
Z blau (5) 3 nach oben, aus der Zeichenebene

Die Makros erkennen die Achsen nur an der Linienlaenge (1 = X, 2 = Y, 3 = Z; X darf auch 100 lang sein). Farben dienen nur der Lesbarkeit. Der KS-Block liegt auf Layer _KOORDINATENSYSTEME und muss direkt (eine Ebene tief) im Baustein eingefuegt sein, nicht in einem weiteren Unterblock.

ILS-Kettenbausteine (Vario, Gefaelle, AS/ES, Staustrecke, Separator ...)

  • KS_EIN am Einlauf, KS_AUS am Auslauf.
  • Bei beiden zeigt die X-Achse in Foerderrichtung. Beim Verketten kommt das KS_EIN des Nachfolgers auf das KS_AUS des Vorgaengers; die Richtung des Folgebausteins wird aus der X-Achse von KS_AUS gemessen (z.B. beim Kettenfoerderer).
  • Laengenvariable Teile (Staustrecke, KF_LAENGE) liegen entlang +X und werden in X skaliert - KS_EIN bei X=0, KS_AUS am Ende der Referenzlaenge (z.B. 1000 mm).

Omniflo-Boegen und -Weichen

  • Anschluss-KS heissen K1 bis K4. Die X-Achse zeigt jeweils in das Element hinein (tangential zur Linie).
  • Zuordnung:
KS Boegen Weichen
K1 Beginn der obersten waagerechten Linie, X nach rechts Beginn der untersten senkrechten Linie, X nach oben
K2 anderes Kettenende Ende des linken Bogenzweigs
K3 - Ende des rechten Bogenzweigs (nur bei 2+ Boegen)
K4 - oberes Ende der K1-Linie (nicht bei Doppel-/Dreifach-/Deltaweiche)
  • K1-K4 muessen nicht von Hand gezeichnet werden: lib/set_koords.py --set-all setzt sie geometrisch, vorher setzt bin\set_einfuegepunkt.bat (lib/set_einfuegepkt.py) den Einfuegepunkt. Details: tools.md.

Bausteine ohne KS

Einzeln frei platzierte Teile (Kreisel-Raeder AN8/SP8, BTMT-Stationen, Scanner, Eingang/Ausgang, Geruestteile) brauchen kein KS. Hier zaehlt nur der Einfuegepunkt (Basispunkt der DWG), siehe Abschnitt 3.


2. Wie muessen die Koordinatensysteme heissen?

Name Verwendung
KS_EIN Einlauf eines ILS-Kettenbausteins
KS_AUS Auslauf eines ILS-Kettenbausteins
K1 ... K4 Anschluesse von Omniflo-Boegen/-Weichen
  • Genau diese Schreibweise, ohne _2D/_3D-Suffix (die KS-Bloecke sind dimensionsunabhaengig und in 2D- und 3D-Variante identisch).
  • Je Baustein jedes KS nur einmal.
  • KSYS_EIN/KSYS_AUS werden aus Altbestaenden noch gelesen, fuer neue Modelle aber nicht mehr verwenden.

3. Grundidee: Platzierung ueber das 2.5D-Skelett

Skelett = die Mittellinie der Foerderstrecke als einfache Linien/Boegen. "2.5D", weil es eine flache Grundriss-Geometrie ist, deren Punkte zusaetzlich eine Hoehe (Z) tragen - keine echte 3D-Konstruktion.

Das Prinzip hat zwei Seiten:

a) Im Baustein selbst ist das Skelett die Bezugsgeometrie:

  • Die 2D-Variante ist das Skelett (plus Symbolik).
  • Das 3D-Modell enthaelt dieselben 2D-Skelettlinien in seiner Grundebene. Einfuegepunkt und KS liegen auf diesem Skelett - deshalb sind sie in 2D- und 3D-Variante deckungsgleich und die Varianten beliebig austauschbar. Die Omniflo-Werkzeuge (set_einfuegepkt.py, set_koords.py) werten genau diese Skelettlinien aus; ohne sie funktionieren sie bei 3D-Dateien nicht.
  • Gezeichnet wird in der Lage "Foerderrichtung = +X, Z nach oben". Einzige Ausnahme: aufrecht eingebaute Teile wie der Kettenfoerderer (KF_*) sind in XY gezeichnet (Y = Hoehe) und werden vom Makro aufgerichtet.

b) In der Anlage liefert der Anwender bzw. das Makro das Skelett (geklickte Punkte, gezeichneter Linienzug, Hoehen). Die Makros setzen die Bausteine darauf nacheinander:

  1. KS_EIN des Bausteins auf den aktuellen Skelettpunkt legen.
  2. Drehen: um Z nach der Grundriss-Richtung des Segments, um Y nach dessen Neigung (Rz * Ry).
  3. Laengenteile in X auf die Segmentlaenge skalieren.
  4. Weltlage von KS_AUS lesen = Startpunkt des naechsten Bausteins.

Freistehende Teile ohne KS werden nur mit Einfuegepunkt + Drehung gesetzt (z.B. AN8 mit dem Basispunkt in der Radmitte).

Weil 3D-Modell und 2D-Symbol am selben Skelett haengen, kann jede Anlage wahlweise in 2D oder 3D aufgebaut und spaeter umgeschaltet werden.


4. Datenablage und Benennung

Grundregeln:

  • Eine Datei je Baustein, Dateiname = Blockname.
  • Namen nur ASCII, ohne Umlaute und Leerzeichen (ae/oe/ue, _ als Trenner).
  • Der Basispunkt der DWG ist der Einfuegepunkt (s. Abschnitt 3).
Bereich Ablage Benennung
ILS (Kreisel, Vario, Gefaelle, AS/ES, Stationen, Sensoren) data/ils/ flach <Name>_2D.dwg und <Name>_3D.dwg, z.B. AS_Element_30_links_3D.dwg. Fehlt die 2D-Datei, wird automatisch die 3D-Datei genommen
Omniflo-Boegen/-Weichen data/omniflo/2D/ bzw. data/omniflo/3D/ Sivas-Nummer, .dxf, z.B. 821104024.dxf; Kombinationen mit +, z.B. 821104024+0_B10081.dxf
Omniflo-Verbinder data/omniflo/Verbinder/ dimensionsunabhaengig, z.B. TV_AP60-ST_kpl.dwg
Kettenfoerderer data/omniflo/2D/ ohne Suffix: KF_UM_26, KF_AN_30, KF_LAENGE, KF_2D
Geruest data/geruest/ Artikelnummer, z.B. 821006031.dwg; Platzhalter dummy_*.dwg
DIN-Rahmen/Schriftkoepfe cfg/rahmen/ A0.DWG ... Kopf11.dwg

Zugehoerige Daten (Masse, Sivas-/Artikelnummern, Auswahllisten) liegen nicht in der DWG, sondern in data/json/ - z.B. omniflo_boegen.json, omniflo_weichen.json, geruest.json, kettenfoerderer.json. Ein neues Omniflo- oder Geruestteil ist erst auswaehlbar, wenn es dort eingetragen ist.

Attribute und Layer:

  • Bloecke, die nur eingefuegt werden, tragen ihren Ziel-Layer als Attribut LAYER (Vorgaben je Block in data/ils/allocations.json, z.B. AN8_2D -> ILS_ANTR, AN8_3D -> _3D_ILS_ANTR).
  • Ein leeres ID-Attribut mit anlegen - nur dann kann die automatische ID-Vergabe fuer den Export es befuellen.
  • Omniflo-Teile brauchen fuer den Export TEILEART (Omniflo ...) und ARTINR.
  • Layer/Farbe zusammengebauter Baugruppen (KREISEL_n, VF_n, GF_n) stehen nicht im Modell, sondern in cfg/layer.cfg.

5. Checkliste fuer ein neues Modell

  • Dateiname nach Tabelle in Abschnitt 4, ASCII, im richtigen Ordner
  • ILS: 2D- und 3D-Variante, Basispunkt und KS deckungsgleich
  • 3D-Modell enthaelt die 2D-Skelettlinien
  • Foerderrichtung entlang +X, Z nach oben
  • Kettenbaustein: KS_EIN/KS_AUS direkt im Block, X in Foerderrichtung, Achslaengen 1/2/3
  • Omniflo: set_einfuegepkt.py und set_koords.py --set-all gelaufen, Kontrolle per --show-omniflo
  • Attribute LAYER und leeres ID vorhanden (Omniflo zusaetzlich TEILEART, ARTINR)
  • Eintrag in der passenden JSON unter data/json/ bzw. allocations.json
  • In BricsCAD einmal ueber das Menue einfuegen/verketten und pruefen, dass der Anschluss sauber sitzt