Point positions always the same after move

Hi,

i am trying to move an edge with the following code: (this is the second attempt, as the forum has removed my code examples when pressing preview).

gp_Vec vec(x, y, z);
gp_Trsf transform;
transform.SetTranslation(vec);
myEdge = BRepBuilderAPI_Transform(myEdge, transform, true).Shape());

When i then get the point info with the following code:

BRepAdaptor_Curve curve(myEdge);
gp_Trsf curveTransform = curve.Trsf();
gp_Pnt p1 = curve.Value(curve.FirstParameter());
gp_Pnt p2 = curve.Value(curve.LastParameter());

curveTransform, p1 and p2 values show the same values, before and after the transform.

What am i doing wrong?

Kind regards,

Heiko

Daniel Neander's picture

Hello,

Try this:

// Before transformation

Handle (AIS_Shape) simpleEdge = new AIS_Shape (BRepBuilderAPI_MakeEdge (gp_Pnt(0,0,0),gp_Pnt(1,0,0)));

BRepAdaptor_Curve simpleCurve (TopoDS::Edge (simpleEdge->Shape()));

gp_Pnt startPoint = simpleCurve.Value(simpleCurve.FirstParameter());

gp_Pnt endPoint = simpleCurve.Value(simpleCurve.LastParameter());

qDebug() << "Before transformation: ";

qDebug() << "X: " + QString::number(startPoint.X()) + " Y: " + QString::number(startPoint.Y()) + " Z: " + QString::number(startPoint.Z());

qDebug() << "X: " + QString::number(endPoint.X()) + " Y: " + QString::number(endPoint.Y()) + " Z: " + QString::number(endPoint.Z());

// Apply transformation

gp_Trsf simpleEdgeTrsf = simpleEdge->Transformation();

simpleEdgeTrsf.SetTranslation(gp_Vec(1,0,0));

BRepBuilderAPI_Transform aTransform(simpleEdge->Shape(),simpleEdgeTrsf);

Handle (AIS_Shape) edgeTransformed = new AIS_Shape(aTransform.Shape());

BRepAdaptor_Curve simpleCurve1 (TopoDS::Edge (edgeTransformed->Shape()));

gp_Pnt startPointT = simpleCurve1.Value(simpleCurve1.FirstParameter());

gp_Pnt endPointT = simpleCurve1.Value(simpleCurve1.LastParameter());

qDebug() << "After transformation: ";

qDebug() << "X: " + QString::number(startPointT.X()) + " Y: " + QString::number(startPointT.Y()) + " Z: " + QString::number(startPointT.Z());

qDebug() << "X: " + QString::number(endPointT.X()) + " Y: " + QString::number(endPointT.Y()) + " Z: " + QString::number(endPointT.Z());

Output:

Before transformation:

"X: 0 Y: 0 Z: 0"

"X: 1 Y: 0 Z: 0"

After transformation:

"X: 1 Y: 0 Z: 0"

"X: 2 Y: 0 Z: 0"

Heiko Irrgang's picture

thank you, works