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)