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:
+26
-3
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user