Vorbereitung von omniflofoerder und auskommentieren des Förderer kurve bis die Blöcke vorhanden sind

This commit is contained in:
2025-11-25 08:55:18 +01:00
parent 22efec8148
commit 7979ad683d
2 changed files with 64 additions and 7 deletions
+2 -1
View File
@@ -51,4 +51,5 @@ bogen_3_ab = Vario_Bogen_ab_3°
[Omniflo]
OFgeradesivas = 821106002
Tefgeradesivas = 1
Tefgeradesivas = 1
OFfoerderer = 2
+62 -6
View File
@@ -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 Umgebungs­variablen
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 ===")
logger.info("=== plant2dxf Verarbeitung abgeschlossen ===")