]> SALOME platform Git repositories - modules/shaper.git/blobdiff - src/GeomValidators/GeomValidators_ShapeType.cpp
Salome HOME
Issue #1366: Remove Sub-Shapes feature added.
[modules/shaper.git] / src / GeomValidators / GeomValidators_ShapeType.cpp
old mode 100644 (file)
new mode 100755 (executable)
index 9b7df36..f9a4e51
@@ -25,19 +25,23 @@ static EdgeTypes MyShapeTypes;
 GeomValidators_ShapeType::TypeOfShape GeomValidators_ShapeType::shapeType(const std::string& theType)
 {
   if (MyShapeTypes.size() == 0) {
-    MyShapeTypes["empty"]  = Empty;
-    MyShapeTypes["vertex"] = Vertex;
-    MyShapeTypes["edge"]   = Edge;
-    MyShapeTypes["line"]   = Line;
-    MyShapeTypes["circle"] = Circle;
-    MyShapeTypes["face"]   = Face;
-    MyShapeTypes["solid"]  = Solid;
-    MyShapeTypes["plane"]  = Plane;
+    MyShapeTypes["empty"]     = Empty;
+    MyShapeTypes["vertex"]    = Vertex;
+    MyShapeTypes["edge"]      = Edge;
+    MyShapeTypes["line"]      = Line;
+    MyShapeTypes["circle"]    = Circle;
+    MyShapeTypes["wire"]      = Wire;
+    MyShapeTypes["face"]      = Face;
+    MyShapeTypes["plane"]     = Plane;
+    MyShapeTypes["shell"]     = Shell;
+    MyShapeTypes["solid"]     = Solid;
+    MyShapeTypes["compsolid"] = CompSolid;
+    MyShapeTypes["compound"]  = Compound;
   }
   std::string aType = std::string(theType.c_str());
   if (MyShapeTypes.find(aType) != MyShapeTypes.end())
     return MyShapeTypes[aType];
-  
+
   Events_Error::send("Shape type defined in XML is not implemented!");
   return AnyShape;
 }
@@ -197,31 +201,40 @@ bool GeomValidators_ShapeType::isValidShape(const GeomShapePtr theShape,
   }
   else {
     switch (theShapeType) {
+    case Vertex:
+      aValid = theShape->isVertex();
+      break;
     case Edge:
       aValid = theShape->isEdge();
       break;
-      case Line:
-        aValid = theShape->isEdge() && !GeomAPI_Curve(theShape).isCircle();
+    case Line:
+      aValid = theShape->isEdge() && !GeomAPI_Curve(theShape).isCircle();
       break;
-      case Circle:
-        aValid = theShape->isEdge() && GeomAPI_Curve(theShape).isCircle();
+    case Circle:
+      aValid = theShape->isEdge() && GeomAPI_Curve(theShape).isCircle();
       break;
-      case Vertex:
-        aValid = theShape->isVertex();
+    case Wire:
+      aValid = theShape->shapeType() == GeomAPI_Shape::WIRE;
+      break;
+    case Face:
+      aValid = theShape->isFace();
+      break;
+    case Shell:
+      aValid = theShape->shapeType() == GeomAPI_Shape::SHELL;
+      break;
+    case Solid:
+      aValid = theShape->isSolid() || theShape->isCompSolid() ||
+               theShape->isCompoundOfSolids();
+      break;
+    case CompSolid:
+      aValid = theShape->shapeType() == GeomAPI_Shape::COMPSOLID;
+      break;
+    case Compound:
+      aValid = theShape->isCompound();
+      break;
+    default:
+      aValid = false;
       break;
-      case Solid:
-        aValid = theShape->isSolid() || theShape->isCompSolid() ||
-                 theShape->isCompoundOfSolids();
-        break;
-      case Face:
-        aValid = theShape->isFace();
-        break;
-      case Compound:
-        aValid = theShape->isCompound();
-        break;
-      default:
-        aValid = false;
-        break;
     }
   }
   return aValid;