from pathlib import Path import os, traceback, json import FreeCAD as A, Part R=Path(r'C:\projects\wheel'); O=R/'models'/'kfl001_plate_draft' try: assembly=A.openDocument(str(R/'models'/'switch_2020_direct_profiles'/'Assembly.FCStd')) draft=A.openDocument(str(O/'KFL001_plate_DRAFT.FCStd')) f=draft.getObject('Plate_DRAFT').Shape results=[] for i,z in ((0,-84),(1,-187)): p=assembly.getObject('CompactPlate%d'%i).Shape.copy() p.translate(A.Vector(0,41,-z)) a=p.cut(f).Volume;b=f.cut(p).Volume assert a<0.0001 and b<0.0001,(a,b) results.append({'assembly':'CompactPlate%d'%i,'assembly_minus_draft_mm3':a,'draft_minus_assembly_mm3':b,'plate_z':z}) (O/'assembly_comparison.json').write_text(json.dumps(results,indent=2),encoding='utf8') A.closeDocument(draft.Name);A.closeDocument(assembly.Name);os._exit(0) except Exception: (O/'assembly_comparison_error.txt').write_text(traceback.format_exc(),encoding='utf8');os._exit(1)