]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
Fix for id shitf +2147483647
authoreap <eap@opencascade.com>
Wed, 3 Mar 2021 15:34:42 +0000 (18:34 +0300)
committereap <eap@opencascade.com>
Wed, 3 Mar 2021 15:34:42 +0000 (18:34 +0300)
src/SMDS/SMDS_ElementFactory.cxx
src/SMDS/SMDS_ElementFactory.hxx
src/SMDS/SMDS_Mesh.cxx

index 1b968993f38798acec7294ee3d9f8805a00f8be5..bd5a68380017b95b7b010d2d7ae5619a9ecc965f 100644 (file)
@@ -39,8 +39,6 @@ namespace
 
   const int theDefaultShapeDim = 3;
 
-  const smIdType idShift = 2147483647;
-
   // classes allowing to modify parameters of SMDS_Position stored in SMDS_ElementFactory
 
   struct _EdgePosition : public SMDS_EdgePosition
@@ -230,7 +228,7 @@ const SMDS_MeshElement* SMDS_ElementFactory::FindElement( const smIdType ID ) co
 
 smIdType SMDS_ElementFactory::FromVtkToSmds( vtkIdType VTKID )
 {
-  vtkIdType vtkID = VTKID - idShift;
+  vtkIdType vtkID = VTKID;
   if ( vtkID >= 0 && vtkID < (vtkIdType)mySmdsIDs.size() )
     return mySmdsIDs[vtkID] + 1;
   return vtkID + 1 + idShift;
@@ -251,7 +249,7 @@ void SMDS_ElementFactory::Free( const SMDS_MeshElement* e )
   if ( !myVtkIDs.empty() )
   {
     size_t    id = e->GetID() - 1 - idShift;
-    size_t vtkID = e->GetVtkID() - idShift;
+    size_t vtkID = e->GetVtkID();
     if ( id < myVtkIDs.size() )
       myVtkIDs[ id ] = -1;
     if ( vtkID < mySmdsIDs.size() )
index 165c0af89db80fd260d93b0cec4d8e06146b84de..b933e5826165b0c84aeba89c7ca968f0d47c4049 100644 (file)
@@ -53,6 +53,10 @@ struct _ChunkCompare {
 typedef boost::ptr_vector<SMDS_ElementChunk>       TChunkVector;
 typedef std::set<SMDS_ElementChunk*,_ChunkCompare> TChunkPtrSet;
 
+const smIdType idShift = 2147483647;
+
+
+
 //------------------------------------------------------------------------------------
 /*!
  * \brief Allocate SMDS_MeshElement's (SMDS_MeshCell's or SMDS_MeshNode's )
@@ -565,7 +569,7 @@ SMDS_ElementFactory::GetShapeIterator( int                     shapeID,
                                        size_t                  nbElemsToReturn,
                                        const SMDS_MeshElement* sm1stElem )
 {
-  smIdType iChunk = sm1stElem ? (( sm1stElem->GetID() - 1 ) / ChunkSize()) : 0;
+  smIdType iChunk = sm1stElem ? (( sm1stElem->GetID() - 1 - idShift) / ChunkSize()) : 0;
   typedef _ChunkIterator< ElemIterator, TSubIDRangeSet > TChuckIterator;
   return boost::make_shared< TChuckIterator >( myChunks,
                                                & SMDS_ElementChunk::GetSubIDRangesMinMax,
index a529ee4473bbd2ae8ad63131de4f8dfe05ffa3f4..46423d9fc6c87dedf204eb4d39af7188eb405981 100644 (file)
@@ -1000,7 +1000,7 @@ const SMDS_MeshNode * SMDS_Mesh::FindNode(smIdType ID) const
 ///////////////////////////////////////////////////////////////////////////////
 const SMDS_MeshNode * SMDS_Mesh::FindNodeVtk(vtkIdType vtkId) const
 {
-  return myNodeFactory->FindNode( vtkId + 1 );
+  return myNodeFactory->FindNode( FromVtkToSmds( vtkId ));
 }
 
 const SMDS_MeshElement * SMDS_Mesh::FindElementVtk(vtkIdType IDelem) const