X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMDS%2FSMDS_VolumeTool.hxx;h=7e88f7c1a309c48061daf61a8ee4092da20c374e;hp=4b0d63e2fb9de10d6009a8e5c499ede28bc1aab6;hb=1dd2f82c6d43d470c088288248edea674d583eec;hpb=0db2de9312288bf324e739a20a7fbfa8f004c21c diff --git a/src/SMDS/SMDS_VolumeTool.hxx b/src/SMDS/SMDS_VolumeTool.hxx index 4b0d63e2f..7e88f7c1a 100644 --- a/src/SMDS/SMDS_VolumeTool.hxx +++ b/src/SMDS/SMDS_VolumeTool.hxx @@ -38,6 +38,7 @@ class SMDS_MeshVolume; #include #include +#include // ========================================================================= // @@ -90,10 +91,10 @@ class SMDS_EXPORT SMDS_VolumeTool // top and bottom faces are reversed. // Result of IsForward() and methods returning nodes change - const SMDS_MeshNode** GetNodes() { return myVolumeNodes; } + const SMDS_MeshNode** GetNodes() { return &myVolumeNodes[0]; } // Return array of volume nodes - int NbNodes() { return myVolumeNbNodes; } + int NbNodes() { return myVolumeNodes.size(); } // Return array of volume nodes double GetSize() const; @@ -242,31 +243,42 @@ class SMDS_EXPORT SMDS_VolumeTool static int GetOppFaceIndexOfHex( int faceIndex ); // Return index of the opposite face of the hexahedron -private: + private: bool setFace( int faceIndex ) const; + bool projectNodesToNormal( int faceIndex, double& minProj, double& maxProj ) const; + const SMDS_MeshElement* myVolume; const SMDS_VtkVolume* myPolyedre; bool myIgnoreCentralNodes; bool myVolForward; int myNbFaces; - int myVolumeNbNodes; - const SMDS_MeshNode** myVolumeNodes; - std::vector< int > myPolyIndices; - - mutable bool myExternalFaces; - - mutable const int* myAllFacesNodeIndices_F; - mutable const int* myAllFacesNodeIndices_RE; - mutable const int* myAllFacesNbNodes; - mutable int myMaxFaceNbNodes; - - mutable int myCurFace; - mutable int myFaceNbNodes; - mutable int* myFaceNodeIndices; - mutable const SMDS_MeshNode** myFaceNodes; + std::vector myVolumeNodes; + std::vector< int > myPolyIndices; // of a myCurFace + std::vector< int > myPolyQuantities; + std::vector< int > myPolyFacetOri; // -1-in, +1-out, 0-undef + + typedef std::pair Link; + std::map myFwdLinks; // used in IsFaceExternal() to find out myPolyFacetOri + + mutable bool myExternalFaces; + + mutable const int* myAllFacesNodeIndices_F; + mutable const int* myAllFacesNodeIndices_RE; + mutable const int* myAllFacesNbNodes; + mutable int myMaxFaceNbNodes; + + struct SaveFacet; + struct Facet + { + int myIndex; + int myNbNodes; + int* myNodeIndices; + std::vector myNodes; + }; + mutable Facet myCurFace; }; #endif