Salome HOME
[bos #40619][CEA] Add Fuzzy parameter to partition and boolean operators
[modules/geom.git] / src / GEOM_I / GEOM_IGroupOperations_i.cc
index 60a26e129bece1f5fd8fdf3bfe7d60900f3aead4..9f783987222cd85bf5f48cce910d745ee7871e5e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -6,7 +6,7 @@
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -18,6 +18,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 
 #include <Standard_Stream.hxx>
 
@@ -73,11 +74,11 @@ GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::CreateGroup(GEOM::GEOM_Object_ptr
   if (theShapeType < 0) return aGEOMObject._retn();
 
   //Get the reference shape
-  Handle(GEOM_Object) aShapeRef = GetObjectImpl(theMainShape);
+  Handle(::GEOM_Object) aShapeRef = GetObjectImpl(theMainShape);
   if (aShapeRef.IsNull()) return aGEOMObject._retn();
 
   //Create the Fillet
-  Handle(GEOM_Object) anObject = GetOperations()->CreateGroup(aShapeRef, (TopAbs_ShapeEnum)theShapeType);
+  Handle(::GEOM_Object) anObject = GetOperations()->CreateGroup(aShapeRef, (TopAbs_ShapeEnum)theShapeType);
   if (!GetOperations()->IsDone() || anObject.IsNull())
     return aGEOMObject._retn();
 
@@ -95,10 +96,13 @@ void GEOM_IGroupOperations_i::AddObject(GEOM::GEOM_Object_ptr theGroup, CORBA::L
   GetOperations()->SetNotDone();
 
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
+  Handle(::GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return;
 
   GetOperations()->AddObject(aGroupRef, theSubShapeId);
+
+  // Update GUI.
+  UpdateGUIForObject(theGroup);
 }
 
 //=============================================================================
@@ -112,10 +116,13 @@ void GEOM_IGroupOperations_i::RemoveObject(GEOM::GEOM_Object_ptr theGroup, CORBA
   GetOperations()->SetNotDone();
 
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
+  Handle(::GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return;
 
   GetOperations()->RemoveObject(aGroupRef, theSubShapeId);
+
+  // Update GUI.
+  UpdateGUIForObject(theGroup);
 }
 
 //=============================================================================
@@ -130,7 +137,7 @@ void GEOM_IGroupOperations_i::UnionList (GEOM::GEOM_Object_ptr theGroup,
   GetOperations()->SetNotDone();
 
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
+  Handle(::GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return;
 
   //Get sub-shape to add
@@ -138,7 +145,7 @@ void GEOM_IGroupOperations_i::UnionList (GEOM::GEOM_Object_ptr theGroup,
 
   int ind, aLen = theSubShapes.length();
   for (ind = 0; ind < aLen; ind++) {
-    Handle(GEOM_Object) aSh = GetObjectImpl(theSubShapes[ind]);
+    Handle(::GEOM_Object) aSh = GetObjectImpl(theSubShapes[ind]);
     if (aSh.IsNull()) return;
     aSubShapes->Append(aSh);
   }
@@ -159,7 +166,7 @@ void GEOM_IGroupOperations_i::DifferenceList (GEOM::GEOM_Object_ptr theGroup,
   GetOperations()->SetNotDone();
 
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
+  Handle(::GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return;
 
   //Get sub-shape to remove
@@ -167,7 +174,7 @@ void GEOM_IGroupOperations_i::DifferenceList (GEOM::GEOM_Object_ptr theGroup,
 
   int ind, aLen = theSubShapes.length();
   for (ind = 0; ind < aLen; ind++) {
-    Handle(GEOM_Object) aSh = GetObjectImpl(theSubShapes[ind]);
+    Handle(::GEOM_Object) aSh = GetObjectImpl(theSubShapes[ind]);
     if (aSh.IsNull()) return;
     aSubShapes->Append(aSh);
   }
@@ -188,7 +195,7 @@ void GEOM_IGroupOperations_i::UnionIDs (GEOM::GEOM_Object_ptr   theGroup,
   GetOperations()->SetNotDone();
 
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
+  Handle(::GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return;
 
   //Get sub-shape to add
@@ -215,7 +222,7 @@ void GEOM_IGroupOperations_i::DifferenceIDs (GEOM::GEOM_Object_ptr   theGroup,
   GetOperations()->SetNotDone();
 
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
+  Handle(::GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return;
 
   //Get sub-shape to remove
@@ -244,12 +251,12 @@ GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::UnionGroups (GEOM::GEOM_Object_pt
   GetOperations()->SetNotDone();
 
   //Get the reference groups
-  Handle(GEOM_Object) aGroupRef1 = GetObjectImpl(theGroup1);
-  Handle(GEOM_Object) aGroupRef2 = GetObjectImpl(theGroup2);
+  Handle(::GEOM_Object) aGroupRef1 = GetObjectImpl(theGroup1);
+  Handle(::GEOM_Object) aGroupRef2 = GetObjectImpl(theGroup2);
   if (aGroupRef1.IsNull() || aGroupRef2.IsNull()) return aGEOMObject._retn();
 
   //Perform the operation
-  Handle(GEOM_Object) anObject = GetOperations()->UnionGroups(aGroupRef1, aGroupRef2);
+  Handle(::GEOM_Object) anObject = GetOperations()->UnionGroups(aGroupRef1, aGroupRef2);
   if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
 
   return GetObject(anObject);
@@ -269,12 +276,12 @@ GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::IntersectGroups (GEOM::GEOM_Objec
   GetOperations()->SetNotDone();
 
   //Get the reference groups
-  Handle(GEOM_Object) aGroupRef1 = GetObjectImpl(theGroup1);
-  Handle(GEOM_Object) aGroupRef2 = GetObjectImpl(theGroup2);
+  Handle(::GEOM_Object) aGroupRef1 = GetObjectImpl(theGroup1);
+  Handle(::GEOM_Object) aGroupRef2 = GetObjectImpl(theGroup2);
   if (aGroupRef1.IsNull() || aGroupRef2.IsNull()) return aGEOMObject._retn();
 
   //Perform the operation
-  Handle(GEOM_Object) anObject = GetOperations()->IntersectGroups(aGroupRef1, aGroupRef2);
+  Handle(::GEOM_Object) anObject = GetOperations()->IntersectGroups(aGroupRef1, aGroupRef2);
   if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
 
   return GetObject(anObject);
@@ -294,12 +301,12 @@ GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::CutGroups (GEOM::GEOM_Object_ptr
   GetOperations()->SetNotDone();
 
   //Get the reference groups
-  Handle(GEOM_Object) aGroupRef1 = GetObjectImpl(theGroup1);
-  Handle(GEOM_Object) aGroupRef2 = GetObjectImpl(theGroup2);
+  Handle(::GEOM_Object) aGroupRef1 = GetObjectImpl(theGroup1);
+  Handle(::GEOM_Object) aGroupRef2 = GetObjectImpl(theGroup2);
   if (aGroupRef1.IsNull() || aGroupRef2.IsNull()) return aGEOMObject._retn();
 
   //Perform the operation
-  Handle(GEOM_Object) anObject = GetOperations()->CutGroups(aGroupRef1, aGroupRef2);
+  Handle(::GEOM_Object) anObject = GetOperations()->CutGroups(aGroupRef1, aGroupRef2);
   if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
 
   return GetObject(anObject);
@@ -322,13 +329,13 @@ GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::UnionListOfGroups (const GEOM::Li
 
   int ind, aLen = theGList.length();
   for (ind = 0; ind < aLen; ind++) {
-    Handle(GEOM_Object) aGr = GetObjectImpl(theGList[ind]);
+    Handle(::GEOM_Object) aGr = GetObjectImpl(theGList[ind]);
     if (aGr.IsNull()) return aGEOMObject._retn();
     aGroups->Append(aGr);
   }
 
   //Perform the operation
-  Handle(GEOM_Object) anObject = GetOperations()->UnionListOfGroups(aGroups);
+  Handle(::GEOM_Object) anObject = GetOperations()->UnionListOfGroups(aGroups);
   if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
 
   return GetObject(anObject);
@@ -351,13 +358,13 @@ GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::IntersectListOfGroups (const GEOM
 
   int ind, aLen = theGList.length();
   for (ind = 0; ind < aLen; ind++) {
-    Handle(GEOM_Object) aGr = GetObjectImpl(theGList[ind]);
+    Handle(::GEOM_Object) aGr = GetObjectImpl(theGList[ind]);
     if (aGr.IsNull()) return aGEOMObject._retn();
     aGroups->Append(aGr);
   }
 
   //Perform the operation
-  Handle(GEOM_Object) anObject = GetOperations()->IntersectListOfGroups(aGroups);
+  Handle(::GEOM_Object) anObject = GetOperations()->IntersectListOfGroups(aGroups);
   if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
 
   return GetObject(anObject);
@@ -382,19 +389,19 @@ GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::CutListOfGroups (const GEOM::List
 
   int ind, aLen = theGList1.length();
   for (ind = 0; ind < aLen; ind++) {
-    Handle(GEOM_Object) aGr = GetObjectImpl(theGList1[ind]);
+    Handle(::GEOM_Object) aGr = GetObjectImpl(theGList1[ind]);
     if (aGr.IsNull()) return aGEOMObject._retn();
     aGroups1->Append(aGr);
   }
   aLen = theGList2.length();
   for (ind = 0; ind < aLen; ind++) {
-    Handle(GEOM_Object) aGr = GetObjectImpl(theGList2[ind]);
+    Handle(::GEOM_Object) aGr = GetObjectImpl(theGList2[ind]);
     if (aGr.IsNull()) return aGEOMObject._retn();
     aGroups2->Append(aGr);
   }
 
   //Perform the operation
-  Handle(GEOM_Object) anObject = GetOperations()->CutListOfGroups(aGroups1, aGroups2);
+  Handle(::GEOM_Object) anObject = GetOperations()->CutListOfGroups(aGroups1, aGroups2);
   if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
 
   return GetObject(anObject);
@@ -411,7 +418,7 @@ CORBA::Long GEOM_IGroupOperations_i::GetType(GEOM::GEOM_Object_ptr theGroup)
   GetOperations()->SetNotDone();
 
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
+  Handle(::GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return -1;
 
   return GetOperations()->GetType(aGroupRef);
@@ -430,10 +437,10 @@ GEOM::GEOM_Object_ptr GEOM_IGroupOperations_i::GetMainShape(GEOM::GEOM_Object_pt
   GetOperations()->SetNotDone();
 
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
+  Handle(::GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return aGEOMObject._retn();
 
-  Handle(GEOM_Object) anObject = GetOperations()->GetMainShape(aGroupRef);
+  Handle(::GEOM_Object) anObject = GetOperations()->GetMainShape(aGroupRef);
   if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn();
 
   return GetObject(anObject);
@@ -452,7 +459,7 @@ GEOM::ListOfLong* GEOM_IGroupOperations_i::GetObjects(GEOM::GEOM_Object_ptr theG
   GetOperations()->SetNotDone();
 
   //Get the reference group
-  Handle(GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
+  Handle(::GEOM_Object) aGroupRef = GetObjectImpl(theGroup);
   if (aGroupRef.IsNull()) return aList._retn();
 
   aList = new GEOM::ListOfLong;