Message 1 of 2
automatic parameter import angle problem
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
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()}')