from OCC.Core.BRepAlgoAPI import BRepAlgoAPI_Cut from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeEdge, BRepBuilderAPI_MakeFace, BRepBuilderAPI_MakeWire from OCC.Core.gp import gp_Pnt from OCC.Display.SimpleGui import init_display display, start_display, add_menu, add_function_to_menu = init_display() def makeSquareWire(minx, miny, maxx, maxy): pnt1 = gp_Pnt(minx,miny,0) pnt2 = gp_Pnt(maxx,miny,0) pnt3 = gp_Pnt(maxx,maxy,0) pnt4 = gp_Pnt(minx,maxy,0) edge1 = BRepBuilderAPI_MakeEdge(pnt1,pnt2).Edge() edge2 = BRepBuilderAPI_MakeEdge(pnt2,pnt3).Edge() edge3 = BRepBuilderAPI_MakeEdge(pnt3,pnt4).Edge() edge4 = BRepBuilderAPI_MakeEdge(pnt4,pnt1).Edge() return BRepBuilderAPI_MakeWire(edge1,edge2,edge3,edge4).Wire() def makeSquare(minx, miny, maxx, maxy): wire = makeSquareWire(minx, miny, maxx, maxy) return BRepBuilderAPI_MakeFace(wire).Face() def cutFaceBuilder(): sq1 = makeSquare(0,0,10,10) sq2 = makeSquare(6,6,12,12) sqw1 = makeSquareWire(2,2,6,6) sqw2 = makeSquareWire(3,3,5,5) faceBuilder = BRepBuilderAPI_MakeFace(sq1) faceBuilder.Add(sqw1.Reversed()) faceBuilder.Add(sqw2) lattice = faceBuilder.Face() return BRepAlgoAPI_Cut(lattice, sq2).Shape() def cutAlgo(): sq1 = makeSquare(0,0,10,10) sq2 = makeSquare(6,6,12,12) sqw1 = makeSquare(2,2,6,6) sqw2 = makeSquareWire(3,3,5,5) faceBuilder = BRepBuilderAPI_MakeFace(sqw1) faceBuilder.Add(sqw2.Reversed()) pore = faceBuilder.Face() lattice = BRepAlgoAPI_Cut(sq1,pore).Shape() return BRepAlgoAPI_Cut(lattice, sq2).Shape() cuttedSlice = cutFaceBuilder() #cuttedSlice = cutAlgo() display.DisplayShape(cuttedSlice, update=True) start_display()