it:fusion:export_step

Alle f3d Dateien im Workspace in Step konvertieren

Moechte man den eisernen Griff von Autodesk verlassen und dennoch seine Daten aus der Cloud mitnehmen, so bietet es sich an die Daten als STEP zu exportieren und somit in anderen CAD Programmen nutzbar zu machen.

Das folgende Python Skript macht das rekursiv und geht mit Assemblies auch sinnvoll um.

import adsk.core, adsk.fusion, traceback, os
 
def export_all_projects_to_step(export_folder):
    app = adsk.core.Application.get()
    ui = app.userInterface
    data_mgr = app.data
 
    try:
        # Ensure export folder exists
        if not os.path.exists(export_folder):
            os.makedirs(export_folder)
 
        # Iterate over all projects
        projects = data_mgr.dataProjects
        for project in projects:
            # ui.messageBox(f'Processing project: {project.name}')
 
            # Get root folder of the project
            root_folder = project.rootFolder
            all_files = get_all_files_recursive(root_folder)
 
            for file in all_files:
                if file.fileExtension.lower() == 'f3d':  # Fusion design file
                    # Open the design
                    document = app.documents.open(file, False)
                    design_workspace = ui.workspaces.itemById('FusionSolidEnvironment')
                    design_workspace.activate()
 
                    documentPath = getFolderPath(file.parentFolder)
 
                    design = adsk.fusion.Design.cast(app.activeProduct)
 
                    if not design:
                        print(f"{file.name} is not a design")
                        document.close(False)
                        continue
 
                    if design.rootComponent is None:
                        print(f"{file.name} has no rootComponent")
                        document.close(False)
                        continue
 
                    # Prepare export path
                    file_name = file.name.replace(' ', '_').replace('.f3d', '')
                    destFolder = os.path.join(export_folder, documentPath)
                    os.makedirs(destFolder, exist_ok=True)
                    step_path = os.path.join(destFolder, f"{file_name}.step")
 
                    # Create export manager
                    exportMgr = design.exportManager
 
                    # Set up STEP export options
                    step_options = exportMgr.createSTEPExportOptions(step_path, design.rootComponent)
                    step_options.ap214Standard = True
 
                    exportMgr.execute(step_options)
 
                    # Close the document
                    document.close(False)
 
    except Exception as e:
        ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
 
def getFolderPath(folder):
    if not folder.isRoot:
        return os.path.join(getFolderPath(folder.parentFolder), folder.name)
    else:
        return folder.name
 
 
def get_all_files_recursive(folder):
    """Recursively get all files in a folder and subfolders."""
    files = list(folder.dataFiles)
 
    for subfolder in folder.dataFolders:
        files.extend(get_all_files_recursive(subfolder))
 
    return files
 
# Set your export path here (update this to a real folder on your disk)
EXPORT_PATH = 'C:/Users/berni/Downloads/FusionExports'
 
export_all_projects_to_step(EXPORT_PATH)
  • it/fusion/export_step.txt
  • Zuletzt geändert: 2025/06/23 20:05
  • von admin