mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-04-25 18:02:04 +05:00
0022876: EDF 8425 SMESH: Get the normal of a face in the GUI
- Additional change: use the same method to compute normal in TUI and GUI
This commit is contained in:
parent
5e086fb537
commit
44d75c1021
@ -29,7 +29,7 @@
|
|||||||
#include "SMESHGUI.h"
|
#include "SMESHGUI.h"
|
||||||
#include "SMESHGUI_Selection.h"
|
#include "SMESHGUI_Selection.h"
|
||||||
#include "SMESH_Type.h"
|
#include "SMESH_Type.h"
|
||||||
|
#include "SMESH_MeshAlgos.hxx"
|
||||||
#include <SMDS_MeshNode.hxx>
|
#include <SMDS_MeshNode.hxx>
|
||||||
#include <SMDS_MeshFace.hxx>
|
#include <SMDS_MeshFace.hxx>
|
||||||
|
|
||||||
@ -373,25 +373,7 @@ namespace SMESH
|
|||||||
gp_XYZ getNormale( const SMDS_MeshFace* theFace )
|
gp_XYZ getNormale( const SMDS_MeshFace* theFace )
|
||||||
{
|
{
|
||||||
gp_XYZ n;
|
gp_XYZ n;
|
||||||
int aNbNode = theFace->NbNodes();
|
SMESH_MeshAlgos::FaceNormal( theFace, n, /*normalized=*/true );
|
||||||
TColgp_Array1OfXYZ anArrOfXYZ(1,4);
|
|
||||||
SMDS_ElemIteratorPtr aNodeItr = theFace->nodesIterator();
|
|
||||||
int i = 1;
|
|
||||||
for ( ; aNodeItr->more() && i <= 4; i++ ) {
|
|
||||||
SMDS_MeshNode* aNode = (SMDS_MeshNode*)aNodeItr->next();
|
|
||||||
anArrOfXYZ.SetValue(i, gp_XYZ( aNode->X(), aNode->Y(), aNode->Z() ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
gp_XYZ q1 = anArrOfXYZ.Value(2) - anArrOfXYZ.Value(1);
|
|
||||||
gp_XYZ q2 = anArrOfXYZ.Value(3) - anArrOfXYZ.Value(1);
|
|
||||||
n = q1 ^ q2;
|
|
||||||
if ( aNbNode > 3 ) {
|
|
||||||
gp_XYZ q3 = anArrOfXYZ.Value(4) - anArrOfXYZ.Value(1);
|
|
||||||
n += q2 ^ q3;
|
|
||||||
}
|
|
||||||
double len = n.Modulus();
|
|
||||||
if ( len > 0 )
|
|
||||||
n /= len;
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user