automatic parameter import angle problem

automatic parameter import angle problem

t_dueber
Enthusiast Enthusiast
162 Views
1 Reply
Message 1 of 2

automatic parameter import angle problem

t_dueber
Enthusiast
Enthusiast

the angle in the generated step file is different to the angle in the csv file.

i know there are some issues with deg, grad, rad...

but i cannot find the problem.

 

i am using a template, import the csv data for parameter, then export step file.

when i re-open the step file, the angles are wrong...

 

i entered an offset value for the angle in the script but this also doesn´t work.

 

 

import adsk.core, adsk.fusion, adsk.cam, traceback
import csv, os, time

def run(context😞
    ui = None
    try:
        app = adsk.core.Application.get()
        ui = app.userInterface
        documents = app.documents
        importManager = app.importManager

        # Anpassbare Pfade
        csv_path = 'Q:/Exportierte Parameter.csv'  
        output_folder = 'C:/yourpath'  
        template_path = 'C:/yourpath/1.Flach v8.f3d'  

        # Sicherstellen, dass alle Dateien existieren
        if not os.path.exists(csv_path😞
            ui.messageBox(f'Fehler: CSV-Datei nicht gefunden!\nPfad: {csv_path}')
            return
        if not os.path.exists(template_path😞
            ui.messageBox(f'Fehler: Template-Datei nicht gefunden!\nPfad: {template_path}')
            return
        if not os.path.exists(output_folder😞
            os.makedirs(output_folder)  # Falls nicht vorhanden, erstellen

        # Vorlage importieren
        options = importManager.createFusionArchiveImportOptions(template_path)
        importManager.importToNewDocument(options)
       
        # Warten, bis das Dokument tatsächlich geladen ist
        time.sleep(2)
        adsk.doEvents()

        # Aktives Dokument und Design holen
        doc = app.activeDocument
        design = adsk.fusion.Design.cast(doc.products.itemByProductType('DesignProductType'))
        if not design:
            ui.messageBox('Fehler: Kein aktives Design nach dem Import der Vorlage.')
            return
       
        paramManager = design.userParameters
       
        # Alle Parameter aus dem Modell zur Überprüfung ausgeben
        paramList = "Verfügbare Parameter im Modell:\n"
        for param in paramManager:
            paramList += f"- {param.name} (Einheit: {param.unit})\n"
        ui.messageBox(paramList)

        # Parameter aus CSV setzen
        with open(csv_path, newline='', encoding='utf-8') as csvfile:
            reader = csv.DictReader(csvfile)
            for row in reader:
                param_name = row['Name'].strip()
                param_value = row['Wert'].strip()

                param = paramManager.itemByName(param_name)
                if param:
                    try:
                        if param_name.lower() == "anzahl_randloecher":  
                            value = int(param_value)  # Ganze Zahl, keine Skalierung
                       



                        elif param_name.lower().endswith("winkel") or "winkel" in param_name.lower():
                             # Empirisch ermittelter Korrekturfaktor für Winkel
                             value = float(param_value.replace(',', '.')) * 1.4173  
                             ui.messageBox(f"Winkelparameter {param_name}: {param_value}° = {value} (korrigiert)")
                     
                       






                        else:
                            value = float(param_value.replace(',', '.')) * 0.1  # Falls mm → cm nötig

                        param.value = value
                        ui.messageBox(f" Parameter {param_name} auf {value} gesetzt")
                    except ValueError:
                        ui.messageBox(f'⚠ Fehler beim Konvertieren von {param_name}: "{param_value}" ist kein gültiger Zahlenwert')
                else:
                    ui.messageBox(f'⚠ Parameter "{param_name}" nicht im Modell gefunden.')

        # 📏 STOP für manuelle Überprüfung!
        ui.messageBox("📏 Der Parameter-Import ist abgeschlossen.\n\nBitte überprüfe das Modell in Fusion 360.\n\nKlicke auf 'OK', um den Export zu starten.")

        # Dateinamen generieren
        import datetime
        timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
        filename = f"Modell_{timestamp}"
        step_path = os.path.join(output_folder, f'{filename}.step')

        # STEP-Export
        try:
            step_options = design.exportManager.createSTEPExportOptions(step_path)
            design.exportManager.execute(step_options)
            ui.messageBox(f' Export abgeschlossen: {step_path}')
        except Exception as e:
            ui.messageBox(f' Fehler beim STEP-Export: {str(e)}')

        # Dokument schließen
        doc.close(False)
        adsk.doEvents()
       
    except Exception as e:
        if ui:
            ui.messageBox(f' Fehler: {traceback.format_exc()}')

 

0 Likes
163 Views
1 Reply
Reply (1)
Message 2 of 2

t_dueber
Enthusiast
Enthusiast

script as txt attached

0 Likes