0020714: EDF GHS3DPLUGIN: shapeToMesh when creating 3D mesh from 2D mesh

* Fix FaceNormal()
* Add
+  static std::vector< const SMDS_MeshNode*> GetCommonNodes(const SMDS_MeshElement* e1,
+                                                           const SMDS_MeshElement* e2);
This commit is contained in:
eap 2010-03-04 13:57:50 +00:00
parent 8ac52f19a5
commit 4fadfe037a
2 changed files with 23 additions and 4 deletions

View File

@ -194,10 +194,10 @@ bool SMESH_Algo::FaceNormal(const SMDS_MeshElement* F, gp_XYZ& normal, bool norm
gp_XYZ p[3];
for ( int n = 0; n < 3; ++n )
{
const SMDS_MeshNode* node = F->GetNode( n );
const SMDS_MeshNode* node = F->GetNode( i + n );
p[n].SetCoord( node->X(), node->Y(), node->Z() );
}
normal += ( p[0] - p[1] ) ^ ( p[2] - p[1] );
normal += ( p[2] - p[1] ) ^ ( p[0] - p[1] );
}
double size2 = normal.SquareModulus();
bool ok = ( size2 > numeric_limits<double>::min() * numeric_limits<double>::min());
@ -532,6 +532,21 @@ const SMDS_MeshNode* SMESH_Algo::VertexNode(const TopoDS_Vertex& V,
return 0;
}
//=======================================================================
//function : GetCommonNodes
//purpose : Return nodes common to two elements
//=======================================================================
vector< const SMDS_MeshNode*> SMESH_Algo::GetCommonNodes(const SMDS_MeshElement* e1,
const SMDS_MeshElement* e2)
{
vector< const SMDS_MeshNode*> common;
for ( int i = 0 ; i < e1->NbNodes(); ++i )
if ( e2->GetNodeIndex( e1->GetNode( i )) >= 0 )
common.push_back( e1->GetNode( i ));
return common;
}
//================================================================================
/*!
* \brief Sets event listener to submeshes if necessary

View File

@ -316,9 +316,13 @@ public:
* \param meshDS - mesh
* \retval const SMDS_MeshNode* - found node or NULL
*/
static const SMDS_MeshNode* VertexNode(const TopoDS_Vertex& V,
const SMESHDS_Mesh* meshDS);
static const SMDS_MeshNode* VertexNode(const TopoDS_Vertex& V, const SMESHDS_Mesh* meshDS);
/*!
* \brief Return nodes common to two elements
*/
static std::vector< const SMDS_MeshNode*> GetCommonNodes(const SMDS_MeshElement* e1,
const SMDS_MeshElement* e2);
protected:
/*!