import os, sys, json, traceback import FreeCAD as App import FreeCADGui as Gui from PySide import QtCore ROOT = os.path.abspath(os.environ.get('QI_ROOT') or os.getcwd()) def run_probe(): result = {'version': App.Version(), 'workbenches': list(Gui.listWorkbenches()), 'errors': []} for name in ('PartWorkbench', 'PartDesignWorkbench', 'SketcherWorkbench', 'AssemblyWorkbench', 'TechDrawWorkbench', 'DraftWorkbench'): try: wb = Gui.getWorkbench(name) result[name] = {'initialize': hasattr(wb, 'Initialize'), 'class': str(type(wb))} Gui.activateWorkbench(name) except Exception: result['errors'].append(traceback.format_exc()) result['commands'] = list(Gui.listCommands()) with open(os.path.join(ROOT, 'artifacts', 'probe.json'), 'w', encoding='utf-8') as f: json.dump(result, f, ensure_ascii=False, indent=2) Gui.getMainWindow().close() QtCore.QTimer.singleShot(1500, run_probe)