Salome HOME
PR: commit mistake
[modules/smesh.git] / src / OBJECT / SMESH_Object.cxx
index 709847e9c34cf51738456857e9e203c62293beb6..ded63b7937367466310009048aa1a6f968a23a51 100644 (file)
@@ -65,7 +65,7 @@ using namespace std;
 
 #ifdef _DEBUG_
 static int MYDEBUG = 1;
-static int MYDEBUGWITHFILES = 1;
+static int MYDEBUGWITHFILES = 0;//1;
 #else
 static int MYDEBUG = 0;
 static int MYDEBUGWITHFILES = 0;
@@ -104,7 +104,7 @@ static inline vtkIdType getCellType( const SMDSAbs_ElementType theType,
       else return VTK_EMPTY_CELL;
       
     case SMDSAbs_Volume:
-      if (thePoly && theNbNodes>3 ) return VTK_CONVEX_POINT_SET;
+      if (thePoly && theNbNodes>3 ) return VTK_POLYHEDRON; //VTK_CONVEX_POINT_SET;
       else if ( theNbNodes == 4 )   return VTK_TETRA;
       else if ( theNbNodes == 5 )   return VTK_PYRAMID;
       else if ( theNbNodes == 6 )   return VTK_WEDGE;
@@ -151,41 +151,46 @@ SMESH_VisualObjDef::~SMESH_VisualObjDef()
 //=================================================================================
 vtkIdType SMESH_VisualObjDef::GetNodeObjId( int theVTKID )
 {
-       if (myLocalGrid)
-       {
-               TMapOfIds::const_iterator i = myVTK2SMDSNodes.find(theVTKID);
-               return i == myVTK2SMDSNodes.end() ? -1 : i->second;
-       }
+        if (myLocalGrid)
+        {
+                TMapOfIds::const_iterator i = myVTK2SMDSNodes.find(theVTKID);
+                return i == myVTK2SMDSNodes.end() ? -1 : i->second;
+        }
   return this->GetMesh()->FindNodeVtk(theVTKID)->GetID();
 }
 
 vtkIdType SMESH_VisualObjDef::GetNodeVTKId( int theObjID )
 {
-       if (myLocalGrid)
-       {
-               TMapOfIds::const_iterator i = mySMDS2VTKNodes.find(theObjID);
+        if (myLocalGrid)
+        {
+                TMapOfIds::const_iterator i = mySMDS2VTKNodes.find(theObjID);
     return i == mySMDS2VTKNodes.end() ? -1 : i->second;
-       }
-  return this->GetMesh()->FindNode(theObjID)->getVtkId();
+        }
+
+        const SMDS_MeshNode* aNode = 0;
+        if( this->GetMesh() ) {
+          aNode = this->GetMesh()->FindNode(theObjID);
+        }
+        return aNode ? aNode->getVtkId() : -1;
 }
 
 vtkIdType SMESH_VisualObjDef::GetElemObjId( int theVTKID )
 {
-       if (myLocalGrid)
-       {
-               TMapOfIds::const_iterator i = myVTK2SMDSElems.find(theVTKID);
-               return i == myVTK2SMDSElems.end() ? -1 : i->second;
-       }
+        if (myLocalGrid)
+        {
+                TMapOfIds::const_iterator i = myVTK2SMDSElems.find(theVTKID);
+                return i == myVTK2SMDSElems.end() ? -1 : i->second;
+        }
   return this->GetMesh()->fromVtkToSmds(theVTKID);
 }
 
 vtkIdType SMESH_VisualObjDef::GetElemVTKId( int theObjID )
 {
-       if (myLocalGrid)
-       {
-               TMapOfIds::const_iterator i = mySMDS2VTKElems.find(theObjID);
-               return i == mySMDS2VTKElems.end() ? -1 : i->second;
-       }
+        if (myLocalGrid)
+        {
+                TMapOfIds::const_iterator i = mySMDS2VTKElems.find(theObjID);
+                return i == mySMDS2VTKElems.end() ? -1 : i->second;
+        }
   return this->GetMesh()->FindElement(theObjID)->getVtkId();
   //return this->GetMesh()->fromSmdsToVtk(theObjID);
 }
@@ -236,45 +241,45 @@ void SMESH_VisualObjDef::buildPrs(bool buildGrid)
   MESSAGE("----------------------------------------------------------SMESH_VisualObjDef::buildPrs " << buildGrid);
   if (buildGrid)
   {
-       myLocalGrid = true;
-       try
-       {
-               mySMDS2VTKNodes.clear();
-               myVTK2SMDSNodes.clear();
-               mySMDS2VTKElems.clear();
-               myVTK2SMDSElems.clear();
-
-               if ( IsNodePrs() )
-                       buildNodePrs();
-               else
-                       buildElemPrs();
-       }
-       catch(...)
-       {
-               mySMDS2VTKNodes.clear();
-               myVTK2SMDSNodes.clear();
-               mySMDS2VTKElems.clear();
-               myVTK2SMDSElems.clear();
-
-               myGrid->SetPoints( 0 );
-               myGrid->SetCells( 0, 0, 0, 0, 0 );
-               throw;
-       }
+        myLocalGrid = true;
+        try
+        {
+                mySMDS2VTKNodes.clear();
+                myVTK2SMDSNodes.clear();
+                mySMDS2VTKElems.clear();
+                myVTK2SMDSElems.clear();
+
+                if ( IsNodePrs() )
+                        buildNodePrs();
+                else
+                        buildElemPrs();
+        }
+        catch(...)
+        {
+                mySMDS2VTKNodes.clear();
+                myVTK2SMDSNodes.clear();
+                mySMDS2VTKElems.clear();
+                myVTK2SMDSElems.clear();
+
+                myGrid->SetPoints( 0 );
+                myGrid->SetCells( 0, 0, 0, 0, 0 );
+                throw;
+        }
   }
   else
   {
-       myLocalGrid = false;
-       if (!GetMesh()->isCompacted())
-         {
-           MESSAGE("*** buildPrs ==> compactMesh!");
-           GetMesh()->compactMesh();
-         }
-       vtkUnstructuredGrid *theGrid = GetMesh()->getGrid();
-       myGrid->ShallowCopy(theGrid);
-       //MESSAGE(myGrid->GetReferenceCount());
-       //MESSAGE( "Update - myGrid->GetNumberOfCells() = "<<myGrid->GetNumberOfCells() );
-       //MESSAGE( "Update - myGrid->GetNumberOfPoints() = "<<myGrid->GetNumberOfPoints() );
-       if( MYDEBUGWITHFILES ) SMESH::WriteUnstructuredGrid( myGrid,"buildPrs.vtu" );
+        myLocalGrid = false;
+        if (!GetMesh()->isCompacted())
+          {
+            MESSAGE("*** buildPrs ==> compactMesh!");
+            GetMesh()->compactMesh();
+          }
+        vtkUnstructuredGrid *theGrid = GetMesh()->getGrid();
+        myGrid->ShallowCopy(theGrid);
+        //MESSAGE(myGrid->GetReferenceCount());
+        //MESSAGE( "Update - myGrid->GetNumberOfCells() = "<<myGrid->GetNumberOfCells() );
+        //MESSAGE( "Update - myGrid->GetNumberOfPoints() = "<<myGrid->GetNumberOfPoints() );
+        if( MYDEBUGWITHFILES ) SMESH::WriteUnstructuredGrid( myGrid,"buildPrs.vtu" );
   }
 }
 
@@ -540,7 +545,7 @@ bool SMESH_VisualObjDef::GetEdgeNodes( const int theElemId,
     
   int nbNodes = anElem->NbNodes();
 
-  if ( theEdgeNum < 0 || theEdgeNum > 3 || nbNodes != 3 && nbNodes != 4 || theEdgeNum > nbNodes )
+  if ( theEdgeNum < 0 || theEdgeNum > 3 || (nbNodes != 3 && nbNodes != 4) || theEdgeNum > nbNodes )
     return false;
 
   vector<int> anIds( nbNodes );
@@ -565,8 +570,8 @@ bool SMESH_VisualObjDef::GetEdgeNodes( const int theElemId,
 
 vtkUnstructuredGrid* SMESH_VisualObjDef::GetUnstructuredGrid()
 {
-       //MESSAGE("SMESH_VisualObjDef::GetUnstructuredGrid " << myGrid);
-       return myGrid;
+        //MESSAGE("SMESH_VisualObjDef::GetUnstructuredGrid " << myGrid);
+        return myGrid;
 }
 
 
@@ -576,7 +581,7 @@ vtkUnstructuredGrid* SMESH_VisualObjDef::GetUnstructuredGrid()
 //=================================================================================
 bool SMESH_VisualObjDef::IsValid() const
 {
-       //MESSAGE("SMESH_VisualObjDef::IsValid");
+        //MESSAGE("SMESH_VisualObjDef::IsValid");
   return GetNbEntities(SMDSAbs_Node) > 0      || 
          GetNbEntities(SMDSAbs_0DElement) > 0 || 
          GetNbEntities(SMDSAbs_Edge) > 0      || 
@@ -596,7 +601,7 @@ bool SMESH_VisualObjDef::IsValid() const
 SMESH_MeshObj::SMESH_MeshObj(SMESH::SMESH_Mesh_ptr theMesh):
   myClient(SalomeApp_Application::orb(),theMesh)
 {
-       myEmptyGrid = 0;
+        myEmptyGrid = 0;
   if ( MYDEBUG ) 
     MESSAGE("SMESH_MeshObj - this = "<<this<<"; theMesh->_is_nil() = "<<theMesh->_is_nil());
 }
@@ -629,19 +634,20 @@ bool SMESH_MeshObj::Update( int theIsClear )
 
 bool SMESH_MeshObj::NulData()
 {
-       MESSAGE ("SMESH_MeshObj::NulData() ==================================================================================");
-       if (!myEmptyGrid)
-       {
-         myEmptyGrid = SMDS_UnstructuredGrid::New();
-         myEmptyGrid->Initialize();
-         myEmptyGrid->Allocate();
-         vtkPoints* points = vtkPoints::New();
-         points->SetNumberOfPoints(0);
-         myEmptyGrid->SetPoints( points );
-         points->Delete();
-         myEmptyGrid->BuildLinks();
-       }
-       myGrid->ShallowCopy(myEmptyGrid);
+        MESSAGE ("SMESH_MeshObj::NulData() ==================================================================================");
+        if (!myEmptyGrid)
+        {
+          myEmptyGrid = SMDS_UnstructuredGrid::New();
+          myEmptyGrid->Initialize();
+          myEmptyGrid->Allocate();
+          vtkPoints* points = vtkPoints::New();
+          points->SetNumberOfPoints(0);
+          myEmptyGrid->SetPoints( points );
+          points->Delete();
+          myEmptyGrid->BuildLinks();
+        }
+        myGrid->ShallowCopy(myEmptyGrid);
+        return true;
 }
 //=================================================================================
 // function : GetElemDimension
@@ -809,7 +815,7 @@ void SMESH_SubMeshObj::UpdateFunctor( const SMESH::Controls::FunctorPtr& theFunc
 //=================================================================================
 bool SMESH_SubMeshObj::Update( int theIsClear )
 {
-       MESSAGE("SMESH_SubMeshObj::Update " << this)
+        MESSAGE("SMESH_SubMeshObj::Update " << this)
   bool changed = myMeshObj->Update( theIsClear );
   buildPrs(true);
   return changed;
@@ -837,7 +843,7 @@ SMESH_GroupObj::SMESH_GroupObj( SMESH::SMESH_GroupBase_ptr theGroup,
 SMESH_GroupObj::~SMESH_GroupObj()
 {
   if ( MYDEBUG ) MESSAGE("~SMESH_GroupObj");
-  myGroupServer->Destroy();
+  myGroupServer->UnRegister();
 }
 
 //=================================================================================
@@ -967,7 +973,7 @@ SMESH_subMeshObj::SMESH_subMeshObj( SMESH::SMESH_subMesh_ptr theSubMesh,
 SMESH_subMeshObj::~SMESH_subMeshObj()
 {
   if ( MYDEBUG ) MESSAGE( "~SMESH_subMeshObj" );
-  mySubMeshServer->Destroy();
+  mySubMeshServer->UnRegister();
 }
 
 //=================================================================================