from pathlib import Path import FreeCAD as A,json,traceback outdir=Path(r'C:\projects\wheel\models\70_m4_threaded') try: d=A.openDocument(str(outdir/'70_M4_threaded.FCStd')) s=d.getObject('ThreadProfiles');p=d.getObject('Parameters') before=s.Geometry[0].Center p.set('B6','46 deg');d.recompute() after=s.Geometry[0].Center h=d.getObject('ThreadHoles');f=d.getObject('FinishedPlate') result={'before':[before.x,before.y],'after':[after.x,after.y],'delta_mm':(after-before).Length,'thread_valid':h.Shape.isValid(),'final_valid':f.Shape.isValid(),'final_state':f.State,'changes_saved':False} (outdir/'parameter_check.json').write_text(json.dumps(result,indent=2),encoding='utf-8') except: (outdir/'parameter_error.txt').write_text(traceback.format_exc(),encoding='utf-8') for name in list(A.listDocuments()): A.closeDocument(name) Gui.getMainWindow().close()