def sew_shapes(shapes, tolerance=0.001): sew = BRepBuilderAPI_Sewing(tolerance) for shp in shapes: if isinstance(shp, list): for i in shp: sew.Add(i) else: sew.Add(shp) sew.Perform() print("n degenerated shapes", sew.NbDegeneratedShapes()) print("n deleted faces:", sew.NbDeletedFaces()) print("n free edges", sew.NbFreeEdges()) print("n multiple edges:", sew.NbMultipleEdges()) result = ShapeToTopology()(sew.SewedShape()) return result
def merge_faces(occ_face_list, tolerance=1e-06): sew = BRepBuilderAPI_Sewing(tolerance) for shp in occ_face_list: if isinstance(shp, list): for i in shp: sew.Add(i) else: sew.Add(shp) sew.Perform() nfreeedge = sew.NbFreeEdges() free_edges = [] for fe_cnt in range(nfreeedge): free_edges.append(sew.FreeEdge(fe_cnt + 1)) face_list = wire_frm_loose_edges(free_edges) return face_list