00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _SMESH_QuadToTriaAdaptor_HXX_
00027 #define _SMESH_QuadToTriaAdaptor_HXX_
00028
00029 #include <SMESH_Mesh.hxx>
00030 #include "SMESH_StdMeshers.hxx"
00031 #include <SMDS_FaceOfNodes.hxx>
00032 #include <TColgp_HArray1OfPnt.hxx>
00033 #include <TColgp_HArray1OfVec.hxx>
00034
00035 #include <map>
00036 #include <list>
00037 #include <vector>
00038
00039 class STDMESHERS_EXPORT StdMeshers_QuadToTriaAdaptor
00040 {
00041 public:
00042
00043 StdMeshers_QuadToTriaAdaptor();
00044
00045 ~StdMeshers_QuadToTriaAdaptor();
00046
00047 bool Compute(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape);
00048
00049 bool Compute(SMESH_Mesh& aMesh);
00050
00051 const std::list<const SMDS_FaceOfNodes*>* GetTriangles(const SMDS_MeshElement* aFace);
00052
00053 protected:
00054
00055
00056
00057 int Preparation(const SMDS_MeshElement* face,
00058 Handle(TColgp_HArray1OfPnt)& PN,
00059 Handle(TColgp_HArray1OfVec)& VN,
00060 std::vector<const SMDS_MeshNode*>& FNodes,
00061 gp_Pnt& PC, gp_Vec& VNorm);
00062
00063 bool CheckIntersection(const gp_Pnt& P, const gp_Pnt& PC,
00064 gp_Pnt& Pint, SMESH_Mesh& aMesh,
00065 const TopoDS_Shape& aShape,
00066 const TopoDS_Shape& NotCheckedFace);
00067
00068 bool Compute2ndPart(SMESH_Mesh& aMesh);
00069
00070 typedef std::map< const SMDS_MeshElement*, const SMDS_MeshElement*, TIDCompare > TF2PyramMap;
00071
00072 std::map< const SMDS_MeshElement*, std::list<const SMDS_FaceOfNodes*> > myResMap;
00073 TF2PyramMap myMapFPyram;
00074 std::list< const SMDS_MeshNode* > myDegNodes;
00075
00076 };
00077
00078 #endif