def METHOD_NAME(solid):
    face_surface = []
    outer_wires = []
    trims = []
    for f in solid.Faces:
        surface = SvSolidFaceSurface(f)
        if self.nurbs_output:
            out_surface = SvNurbsSurface.get(surface)
            if out_surface is None:
                out_surface = surface
        else:
            out_surface = surface
        face_surface.append(out_surface)
        outer_wire = []
        face_trims = []
        for e in f.OuterWire.Edges:
            try:
                if self.nurbs_output:
                    outer_wire.append(SvSolidEdgeCurve(e).to_nurbs())
                else:
                    outer_wire.append(SvSolidEdgeCurve(e))
            except TypeError:
                pass
            trim,m,M = f.curveOnSurface(e)
            if self.nurbs_output:
                trim = trim.toBSpline(m,M)
                trim = SvFreeCadNurbsCurve(trim, ndim=2)
            else:
                #trim = trim.trim(m, M)
                trim = SvFreeCadCurve(trim, (m,M), ndim=2)
            face_trims.append(trim)
        outer_wires.append(outer_wire)
        trims.append(face_trims)
    return face_surface, outer_wires, trims