0020682: EDF 1222 SMESH: 3D mesh from a skin mesh and with volumic cells

* Redesign in order to bind two pyramids to one base quadrangle.
 * Check presence of 3D elements sharing the base quadrangle.
This commit is contained in:
eap 2010-02-09 11:17:06 +00:00
parent 2536cb0c1b
commit 2169f74278
2 changed files with 364 additions and 511 deletions

File diff suppressed because it is too large Load Diff

View File

@ -26,11 +26,18 @@
#ifndef _SMESH_QuadToTriaAdaptor_HXX_ #ifndef _SMESH_QuadToTriaAdaptor_HXX_
#define _SMESH_QuadToTriaAdaptor_HXX_ #define _SMESH_QuadToTriaAdaptor_HXX_
#include <SMESH_Mesh.hxx>
#include "SMESH_StdMeshers.hxx" #include "SMESH_StdMeshers.hxx"
#include <SMDS_FaceOfNodes.hxx> #include "SMDS_FaceOfNodes.hxx"
#include <TColgp_HArray1OfPnt.hxx>
#include <TColgp_HArray1OfVec.hxx> class SMESH_Mesh;
class SMDS_MeshElement;
class SMDS_MeshNode;
class Handle(TColgp_HArray1OfPnt);
class Handle(TColgp_HArray1OfVec);
class TopoDS_Shape;
class gp_Pnt;
class gp_Vec;
#include <map> #include <map>
#include <list> #include <list>
@ -40,8 +47,6 @@ class STDMESHERS_EXPORT StdMeshers_QuadToTriaAdaptor
{ {
public: public:
StdMeshers_QuadToTriaAdaptor();
~StdMeshers_QuadToTriaAdaptor(); ~StdMeshers_QuadToTriaAdaptor();
bool Compute(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape); bool Compute(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape);
@ -58,7 +63,8 @@ protected:
Handle(TColgp_HArray1OfPnt)& PN, Handle(TColgp_HArray1OfPnt)& PN,
Handle(TColgp_HArray1OfVec)& VN, Handle(TColgp_HArray1OfVec)& VN,
std::vector<const SMDS_MeshNode*>& FNodes, std::vector<const SMDS_MeshNode*>& FNodes,
gp_Pnt& PC, gp_Vec& VNorm); gp_Pnt& PC, gp_Vec& VNorm,
const SMDS_MeshElement** volumes=0);
bool CheckIntersection(const gp_Pnt& P, const gp_Pnt& PC, bool CheckIntersection(const gp_Pnt& P, const gp_Pnt& PC,
gp_Pnt& Pint, SMESH_Mesh& aMesh, gp_Pnt& Pint, SMESH_Mesh& aMesh,
@ -67,10 +73,13 @@ protected:
bool Compute2ndPart(SMESH_Mesh& aMesh); bool Compute2ndPart(SMESH_Mesh& aMesh);
typedef std::map< const SMDS_MeshElement*, const SMDS_MeshElement*, TIDCompare > TF2PyramMap; typedef std::list<const SMDS_FaceOfNodes* > TTriaList;
typedef std::multimap<const SMDS_MeshElement*, TTriaList > TQuad2Trias;
typedef std::map<const SMDS_MeshElement*, TTriaList *, TIDCompare> TPyram2Trias;
TQuad2Trias myResMap;
TPyram2Trias myPyram2Trias;
std::map< const SMDS_MeshElement*, std::list<const SMDS_FaceOfNodes*> > myResMap;
TF2PyramMap myMapFPyram;
std::list< const SMDS_MeshNode* > myDegNodes; std::list< const SMDS_MeshNode* > myDegNodes;
}; };