logging in plant2dxf.py, svg2dxf.py und dxf2lib.py implementiert

SVG2DXF: Inkscape-Option hinzugefügt, die mit einem SVG Parser arbeitet
This commit is contained in:
2025-07-30 16:12:52 +02:00
parent c38b9861d4
commit 97c81b466b
4 changed files with 376 additions and 128 deletions
+4 -74
View File
@@ -4,31 +4,10 @@ from ezdxf.math import Vec2
import argparse
import sys
import shutil
import datetime
import configparser
import logging
from utils import check_environment_var, setup_logger
def check_environment_var(env_str: str, fallback: str) -> str:
"""
Prüft eine Umgebungsvariable und gibt den Wert oder einen Fallback zurück.
Args:
env_str (str): Name der zu prüfenden Umgebungsvariable
fallback (str): Fallback-Wert, falls die Variable nicht gesetzt ist
Returns:
str: Wert der Umgebungsvariable oder Fallback-Wert
Note:
Gibt eine Warnung aus, falls die Umgebungsvariable nicht gesetzt ist
"""
out_path = os.environ.get(env_str)
if out_path:
return out_path
print(f"[WARN] Umgebungsvariable {env_str} ist nicht gesetzt oder leer. Verwende '{fallback}'.")
return fallback
def get_bbox(entities):
"""
Berechnet die Bounding Box für eine Liste von DXF-Entities.
@@ -75,51 +54,6 @@ def get_bbox(entities):
return Vec2((min_x + max_x) / 2, (min_y + max_y) / 2)
def setup_logger(log_dir):
"""
Erstellt und konfiguriert einen Logger für die DXF2LIB Verarbeitung.
Args:
log_dir (str): Verzeichnis für die Log-Dateien
Returns:
logging.Logger: Konfigurierter Logger
Note:
Erstellt eine Log-Datei mit Zeitstempel und formatiert die Ausgaben
"""
# Logger erstellen
logger = logging.getLogger('dxf2lib')
logger.setLevel(logging.INFO)
# Bestehende Handler entfernen (falls Logger bereits existiert)
for handler in logger.handlers[:]:
logger.removeHandler(handler)
# Zeitstempel für Log-Datei
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
log_file = os.path.join(log_dir, f"dxf2lib_{timestamp}.log")
# File Handler erstellen
file_handler = logging.FileHandler(log_file, encoding='utf-8')
file_handler.setLevel(logging.INFO)
# Console Handler erstellen
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
# Formatter erstellen
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)
# Handler zum Logger hinzufügen
logger.addHandler(file_handler)
logger.addHandler(console_handler)
return logger, log_file
def create_block_library(input_dir, output_file, config, logger=None):
"""
Erstellt eine DXF-Block-Bibliothek aus einzelnen DXF-Dateien.
@@ -299,12 +233,8 @@ if __name__ == "__main__":
sys.exit(1)
# Verzeichnisse über Umgebungsvariablen oder Fallback
if args.input:
INPUT_DIR = args.input
print(f"Verwende Input-Verzeichnis: {INPUT_DIR} \n")
else:
INPUT_DIR = os.path.join(check_environment_var("PROJECT_WORK", "."), "converted_dxfs")
print(f"Kein Input-Verzeichnis angegeben, verwende Standard: {INPUT_DIR} \n")
INPUT_DIR = check_environment_var("PROJECT_WORK", ".")
print(f"Verwende Input-Verzeichnis: {INPUT_DIR} \n")
OUTPUT_FILE = os.path.join(check_environment_var("PROJECT_DATA", "."),"block_libaries", f"{args.name}.dxf")
@@ -315,7 +245,7 @@ if __name__ == "__main__":
print(f"Log-Verzeichnis erstellt: {log_dir}")
# Logger Setup
logger, log_file = setup_logger(log_dir)
logger, log_file = setup_logger(log_dir, name='dxf2lib')
logger.info("=== DXF2LIB Verarbeitung gestartet ===")
logger.info(f"Input-Verzeichnis: {INPUT_DIR}")
logger.info(f"Output-Datei: {OUTPUT_FILE}")