def spl_face(px, py, pz, axs=gp_Ax3()): nx, ny = px.shape pnt_2d = TColgp_Array2OfPnt(1, nx, 1, ny) for row in range(pnt_2d.LowerRow(), pnt_2d.UpperRow() + 1): for col in range(pnt_2d.LowerCol(), pnt_2d.UpperCol() + 1): i, j = row - 1, col - 1 pnt = gp_Pnt(px[i, j], py[i, j], pz[i, j]) pnt_2d.SetValue(row, col, pnt) #print (i, j, px[i, j], py[i, j], pz[i, j]) api = GeomAPI_PointsToBSplineSurface(pnt_2d, 3, 8, GeomAbs_G2, 0.001) api.Interpolate(pnt_2d) #surface = BRepBuilderAPI_MakeFace(curve, 1e-6) # return surface.Face() face = BRepBuilderAPI_MakeFace(api.Surface(), 1e-6).Face() face.Location(set_loc(gp_Ax3(), axs)) return face
def bez_face(px, py, pz, axs=gp_Ax3()): nx, ny = px.shape pnt_2d = TColgp_Array2OfPnt(1, nx, 1, ny) for row in range(pnt_2d.LowerRow(), pnt_2d.UpperRow() + 1): for col in range(pnt_2d.LowerCol(), pnt_2d.UpperCol() + 1): i, j = row - 1, col - 1 pnt = gp_Pnt(px[i, j], py[i, j], pz[i, j]) pnt_2d.SetValue(row, col, pnt) #print (i, j, px[i, j], py[i, j], pz[i, j]) surf = Geom_BezierSurface(pnt_2d) # api.Interpolate(pnt_2d) #surface = BRepBuilderAPI_MakeFace(curve, 1e-6) # return surface.Face() face = BRepBuilderAPI_MakeFace(surf, 1e-6).Face() face.Location(set_loc(gp_Ax3(), axs)) return face