From c650ea9b7c41f0258b82798e2499186f1c00fea3 Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Tue, 16 Jun 2026 17:42:14 +0200 Subject: [PATCH] =?UTF-8?q?doc=20erg=C3=A4nzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Entwicklungsplan.md | 1 + lib/set_attributs.py | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/doc/Entwicklungsplan.md b/doc/Entwicklungsplan.md index 00b12a4..755ad49 100644 --- a/doc/Entwicklungsplan.md +++ b/doc/Entwicklungsplan.md @@ -42,6 +42,7 @@ ## Meilenstein 6: Metafunktionen - Erzeugung eines Gerüsts über einem Bereich/ einer Strecke - 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 - Positionierung von Separatoren und Scannern aus dem Streckenverlauf/Fördereranbindung - Makro zur Erzeugung eines Arbeitsplatzes (Varioförderer ab, 180 Grad Bogen, Varoförderer auf) diff --git a/lib/set_attributs.py b/lib/set_attributs.py index 2f5010d..d49d8b3 100644 --- a/lib/set_attributs.py +++ b/lib/set_attributs.py @@ -49,6 +49,7 @@ import os import sys import ezdxf +from ezdxf import bbox from ezdxf.enums import TextEntityAlignment @@ -177,8 +178,7 @@ def build_lookup(boegen, weichen): # ATTDEF zu DXF hinzufuegen # --------------------------------------------------------------------------- -ATTDEF_START_Y = -50.0 -ATTDEF_SPACING = -30.0 +ATTDEF_SPACING = -8.0 # Delta Y zwischen Attributzeilen ATTDEF_HEIGHT = 5.0 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: 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 all_defs = list(attr_defs) if layer_value: all_defs.append(("LAYER", f'"{layer_value}"')) - # ATTDEFs hinzufuegen - y_pos = ATTDEF_START_Y + # ATTDEFs hinzufuegen (zentriert unter der Geometrie) + y_pos = y_start count = 0 for tag, source in all_defs: 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( tag=tag, text=default_value, + insert=(x_center, y_pos), dxfattribs={ "layer": ATTDEF_LAYER, "height": ATTDEF_HEIGHT, - "insert": (0, y_pos), "prompt": prompt, - "flags": 3, # unsichtbar (1) + konstant (2) + "flags": 1, # unsichtbar (1), nicht konstant -> erzeugt ATTRIB-Entities beim INSERT }, ) y_pos += ATTDEF_SPACING