# Open new document doc = App.newDocument("Beams") # # Generate geometry in Part module import Part beam_obj1 = doc.addObject('Part::Box', 'Beam1') beam_obj1.Height = beam_obj1.Width = 10 beam_obj1.Length = 40 beam_obj2 = doc.addObject('Part::Box', 'Beam2') beam_obj2.Height = beam_obj2.Width = 10 beam_obj2.Length = 30 beam_obj2.Placement.Base = FreeCAD.Vector(40,0,0) # Combine the geometric objects to Compsolid import BOPTools.SplitFeatures beam_comp_obj = BOPTools.SplitFeatures.makeBooleanFragments(name= 'Beam_Compsolid') beam_comp_obj.Objects = [beam_obj1,beam_obj2] beam_comp_obj.Mode = "CompSolid" beam_comp_obj.Proxy.execute(beam_comp_obj) beam_comp_obj.purgeTouched() #Generate a CompoundFilter from the Compsolid import CompoundTools.CompoundFilter beam_obj = CompoundTools.CompoundFilter.makeCompoundFilter(name = 'Beam') beam_obj.Base = beam_comp_obj beam_obj.FilterType = 'window-volume' #??? beam_obj.Proxy.execute(beam_obj) #??? App.ActiveDocument.recompute() # If GUI available, see how our part looks like if FreeCAD.GuiUp: import FreeCADGui FreeCADGui.ActiveDocument.activeView().viewAxonometric() FreeCADGui.SendMsgToActiveView("ViewFit")