TopoDS_Face Face =TopoDS::Face(XX); Handle (Geom_Surface) Surface = BRep_Tool::Surface (Face);
TopoDS_Vertex VFrom = TopoDS::Vertex (YY);
TopoDS_Vertex VTo = TopoDS::Vertex (ZZ); gp_Pnt PFrom = BRep_Tool::Pnt(VFrom); gp_Pnt PTo = BRep_Tool::Pnt(VTo); TopoDS_Edge Result; BRep_Builder Builder; Builder.MakeEdge (Result); Handle (Geom2d_Curve) OriginalCurve = Handle (Geom2d_Curve)::DownCast(aGeometryForTheEdge);
Handle (Geom2d_Curve) Curve = Handle (Geom2d_Curve)::DownCast(OriginalCurve->Copy());
Handle (Geom2d_Curve) Curve1 = Handle (Geom2d_Curve)::DownCast(Curve->Transformed (TheTransformation));
Builder.UpdateEdge (Result, Curve1, Face, BRepBuilderAPI::Precision()); VFrom.Orientation (TopAbs_FORWARD); VTo.Orientation (TopAbs_REVERSED); Builder.Add(Result, VFrom); Builder.Add(Result, VTo);
Builder.Range (Result, Face, Curve1->FirstParameter(), Curve1->LastParameter()); Standard_Boolean Curve3dIsBuilt; Curve3dIsBuilt = BRepLib::BuildCurve3d(Result);
return Result;