Erweiterung der Kommandozeilenargumente in dxf2lib.py, um den Bibliotheksnamen optional zu machen und Eingabeaufforderung bei fehlendem Namen hinzuzufügen. Anpassung der Textplatzierung in svg2dxf.py, um längere Namen auf zwei Zeilen darzustellen und Fehlerbehandlung bei der Inkscape-Konvertierung zu integrieren.

This commit is contained in:
2025-07-29 15:29:36 +02:00
parent 4075cef30e
commit 91fffadc1f
2 changed files with 39 additions and 12 deletions
+26 -3
View File
@@ -43,7 +43,7 @@ if __name__ == "__main__":
# Argumentparser für Kommandozeilenoptionen
parser = argparse.ArgumentParser(description="SVG/XML zu DXF Konverter")
parser.add_argument('-i', '--input', type=str, help='Input-Verzeichnis mit SVG/XML-Dateien')
parser.add_argument('-n', '--name', required=True, type=str, help='Name der zu erzeugenden Bibliothek')
parser.add_argument('-n', '--name', required=False, type=str, help='Name der zu erzeugenden Bibliothek (optional, wird sonst abgefragt)')
parser.add_argument('-k', '--keep', action="store_true", help='Behalte converted_dxf Ordner. Sonst Löschen nach erfolgreicher Bibliothekserstellung')
if len(sys.argv) == 2 and sys.argv[1] in ("-h", "--help"):
@@ -52,6 +52,12 @@ if __name__ == "__main__":
args = parser.parse_args()
if not args.name:
args.name = input("Bitte Namen der zu erzeugenden Bibliothek eingeben: ").strip()
if not args.name:
print("Fehler: Kein Name angegeben. Beende.")
sys.exit(1)
# Verzeichnisse über Umgebungsvariablen oder Fallback
if args.input:
INPUT_DIR = args.input
@@ -106,8 +112,20 @@ if __name__ == "__main__":
# Platzierung in Reihen und Spalten
msp.add_blockref(name, insert=(x_offset, y_offset))
# Text mit Blocknamen über dem Block
text_y = y_offset + 150 # 150 Einheiten über dem Block
msp.add_text(name, dxfattribs={'height': 20, 'insert': (x_offset-150, text_y)})
text_y = y_offset + 175 # 175 Einheiten über dem Block
max_len = 9
text_height = 20
line_spacing = 22 # Abstand zwischen den zwei Textzeilen
if len(name) > max_len:
first_line = name[:max_len]
second_line = name[max_len:]
# obere Zeile
msp.add_text(first_line, dxfattribs={'height': text_height, 'insert': (x_offset - 150, text_y)})
# untere Zeile, etwas niedriger (y kleiner)
msp.add_text(second_line, dxfattribs={'height': text_height, 'insert': (x_offset - 150, text_y - line_spacing)})
else:
msp.add_text(name, dxfattribs={'height': text_height, 'insert': (x_offset - 150, text_y)})
blocks_in_row += 1
x_offset += 350 # Abstand zwischen Blöcken in einer Reihe
if blocks_in_row == 20:
@@ -116,6 +134,11 @@ if __name__ == "__main__":
y_offset -= 500 # Neue Zeile, nach unten versetzt
print(f"Bibliotheks-DXF gespeichert: {OUTPUT_FILE} \n")
output_dir = os.path.dirname(OUTPUT_FILE)
if not os.path.exists(output_dir):
os.makedirs(output_dir, exist_ok=True)
doc.saveas(OUTPUT_FILE)
if not args.keep: