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
|
||||
# -*- 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
|
||||
aus data/json/omniflo_boegen.json und omniflo_weichen.json.
|
||||
Die ergaenzten DXF-Dateien werden in results/omniflo/ gespeichert.
|
||||
Vorgehen pro DXF-Datei:
|
||||
1. DXF-Quelldatei lesen (Basis: Ausgabe von set_einfuegepkt.py, damit
|
||||
$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:
|
||||
DXFM_DATA - Pfad zum data/-Verzeichnis
|
||||
@@ -169,11 +195,14 @@ def wrap_entities_in_block(doc, block_name):
|
||||
"""
|
||||
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
|
||||
if block_name in doc.blocks:
|
||||
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):
|
||||
msp.move_to_layout(entity, blk)
|
||||
|
||||
Reference in New Issue
Block a user