![Brambilla Cristian's picture Brambilla Cristian's picture](https://dev.opencascade.org/sites/default/files/styles/user/public/pictures/picture-52819-1639471515.jpg?itok=Io5pAYlO)
Fri, 06/04/2010 - 17:15
Forums:
There is a simple way to find the rotation angle between 2 arcs?
I have a path made by lines and arcs (imported from IGES). I have to find the rotation (relative) from an arc and the next one.
See attachment for a graphic explanation.
Thanks in advance.
Attachments:
Tue, 06/08/2010 - 01:20
Hi, you make get the angle with using gp_Vec.
gp_Vec myVec;
myVec.angle(gp_Vec other);
Tue, 06/08/2010 - 01:22
Or you may create the Local system coordinate with gp_Ax3 for first object and for second object. After you may translate first system coordinate by points like 0,0,0 to the first system and after get the angle.
Tue, 06/08/2010 - 13:09
Thank you JuryS.
At the moment I solved this question by calculating equations of the planes (which arcs belong) and after, calculating angle between planes, but I will try one of your solutions (the first seems quite simple)
Another little question: gp_Circ.Length() returns the entire circle lenght, how can I get the lengtt of the arc?
Tue, 06/08/2010 - 18:05
JuryS, I user vectors for getting angle of a single arc, and then calculate the lenght of the arc itself. So, thank you very much.
About the original question, I will continue with the "mathematical" method because seems to work fine.
Tue, 06/08/2010 - 22:54
double theLength, theSurfArea, theVolume;
GProp_GProps LProps, SProps;
BRepGProp::LinearProperties(myShape, LProps);
theLength = LProps.Mass();
BRepGProp::SurfaceProperties(myShape, SProps);
theSurfArea = SProps.Mass();
theVolume = 0.0;
if (myShape.ShapeType() < TopAbs_SHELL)
{
for (TopExp_Explorer Exp (myShape, TopAbs_SOLID); Exp.More(); Exp.Next())
{
GProp_GProps VProps;
BRepGProp::VolumeProperties(Exp.Current(), VProps);
theVolume += VProps.Mass();
}
}
And now you can get the Lenth, Area and Volume from all shapes that you have, not only for line or circle....