diff --git a/src/geometry/FacilityGeometry.cpp b/src/geometry/FacilityGeometry.cpp
index 415f3188d0c6277fb15b3bfcdd0b482854693ab2..c3cf7e04bab66ccb368591e3815256c6971f4987 100644
--- a/src/geometry/FacilityGeometry.cpp
+++ b/src/geometry/FacilityGeometry.cpp
@@ -161,8 +161,13 @@ void FacilityGeometry::CreateActors()
      {
          assembly3D->SetVisibility(status);
      }
+     _visibility=status;
  }
 
+     bool FacilityGeometry::getVisibility() const
+     {
+         return _visibility;
+     }
 /***
  * This is the main build method and should be called by all functions
  * drawing a wall or a door. Important
@@ -812,6 +817,10 @@ void FacilityGeometry::showFloor(bool status)
     floorActor->SetVisibility(status);
 }
 
+void FacilityGeometry::showObstacles(bool status)
+{
+    obstaclesActor->SetVisibility(status);
+}
 void FacilityGeometry::addObjectLabel(double center[3], double orientation[3], std::string caption, double color)
 {
     addNewElementText(center, orientation, caption, color);
diff --git a/src/geometry/FacilityGeometry.h b/src/geometry/FacilityGeometry.h
index 0af9ad22849f49a83d3b97ba5efccff2086d8274..2aee2b57193fd2fb54c5bc3f6d82acda6a67fb5d 100644
--- a/src/geometry/FacilityGeometry.h
+++ b/src/geometry/FacilityGeometry.h
@@ -133,9 +133,11 @@ public:
     void showWalls(bool status);
     void showNavLines(bool status);
     void showFloor(bool status);
+    void showObstacles(bool status);
     void showGeometryLabels(int status);
 
     void setVisibility(bool status);
+    bool getVisibility() const;
 
 
 private:
@@ -179,6 +181,7 @@ private:
     vtkActor2DCollection* captions;
 
     std::string _description;
+    bool _visibility=true;
 };
 
 #endif /* FACILITYGEOMETRY_H_ */
diff --git a/src/geometry/GeometryFactory.cpp b/src/geometry/GeometryFactory.cpp
index 500c9ddc7587f81be7af4ac2d8b2128a32970430..ce41a6bc37228c17a2fbd35eb573afc88bcd5d47 100644
--- a/src/geometry/GeometryFactory.cpp
+++ b/src/geometry/GeometryFactory.cpp
@@ -28,10 +28,10 @@ void GeometryFactory::Set2D(bool status)
     {
         for(auto&& subroom:room.second)
         {
-            subroom.second->set2D(status);
+            if(_geometryFactory[room.first][subroom.first]->getVisibility())
+                subroom.second->set2D(status);
         }
     }
-    //Set3D(!status);
 }
 
 void GeometryFactory::Set3D(bool status)
@@ -40,10 +40,10 @@ void GeometryFactory::Set3D(bool status)
     {
         for(auto&& subroom:room.second)
         {
+            if(_geometryFactory[room.first][subroom.first]->getVisibility())
             subroom.second->set3D(status);
         }
     }
-    //Set2D(!status);
 }
 
 void GeometryFactory::Clear()
@@ -60,6 +60,7 @@ void GeometryFactory::ChangeWallsColor(double* color)
     {
         for(auto&& subroom:room.second)
         {
+            if(_geometryFactory[room.first][subroom.first]->getVisibility())
             subroom.second->changeWallsColor(color);
         }
     }
@@ -71,6 +72,7 @@ void GeometryFactory::ChangeExitsColor(double* color)
     {
         for(auto&& subroom:room.second)
         {
+            if(_geometryFactory[room.first][subroom.first]->getVisibility())
             subroom.second->changeExitsColor(color);
         }
     }
@@ -82,6 +84,7 @@ void GeometryFactory::ChangeNavLinesColor(double* color)
     {
         for(auto&& subroom:room.second)
         {
+            if(_geometryFactory[room.first][subroom.first]->getVisibility())
             subroom.second->changeNavLinesColor(color);
         }
     }
@@ -93,7 +96,8 @@ void GeometryFactory::ChangeFloorColor(double* color)
     {
         for(auto&& subroom:room.second)
         {
-            subroom.second->changeFloorColor(color);
+            if(_geometryFactory[room.first][subroom.first]->getVisibility())
+                subroom.second->changeFloorColor(color);
         }
     }
 }
@@ -104,6 +108,7 @@ void GeometryFactory::ChangeObstaclesColor(double* color)
     {
         for(auto&& subroom:room.second)
         {
+            if(_geometryFactory[room.first][subroom.first]->getVisibility())
             subroom.second->changeObstaclesColor(color);
         }
     }
@@ -115,6 +120,7 @@ void GeometryFactory::ShowDoors(bool status)
     {
         for(auto&& subroom:room.second)
         {
+            if(_geometryFactory[room.first][subroom.first]->getVisibility())
             subroom.second->showDoors(status);
         }
     }
@@ -126,6 +132,7 @@ void GeometryFactory::ShowStairs(bool status)
     {
         for(auto&& subroom:room.second)
         {
+            if(_geometryFactory[room.first][subroom.first]->getVisibility())
             subroom.second->showStairs(status);
         }
     }
@@ -137,6 +144,7 @@ void GeometryFactory::ShowWalls(bool status)
     {
         for(auto&& subroom:room.second)
         {
+            if(_geometryFactory[room.first][subroom.first]->getVisibility())
             subroom.second->showWalls(status);
         }
     }
@@ -148,6 +156,7 @@ void GeometryFactory::ShowNavLines(bool status)
     {
         for(auto&& subroom:room.second)
         {
+            if(_geometryFactory[room.first][subroom.first]->getVisibility())
             subroom.second->showNavLines(status);
         }
     }
@@ -159,10 +168,22 @@ void GeometryFactory::ShowFloor(bool status)
     {
         for(auto&& subroom:room.second)
         {
+            if(_geometryFactory[room.first][subroom.first]->getVisibility())
             subroom.second->showFloor(status);
         }
     }
 }
+void GeometryFactory::ShowObstacles(bool status)
+{
+    for (auto&& room: _geometryFactory)
+    {
+        for(auto&& subroom:room.second)
+        {
+            if(_geometryFactory[room.first][subroom.first]->getVisibility())
+            subroom.second->showObstacles(status);
+        }
+    }
+}
 
 void GeometryFactory::ShowGeometryLabels(int status)
 {
@@ -170,6 +191,7 @@ void GeometryFactory::ShowGeometryLabels(int status)
     {
         for(auto&& subroom:room.second)
         {
+            if(_geometryFactory[room.first][subroom.first]->getVisibility())
             subroom.second->showGeometryLabels(status);
         }
     }
@@ -228,7 +250,6 @@ const std::map<int , std::map<int, std::shared_ptr<FacilityGeometry> > > & Geome
 
 void GeometryFactory::AddElement(int room, int subroom, std::shared_ptr<FacilityGeometry> geo)
 {
-    //_geometryFactory.insert({room,{subroom,geo}});
     _geometryFactory[room][subroom]=geo;
 }