
Tue, 02/23/2016 - 17:59
Forums:
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
Wed, 03/23/2016 - 10:18
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"
Fri, 04/01/2016 - 17:22
thank you, works