import ezdxf import openpyxl import os import sys def nacti_data_z_excelu(soubor, listname="List1"): wb = openpyxl.load_workbook(soubor, data_only=True) sheet = wb[listname] body = [] for row in sheet.iter_rows(min_row=2, values_only=True): if row[0] and row[1] is not None and row[2] is not None: label = str(row[0]) try: x = float(row[1]) y = float(row[2]) z = float(row[3]) if len(row) > 3 and row[3] is not None else 0 body.append((label, x, y, z)) except ValueError: continue return body def exportuj_do_dxf(body, vystup): doc = ezdxf.new() msp = doc.modelspace() doc.layers.new(name="BODY", dxfattribs={"color": 7}) doc.layers.new(name="POPISKY", dxfattribs={"color": 1}) for label, x, y, z in body: msp.add_point((x, y, z), dxfattribs={"layer": "BODY"}) msp.add_text( label, dxfattribs={"layer": "POPISKY"}).set_pos((x + 2, y + 2), align="LEFT") # Posun textu od bodu doc.saveas(vystup) if __name__ == "__main__": if len(sys.argv) != 3: print("Použití: python excel_to_dxf_hotovy.py vstup.xlsx vystup.dxf") sys.exit(1) excel_soubor = sys.argv[1] vystup_nazev = sys.argv[2] slozka = os.path.dirname(os.path.abspath(__file__)) excel_cesta = os.path.join(slozka, excel_soubor) vystup_cesta = os.path.join(slozka, vystup_nazev) body = nacti_data_z_excelu(excel_cesta) exportuj_do_dxf(body, vystup_cesta) print(f"Soubor {vystup_nazev} byl úspěšně vytvořen ve složce: {slozka}")