From 7979ad683d71fd85be534b66890d01427c9eca01 Mon Sep 17 00:00:00 2001
From: Paul Wolok
Date: Tue, 25 Nov 2025 08:55:18 +0100
Subject: [PATCH] =?UTF-8?q?Vorbereitung=20von=20omniflofoerder=20und=20aus?=
=?UTF-8?q?kommentieren=20des=20F=C3=B6rderer=20kurve=20bis=20die=20Bl?=
=?UTF-8?q?=C3=B6cke=20vorhanden=20sind?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cfg/shapes.cfg | 3 ++-
lib/plant2dxf.py | 68 +++++++++++++++++++++++++++++++++++++++++++-----
2 files changed, 64 insertions(+), 7 deletions(-)
diff --git a/cfg/shapes.cfg b/cfg/shapes.cfg
index 02e747f..aaf8ac2 100644
--- a/cfg/shapes.cfg
+++ b/cfg/shapes.cfg
@@ -51,4 +51,5 @@ bogen_3_ab = Vario_Bogen_ab_3°
[Omniflo]
OFgeradesivas = 821106002
-Tefgeradesivas = 1
\ No newline at end of file
+Tefgeradesivas = 1
+OFfoerderer = 2
\ No newline at end of file
diff --git a/lib/plant2dxf.py b/lib/plant2dxf.py
index adcd55e..be4b1e8 100644
--- a/lib/plant2dxf.py
+++ b/lib/plant2dxf.py
@@ -1292,8 +1292,17 @@ def handle_ils_2_0_variofoerderer(msp, teileid, merkmale, x, y, doc, lib_doc, ve
msp.add_blockref(blockname,(x,y,hoehe_vario),dxfattribs={"rotation": rotation})
def handle_ils_2_0_kurve_angetrieben(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, strecken_nachbarn,config,config_allgemein):
- import_block("AN8",lib_doc,doc)
- msp.add_blockref("AN8",(x,y))
+ # kurvenrichtung = merkmale.get("Kurvenrichtung")
+ # kurvenwinkel = float(merkmale.get("Kurvenwinkel"))
+ # h0 = float(merkmale.get("Höhe Anfang"))
+ # h1 = float(merkmale.get("Höhe Ende"))
+ # h_zwischen = (h0 +h1)/2
+ # rotation = float(merkmale.get("Drehung"))
+ # blockname = (f"Kurve{h1}")
+ # import_block(blockname,lib_doc,doc)
+ # msp.add_blockref,(x,y,h_zwischen))
+ test = 2
+
def handle_ils_2_0_kurve(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols, strecken_nachbarn,config,config_allgemein):
import_block("AN8",lib_doc,doc)
msp.add_blockref("AN8",(x,y))
@@ -1311,6 +1320,8 @@ def handle_omniflo(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols,
# Prüfen, ob es sich um eine Gerade handelt
omnisivas = config.get("Omniflo","OFgeradesivas")
tefsivas = config.get("Omniflo","Tefgeradesivas")
+ foerderer = config.get("Omniflo","OFfoerderer")
+
if merkmale.get("SivasNummer") == omnisivas or merkmale.get("SivasNummer") == tefsivas:
try:
laenge = float(merkmale.get("Länge in Meter", "0").replace(",", ".")) * 1000 # Meter → mm
@@ -1342,6 +1353,33 @@ def handle_omniflo(msp, teileid, merkmale, x, y, doc, lib_doc, verbose, symbols,
if verbose:
print(f"[INFO] Omniflo Gerade → {teileid} Linie von ({start[0]:.1f}, {start[1]:.1f}) nach ({ende[0]:.1f}, {ende[1]:.1f})")
return
+
+ if merkmale.get("SivasNummer") == foerderer:
+ import_block("bogen1",lib_doc,doc)
+ import_block("bogen2",lib_doc,doc)
+ rotation = float(merkmale.get("Drehung"))
+ laenge = float(merkmale.get("laenge in meter")) * 1000
+ h0 = float(merkmale.get("Höhe unten"))
+ h1 = float(merkmale.get("Höhe oben"))
+ h_zwischen = (h0 + h1)/2
+ blockname = (f"OF_Förderer_{laenge}_{h_zwischen}")
+ winkel_rad = math.radians(rotation)
+ halbe_laenge = laenge / 2
+ # Man muss bei sin -1 machen wegen des links koordinaten system
+ dx = halbe_laenge * math.sin(rotation * -1)
+ dy = halbe_laenge * math.cos(rotation)
+ start = (x + dx, y + dy, float(merkmale.get("Höhe oben")) )
+ ende = (x - dx, y - dy, float(merkmale.get("Höhe unten")))
+ if blockname not in doc.blocks:
+ block = doc.blocks.new(blockname, base_point=(0,0,0))
+ block.add_blockref("bogen1",start)
+ block.add_blockref("bogen2",ende)
+ line = Line.new(dxfattribs={"start": start,"end":ende})
+ copy = line.copy()
+ copy.translate(-x,-y,-h_zwischen)
+ block.add_entity(copy)
+ msp.add_blockref(blockname,(x,y,h_zwischen),dxfattribs={"rotation": rotation})
+ return
# Sonst wie gehabt: Block mit SivasNummer
if not lib_doc:
print("[WARN] lib_doc nicht verfügbar, Block wird nicht eingefügt.")
@@ -3449,6 +3487,8 @@ def get_rotations_of_strecken(csv_path:Path) -> dict:
return strecken_nachbarn
+
+
# --------------------------------------------------------- Hauptfunktion
def main(csv_path: Path, lib_path: Path, cfg_path: Path, allgemein_cfg_path: Path,
output_path: Path, output_path_jason: Path, verbose=False, logger=None ):
@@ -3555,6 +3595,15 @@ def main(csv_path: Path, lib_path: Path, cfg_path: Path, allgemein_cfg_path: Pat
else:
print(msg)
continue
+ # if "Motor" not in doc.layers:
+ # doc.layers.add(name="Motor", color=2)
+ # for insert in msp.query("INSERT"):
+ # change_layer(doc, insert)
+
+
+ for insert in msp.query("INSERT"):
+ basepoint = insert.dxf.insert
+
# data = []
# for e in msp.query("INSERT"):
@@ -3602,6 +3651,13 @@ def main(csv_path: Path, lib_path: Path, cfg_path: Path, allgemein_cfg_path: Pat
else:
print(f"[DONE] DXF gespeichert unter: {output_path}")
+# def change_layer(doc, insert):
+# src = doc.blocks[insert.dxf.name]
+# for e in src:
+# e.dxf.layer = "Motor"
+# if e.dxftype() == "INSERT":
+# change_layer(doc,e)
+
def check_dxflibrary_path(lib_path, verbose, logger):
lib_doc = None
if lib_path.exists():
@@ -3633,10 +3689,8 @@ if __name__ == "__main__":
parser.add_argument("-o", "--output", help="Ziel-DXF (Standard: PROJECT_WORK/anlage.dxf)", metavar="anlage.dxf")
parser.add_argument("-v", "--verbose", action="store_true", help="mehr Ausgaben anzeigen")
-
args = parser.parse_args()
-
-
+
# Verzeichnisse aus Umgebungsvariablen
log_dir = check_environment_var("PROJECT_LOG")
data_dir = check_environment_var("PROJECT_DATA")
@@ -3658,4 +3712,6 @@ if __name__ == "__main__":
output_path = Path(args.output) if args.output else (work_dir / f"{csv_path.stem}.dxf")
output_path_jason = Path(args.output) if args.output else (work_dir / f"{csv_path.stem}.jason")
main(csv_path, default_lib_path, cfg_path,allgemein_cfg_path, output_path,output_path_jason, verbose=args.verbose, logger=logger)
- logger.info("=== plant2dxf Verarbeitung abgeschlossen ===")
\ No newline at end of file
+ logger.info("=== plant2dxf Verarbeitung abgeschlossen ===")
+
+