import FreeCAD, FreeCADGui import Part import time import numpy as np import matplotlib.pyplot as plt iterations = 100 FreeCAD.newDocument("Test_file") doc = App.activeDocument() body_doc = FreeCAD.ActiveDocument.addObject("Part::Feature", "Body") tool_doc = FreeCAD.ActiveDocument.addObject("Part::Feature", "Tool") body = Part.makeBox(10, 10, iterations, App.Vector(0, 0, 0), App.Vector(0, 1, 0)) tool = Part.makeCylinder(2, 12, App.Vector(0, 0, 10 ), App.Vector(1, 0, 0)) body_doc.Shape = body tool_doc.Shape = tool Gui.activeDocument().activeView().viewIsometric() Gui.SendMsgToActiveView("ViewFit") x = np.linspace(0, iterations, iterations) time_script = [] for i in range(iterations): start_time = time.time() tool.translate(App.Vector(0,1,0)) tool_doc.Shape = tool body_doc.Shape = body.cut(tool).removeSplitter() body = body_doc.Shape.cut(tool) Gui.updateGui() time_script.append(time.time() - start_time) plt.plot(time_script, label="Shape") plt.legend()