+GeomPointPtr GeomAPI_Shape::middlePoint() const
+{
+ GeomPointPtr aMiddlePoint;
+
+ switch (shapeType()) {
+ case VERTEX:
+ aMiddlePoint = vertex()->point();
+ break;
+ case EDGE:
+ aMiddlePoint = edge()->middlePoint();
+ break;
+ case WIRE:
+ aMiddlePoint = wire()->middlePoint();
+ break;
+ case FACE:
+ aMiddlePoint = face()->middlePoint();
+ break;
+ case SHELL:
+ aMiddlePoint = shell()->middlePoint();
+ break;
+ case SOLID:
+ aMiddlePoint = solid()->middlePoint();
+ break;
+ default: {
+ // get middle point as center of the bounding box
+ double aMinX, aMinY, aMinZ, aMaxX, aMaxY, aMaxZ;
+ computeSize(aMinX, aMinY, aMinZ, aMaxX, aMaxY, aMaxZ);
+ aMiddlePoint = GeomPointPtr(new GeomAPI_Pnt(
+ (aMinX + aMaxX) * 0.5, (aMinY + aMaxY) * 0.5, (aMinZ + aMaxZ) * 0.5));
+ }
+ }
+
+ return aMiddlePoint;
+}
+