Die endBox hat nun ein layer in omniflo system
This commit is contained in:
+38
-14
@@ -92,22 +92,19 @@ def import_block(block_name: str, from_doc, to_doc) -> None:
|
|||||||
|
|
||||||
# Sicherstellen, dass alle verwendeten Layer existieren
|
# Sicherstellen, dass alle verwendeten Layer existieren
|
||||||
try:
|
try:
|
||||||
used_layers = set()
|
used_layer_names = {e.dxf.layer for e in src if hasattr(e.dxf, "layer")}
|
||||||
for ent in src:
|
for layer_name in used_layer_names:
|
||||||
ln = getattr(getattr(ent, "dxf", object()), "layer", None)
|
if layer_name and layer_name not in to_doc.layers:
|
||||||
if ln:
|
|
||||||
used_layers.add(ln)
|
|
||||||
for layer_name in used_layers:
|
|
||||||
if layer_name not in to_doc.layers:
|
|
||||||
try:
|
try:
|
||||||
src_layer = from_doc.layers.get(layer_name)
|
src_layer = from_doc.layers.get(layer_name)
|
||||||
to_doc.layers.add(
|
to_doc.layers.add(
|
||||||
name=layer_name,
|
name=layer_name,
|
||||||
color=getattr(src_layer.dxf, "color"),
|
color=getattr(src_layer.dxf, "color", None),
|
||||||
linetype=getattr(src_layer.dxf, "linetype"),
|
linetype=getattr(src_layer.dxf, "linetype", None),
|
||||||
lineweight=getattr(src_layer.dxf, "lineweight"),
|
lineweight=getattr(src_layer.dxf, "lineweight", None),
|
||||||
)
|
)
|
||||||
except Exception:
|
except Exception:
|
||||||
|
# Fallback: Layer mit Standardwerten anlegen
|
||||||
to_doc.layers.add(name=layer_name)
|
to_doc.layers.add(name=layer_name)
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
@@ -128,7 +125,7 @@ def import_block(block_name: str, from_doc, to_doc) -> None:
|
|||||||
import_block(ent.dxf.name,from_doc, to_doc)
|
import_block(ent.dxf.name,from_doc, to_doc)
|
||||||
tgt.add_entity(ent.copy())
|
tgt.add_entity(ent.copy())
|
||||||
|
|
||||||
|
|
||||||
def berechne_hoehe(csv_path, logger=None):
|
def berechne_hoehe(csv_path, logger=None):
|
||||||
y_werte = []
|
y_werte = []
|
||||||
try:
|
try:
|
||||||
@@ -252,6 +249,7 @@ def draw_kreisel_drehrichtung_markierung(msp, pos1, pos2, merkmale, lib_doc, doc
|
|||||||
if drehrichtung == "GUZS":
|
if drehrichtung == "GUZS":
|
||||||
rotation += 180
|
rotation += 180
|
||||||
import_block("S-LP", lib_doc, doc)
|
import_block("S-LP", lib_doc, doc)
|
||||||
|
|
||||||
bref = msp.add_blockref("S-LP", (px, py), dxfattribs={"rotation": rotation})
|
bref = msp.add_blockref("S-LP", (px, py), dxfattribs={"rotation": rotation})
|
||||||
if verbose:
|
if verbose:
|
||||||
print(f"[INFO] Drehrichtung '{drehrichtung}': S-LP oben bei ({px:.1f}, {py:.1f}), rot={rotation:.1f}")
|
print(f"[INFO] Drehrichtung '{drehrichtung}': S-LP oben bei ({px:.1f}, {py:.1f}), rot={rotation:.1f}")
|
||||||
@@ -363,6 +361,33 @@ def handle_omniflo(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols)
|
|||||||
print(f"[WARN] Omniflo-Block '{blockname}' nicht in Bibliothek {lib_doc.filename}. Überspringe {teileid}.")
|
print(f"[WARN] Omniflo-Block '{blockname}' nicht in Bibliothek {lib_doc.filename}. Überspringe {teileid}.")
|
||||||
return
|
return
|
||||||
import_block(blockname, lib_doc, doc)
|
import_block(blockname, lib_doc, doc)
|
||||||
|
src = lib_doc.blocks[blockname]
|
||||||
|
try:
|
||||||
|
used_layer_names = {e.dxf.layer for e in src if hasattr(e.dxf, "layer")}
|
||||||
|
for layer_name in used_layer_names:
|
||||||
|
if layer_name and layer_name not in doc.layers:
|
||||||
|
try:
|
||||||
|
src_layer = lib_doc.layers.get(layer_name)
|
||||||
|
doc.layers.add(
|
||||||
|
name=layer_name,
|
||||||
|
color=getattr(src_layer.dxf, "color", None),
|
||||||
|
linetype=getattr(src_layer.dxf, "linetype", None),
|
||||||
|
lineweight=getattr(src_layer.dxf, "lineweight", None),
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
# Fallback: Layer mit Standardwerten anlegen
|
||||||
|
doc.layers.add(name=layer_name)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
layer_counts = {}
|
||||||
|
for e in src:
|
||||||
|
ln = getattr(e.dxf, "layer", None)
|
||||||
|
if not ln:
|
||||||
|
continue
|
||||||
|
if ln != "BOUNDING_BOX":
|
||||||
|
layer_counts[ln] = layer_counts.get(ln, 0) + 1
|
||||||
|
if layer_counts:
|
||||||
|
blockref_layer = max(layer_counts.items(), key=lambda kv: kv[1])[0]
|
||||||
lib_block = lib_doc.blocks.get(blockname)
|
lib_block = lib_doc.blocks.get(blockname)
|
||||||
imported_block = doc.blocks.get(blockname)
|
imported_block = doc.blocks.get(blockname)
|
||||||
if hasattr(lib_block.block.dxf, "base_point"):
|
if hasattr(lib_block.block.dxf, "base_point"):
|
||||||
@@ -370,9 +395,8 @@ def handle_omniflo(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols)
|
|||||||
if hasattr(lib_block.block.dxf, "layer"):
|
if hasattr(lib_block.block.dxf, "layer"):
|
||||||
imported_block.block.dxf.layer= lib_block.block.dxf.layer
|
imported_block.block.dxf.layer= lib_block.block.dxf.layer
|
||||||
drehung = merkmale.get("Drehung")
|
drehung = merkmale.get("Drehung")
|
||||||
if drehung not in (0.0, 180.0):
|
|
||||||
drehung = drehung -180
|
bref = msp.add_blockref(blockname, (x, y), dxfattribs={"xscale": 1.0, "yscale":1.0,"rotation": drehung, "layer": blockref_layer})
|
||||||
bref = msp.add_blockref(blockname, (x, y), dxfattribs={"xscale": 1.0, "yscale":1.0,"rotation": drehung, "layer": imported_block.block.dxf.layer })
|
|
||||||
|
|
||||||
bref.add_attrib(
|
bref.add_attrib(
|
||||||
tag= "NAME",
|
tag= "NAME",
|
||||||
|
|||||||
Reference in New Issue
Block a user