set_attributes.py baut jetzt einen Block der bei Klick alle seine Attribute anzeigt.
This commit is contained in:
+34
-5
@@ -1,11 +1,37 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
"""
|
"""
|
||||||
set_attributs.py - Fuegt Attribute (ATTDEF) zu allen Omniflo DXF-Dateien hinzu.
|
set_attributs.py - Fuegt Attribute (ATTDEF) zu Omniflo DXF-Dateien hinzu
|
||||||
|
und verpackt die Geometrie in eine benannte Blockdefinition.
|
||||||
|
|
||||||
Liest die Attribut-Konfiguration aus cfg/attradd.cfg und die Element-Daten
|
Vorgehen pro DXF-Datei:
|
||||||
aus data/json/omniflo_boegen.json und omniflo_weichen.json.
|
1. DXF-Quelldatei lesen (Basis: Ausgabe von set_einfuegepkt.py, damit
|
||||||
Die ergaenzten DXF-Dateien werden in results/omniflo/ gespeichert.
|
$INSBASE bereits gesetzt ist).
|
||||||
|
2. Vorhandene ATTDEF-Entities aus dem Modelspace entfernen (Re-Run-sicher).
|
||||||
|
3. Neue ATTDEFs gemaess cfg/attradd.cfg und JSON-Daten einfuegen.
|
||||||
|
Attributwerte werden aus omniflo_boegen.json / omniflo_weichen.json
|
||||||
|
aufgeloest; der Layer-Name kommt aus dem [layer]-Abschnitt der Config.
|
||||||
|
4. Alle Entities (Geometrie + ATTDEFs) in eine Blockdefinition verschieben.
|
||||||
|
Der Blockname entspricht der Sivasnummer (= Dateiname ohne .dxf).
|
||||||
|
Als Basispunkt der Blockdefinition wird $INSBASE aus dem DXF-Header
|
||||||
|
verwendet (gesetzt von set_einfuegepkt.py).
|
||||||
|
5. Im Modelspace einen INSERT auf den neuen Block einfuegen, mit
|
||||||
|
ATTRIB-Entities befuellt aus den ATTDEF-Standardwerten. Dadurch zeigt
|
||||||
|
BricsCAD beim Klick auf den Block alle Attributwerte an.
|
||||||
|
6. Ergebnis in results/omniflo/<sivasnr>.dxf speichern.
|
||||||
|
|
||||||
|
Voraussetzung:
|
||||||
|
Die Quelldateien in data/omniflo/ sollten bereits durch set_einfuegepkt.py
|
||||||
|
verarbeitet worden sein, damit $INSBASE korrekt gesetzt ist.
|
||||||
|
|
||||||
|
Eingaben:
|
||||||
|
cfg/attradd.cfg - Attribut-Konfiguration
|
||||||
|
data/json/omniflo_boegen.json - Bogendaten (Masse, Sivasnr, ...)
|
||||||
|
data/json/omniflo_weichen.json - Weichendaten
|
||||||
|
data/omniflo/<sivasnr>.dxf - Quell-DXF-Dateien
|
||||||
|
|
||||||
|
Ausgabe:
|
||||||
|
results/omniflo/<sivasnr>.dxf - DXF mit Blockdefinition + INSERT
|
||||||
|
|
||||||
Umgebungsvariablen:
|
Umgebungsvariablen:
|
||||||
DXFM_DATA - Pfad zum data/-Verzeichnis
|
DXFM_DATA - Pfad zum data/-Verzeichnis
|
||||||
@@ -169,11 +195,14 @@ def wrap_entities_in_block(doc, block_name):
|
|||||||
"""
|
"""
|
||||||
msp = doc.modelspace()
|
msp = doc.modelspace()
|
||||||
|
|
||||||
|
# Einfuegepunkt aus DXF-Header lesen (gesetzt von set_einfuegepkt.py)
|
||||||
|
base_point = doc.header.get("$INSBASE", (0, 0, 0))
|
||||||
|
|
||||||
# Vorhandene Blockdefinition entfernen
|
# Vorhandene Blockdefinition entfernen
|
||||||
if block_name in doc.blocks:
|
if block_name in doc.blocks:
|
||||||
doc.blocks.delete_block(block_name, safe=False)
|
doc.blocks.delete_block(block_name, safe=False)
|
||||||
|
|
||||||
blk = doc.blocks.new(block_name)
|
blk = doc.blocks.new(block_name, base_point=base_point)
|
||||||
|
|
||||||
for entity in list(msp):
|
for entity in list(msp):
|
||||||
msp.move_to_layout(entity, blk)
|
msp.move_to_layout(entity, blk)
|
||||||
|
|||||||
Reference in New Issue
Block a user