Reverse of Edge

Hi,
I would like to reverse direction of edge.

I was tring below code.
But, method 1, 2, 3 didn't work.

How can i do change direction?

gp_Pnt pt1(0,0,0), pt2(100,100,100);
BRepBuilderAPI_MakeEdge edge(pt1, pt2);

double fp, ep;
Handle(Geom_Curve) curve;
curve = BRep_Tool::Curve(edge, fp, ep);
curve->D0(fp, pt1);
curve->D0(ep, pt2);

TopoDS_Edge e = TopoDS::Edge(edge.Shape());
/*
1. method 1:
if(e.Orientation() ==TopAbs_FORWARD)
e.Orientation(TopAbs_REVERSED);
else
e.Orientation(TopAbs_FORWARD);

2. method 2:
e.Reversed();

3. method 3:
e.Complemented();
*/
// Hope : pt1[100,100,100] pt0[0,0,0]
curve = BRep_Tool::Curve(e, fp, ep);
curve->D0(fp, pt1);
curve->D0(ep, pt2);

Prasad G's picture

Try in method 2

e.Reverse()

Same can be done on a Geom_Curve also.

good luck

- Prasad

sonhc11's picture

Thanks..
But i want to modify on TopoDS Level.
just changing direction of edge...

Thorsten H's picture

None of the suggested solutions worked for me.
After all this was perfect:

double first, last;
const Handle_Geom_Curve & curve = BRep_Tool::Curve(edge, first, last);
first = curve->ReversedParameter(first);
last = curve->ReversedParameter(last);
TopoDS_Edge edgeReversed = BRepBuilderAPI_MakeEdge(curve->Reversed(), last, first);