doc ergänzt
This commit is contained in:
@@ -42,6 +42,7 @@
|
|||||||
## Meilenstein 6: Metafunktionen
|
## Meilenstein 6: Metafunktionen
|
||||||
- Erzeugung eines Gerüsts über einem Bereich/ einer Strecke
|
- Erzeugung eines Gerüsts über einem Bereich/ einer Strecke
|
||||||
- Erzeugung einer Strecke aus einer Polylinie
|
- Erzeugung einer Strecke aus einer Polylinie
|
||||||
|
- Verbindung zweier Kreisel auf unterschiedlicher Höhe in Kreiselachsenrichtung oder gedreht
|
||||||
- Erzeugung eines Puffers aus einer Flächenangabe/Recheck
|
- Erzeugung eines Puffers aus einer Flächenangabe/Recheck
|
||||||
- Positionierung von Separatoren und Scannern aus dem Streckenverlauf/Fördereranbindung
|
- Positionierung von Separatoren und Scannern aus dem Streckenverlauf/Fördereranbindung
|
||||||
- Makro zur Erzeugung eines Arbeitsplatzes (Varioförderer ab, 180 Grad Bogen, Varoförderer auf)
|
- Makro zur Erzeugung eines Arbeitsplatzes (Varioförderer ab, 180 Grad Bogen, Varoförderer auf)
|
||||||
|
|||||||
+16
-6
@@ -49,6 +49,7 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
import ezdxf
|
import ezdxf
|
||||||
|
from ezdxf import bbox
|
||||||
from ezdxf.enums import TextEntityAlignment
|
from ezdxf.enums import TextEntityAlignment
|
||||||
|
|
||||||
|
|
||||||
@@ -177,8 +178,7 @@ def build_lookup(boegen, weichen):
|
|||||||
# ATTDEF zu DXF hinzufuegen
|
# ATTDEF zu DXF hinzufuegen
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
ATTDEF_START_Y = -50.0
|
ATTDEF_SPACING = -8.0 # Delta Y zwischen Attributzeilen
|
||||||
ATTDEF_SPACING = -30.0
|
|
||||||
ATTDEF_HEIGHT = 5.0
|
ATTDEF_HEIGHT = 5.0
|
||||||
ATTDEF_LAYER = "ATTRIB"
|
ATTDEF_LAYER = "ATTRIB"
|
||||||
|
|
||||||
@@ -246,13 +246,23 @@ def add_attdefs_to_dxf(dxf_path, output_path, attr_defs, json_entry, sivasnr,
|
|||||||
for e in existing:
|
for e in existing:
|
||||||
msp.delete_entity(e)
|
msp.delete_entity(e)
|
||||||
|
|
||||||
|
# Bounding Box der Geometrie berechnen (ohne ATTDEFs)
|
||||||
|
geo_entities = [e for e in msp if e.dxftype() != "ATTDEF"]
|
||||||
|
extents = bbox.extents(geo_entities)
|
||||||
|
if extents.has_data:
|
||||||
|
x_center = (extents.extmin.x + extents.extmax.x) / 2.0
|
||||||
|
y_start = extents.extmin.y + ATTDEF_SPACING
|
||||||
|
else:
|
||||||
|
x_center = 0.0
|
||||||
|
y_start = -50.0
|
||||||
|
|
||||||
# Alle ATTDEFs sammeln: Config-Attribute + LAYER aus [layer]-Sektion
|
# Alle ATTDEFs sammeln: Config-Attribute + LAYER aus [layer]-Sektion
|
||||||
all_defs = list(attr_defs)
|
all_defs = list(attr_defs)
|
||||||
if layer_value:
|
if layer_value:
|
||||||
all_defs.append(("LAYER", f'"{layer_value}"'))
|
all_defs.append(("LAYER", f'"{layer_value}"'))
|
||||||
|
|
||||||
# ATTDEFs hinzufuegen
|
# ATTDEFs hinzufuegen (zentriert unter der Geometrie)
|
||||||
y_pos = ATTDEF_START_Y
|
y_pos = y_start
|
||||||
count = 0
|
count = 0
|
||||||
for tag, source in all_defs:
|
for tag, source in all_defs:
|
||||||
default_value = resolve_value(source, json_entry, sivasnr)
|
default_value = resolve_value(source, json_entry, sivasnr)
|
||||||
@@ -261,12 +271,12 @@ def add_attdefs_to_dxf(dxf_path, output_path, attr_defs, json_entry, sivasnr,
|
|||||||
msp.add_attdef(
|
msp.add_attdef(
|
||||||
tag=tag,
|
tag=tag,
|
||||||
text=default_value,
|
text=default_value,
|
||||||
|
insert=(x_center, y_pos),
|
||||||
dxfattribs={
|
dxfattribs={
|
||||||
"layer": ATTDEF_LAYER,
|
"layer": ATTDEF_LAYER,
|
||||||
"height": ATTDEF_HEIGHT,
|
"height": ATTDEF_HEIGHT,
|
||||||
"insert": (0, y_pos),
|
|
||||||
"prompt": prompt,
|
"prompt": prompt,
|
||||||
"flags": 3, # unsichtbar (1) + konstant (2)
|
"flags": 1, # unsichtbar (1), nicht konstant -> erzeugt ATTRIB-Entities beim INSERT
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
y_pos += ATTDEF_SPACING
|
y_pos += ATTDEF_SPACING
|
||||||
|
|||||||
Reference in New Issue
Block a user