Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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:
- Wo sind Koordinatensysteme anzusetzen?
- Wie muessen sie heissen?
- Wie werden 3D-Modelle anhand der 2.5D-Skelette platziert?
- 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_EINam Einlauf,KS_AUSam Auslauf.- Bei beiden zeigt die X-Achse in Foerderrichtung. Beim Verketten
kommt das
KS_EINdes Nachfolgers auf dasKS_AUSdes Vorgaengers; die Richtung des Folgebausteins wird aus der X-Achse vonKS_AUSgemessen (z.B. beim Kettenfoerderer). - Laengenvariable Teile (Staustrecke,
KF_LAENGE) liegen entlang +X und werden in X skaliert -KS_EINbei X=0,KS_AUSam Ende der Referenzlaenge (z.B. 1000 mm).
Omniflo-Boegen und -Weichen
- Anschluss-KS heissen
K1bisK4. 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-allsetzt sie geometrisch, vorher setztbin\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_AUSwerden 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:
KS_EINdes Bausteins auf den aktuellen Skelettpunkt legen.- Drehen: um Z nach der Grundriss-Richtung des Segments, um Y nach dessen Neigung (Rz * Ry).
- Laengenteile in X auf die Segmentlaenge skalieren.
- Weltlage von
KS_AUSlesen = 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 indata/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 ...) undARTINR. - Layer/Farbe zusammengebauter Baugruppen (
KREISEL_n,VF_n,GF_n) stehen nicht im Modell, sondern incfg/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_AUSdirekt im Block, X in Foerderrichtung, Achslaengen 1/2/3 - Omniflo:
set_einfuegepkt.pyundset_koords.py --set-allgelaufen, Kontrolle per--show-omniflo - Attribute
LAYERund leeresIDvorhanden (Omniflo zusaetzlichTEILEART,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