]> SALOME platform Git repositories - modules/shaper.git/blobdiff - src/CollectionPlugin/CollectionPlugin_GroupShape.cpp
Salome HOME
updated copyright message
[modules/shaper.git] / src / CollectionPlugin / CollectionPlugin_GroupShape.cpp
index a44ecdba7d19159cb0193d0fd1b648e9081820ea..0f8324ff82bc893f4caa7320296b88936183ee8e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2020  CEA/DEN, EDF R&D
+// Copyright (C) 2014-2023  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 
 #include "CollectionPlugin_GroupShape.h"
 #include "ModelAPI_ResultBody.h"
+#include <TopoDS.hxx>
+#include <TopoDS_Iterator.hxx>
 
 void CollectionPlugin_GroupShape::execute()
-{  
+{
   ResultGroupPtr aGroup;
   CollectionPlugin_GroupMerge::execute(aGroup);
   GeomShapePtr aCompound = aGroup->shape();
+
+  const TopoDS_Shape & aShape = aCompound->impl<TopoDS_Shape>();
+
+  if(aShape.NbChildren() == 1)
+  {
+    /// unique shape, remove compound on type
+
+    TopoDS_Iterator anIt(aShape);
+    std::shared_ptr<GeomAPI_Shape> aRes(new GeomAPI_Shape);
+    aRes->setImpl(new TopoDS_Shape(anIt.Value()));
+    aGroup->store(GeomShapePtr());
+    aGroup->store(aRes);
+    aCompound = aGroup->shape();
+  }
+
   std::shared_ptr<ModelAPI_ResultBody> theResultBody = document()->createBody(data());
   theResultBody->store(GeomShapePtr());
   if(!aCompound->empty())