Create canonical surface limited by a wire

Hello,

I'm trying to create a surface (a sphere, a cone, a cylinder, ...) bounded by a wire.
What I have is a geometrie of the edges in 3D

I have tried many things but could not manage to make it work
Probably because my curves are not pcurves but 3D curves
I could not find any sample of code to create for exemple 1/8 of a sphere bounded by 3 arcs.

BRep_Builder aBuilder;
TopoDS_Face aFace;
BRepBuilderAPI_MakeWire wire;
TopoDS_Edge occ_edge;

CVector origin, vx, vy, vz;
double r = ((CSphere_surf*)&easymill_surf)->GetRadius();
((CSphere_surf*)&easymill_surf)->GetOrigin(&origin);
((CSphere_surf*)&easymill_surf)->GetOrientation(vz, vx, vy);
gp_Ax3 ax3(gp_Pnt(10., 10., 0.), gp_Dir(1., 0., 0.), gp_Dir(0., 1., 0.));
gp_Sphere sphere(ax3, 20.);
aFace = BRepBuilderAPI_MakeFace(sphere);

gp_Circ circ(gp_Ax2(gp_Pnt(10., 10., 0.), gp_Dir(0., 0., 1.)), 20.));
occ_edge = BRepBuilderAPI_MakeEdge(circ, 0., PI/2.);
wire.Add(occ_edge);

gp_Circ circ(gp_Ax2(gp_Pnt(10., 10., 0.), gp_Dir(0., 1., 0.)), 20.));
occ_edge = BRepBuilderAPI_MakeEdge(circ, 0., PI/2.);
wire.Add(occ_edge);

gp_Circ circ(gp_Ax2(gp_Pnt(10., 10., 0.), gp_Dir(1., 0., 0.)), 20.));
occ_edge = BRepBuilderAPI_MakeEdge(circ, 0., PI/2.);
wire.Add(occ_edge);

aBuilder.Add(aFace, wire);

how can I define/create and use pcurves from 3Dcurves ?