+ in GEOM_Object theShapeWhat);
+
+ /*!
+ * Old implementation of GetInPlace functionality, based on shape properties.
+ */
+ GEOM_Object GetInPlaceOld (in GEOM_Object theShapeWhere,
+ in GEOM_Object theShapeWhat);
+
+ /*!
+ * \brief Get sub-shape(s) of \a theShapeWhere, which are
+ * coincident with \a theShapeWhat or could be a part of it.
+ *
+ * Implementation of this method is based on a saved history of an operation,
+ * produced \a theShapeWhere. The \a theShapeWhat must be among this operation's
+ * arguments (an argument shape or a sub-shape of an argument shape).
+ * The operation could be the Partition or one of boolean operations,
+ * performed on simple shapes (not on compounds).
+ *
+ * \param theShapeWhere Shape to find sub-shapes of.
+ * \param theShapeWhat Shape, specifying what to find.
+ * \return Compound which includes all found sub-shapes if they have different types;
+ * or group of all found shapes of the equal type; or a single found sub-shape.
+ */
+ GEOM_Object GetInPlaceByHistory (in GEOM_Object theShapeWhere,
+ in GEOM_Object theShapeWhat);
+
+ /*!
+ * \brief Get sub-shape of theShapeWhere, which are
+ * coincident with \a theShapeWhat that can either SOLID, FACE, EDGE or VERTEX.
+ * \param theShapeWhere Shape to find sub-shapes of.
+ * \param theShapeWhat Shape, specifying what to find.
+ * \return found sub-shape.
+ */
+ GEOM_Object GetSame (in GEOM_Object theShapeWhere,
+ in GEOM_Object theShapeWhat);
+
+ /*!
+ * \brief Get sub-shape Ids of theShapeWhere, which are
+ * coincident with \a theShapeWhat that can either SOLID, FACE, EDGE or VERTEX.
+ * \param theShapeWhere Shape to find sub-shapes of.
+ * \param theShapeWhat Shape, specifying what to find.
+ * \return found sub-shape Ids.
+ */
+ ListOfLong GetSameIDs (in GEOM_Object theShapeWhere,
+ in GEOM_Object theShapeWhat);
+
+ /*!
+ * \brief Resize the input edge with the new Min and Max parameters.
+ * The input edge parameters range is [0, 1]. If theMin parameter is
+ * negative, the input edge is extended, otherwise it is shrinked by
+ * theMin parameter. If theMax is greater than 1, the edge is extended,
+ * otherwise it is shrinked by theMax parameter.
+ * \param theEdge the input edge to be resized.
+ * \param theMin the minimal parameter value.
+ * \param theMax the maximal parameter value.
+ * \return a newly created edge.
+ */
+ GEOM_Object ExtendEdge(in GEOM_Object theEdge,
+ in double theMin,
+ in double theMax);
+
+ /*!
+ * \brief Resize the input face with the new UMin, UMax, VMin and VMax
+ * parameters. The input face U and V parameters range is [0, 1]. If
+ * theUMin parameter is negative, the input face is extended, otherwise
+ * it is shrinked along U direction by theUMin parameter. If theUMax is
+ * greater than 1, the face is extended, otherwise it is shrinked along
+ * U direction by theUMax parameter. So as for theVMin, theVMax and
+ * V direction of the input face.
+ * \param theFace the input face to be resized.
+ * \param theUMin the minimal U parameter value.
+ * \param theUMax the maximal U parameter value.
+ * \param theVMin the minimal V parameter value.
+ * \param theVMax the maximal V parameter value.
+ * \return a newly created face.
+ */
+ GEOM_Object ExtendFace(in GEOM_Object theFace,
+ in double theUMin,
+ in double theUMax,
+ in double theVMin,
+ in double theVMax);
+
+ /*!
+ * \brief Make a surface from a face. This function takes some face as
+ * input parameter and creates new GEOM_Object, i.e. topological shape
+ * by extracting underlying surface of the source face and limiting it
+ * by the Umin, Umax, Vmin, Vmax parameters of the source face (in the
+ * parametrical space).
+ * \param theFace the input face.
+ * \return a newly created face.
+ */
+ GEOM_Object MakeSurfaceFromFace(in GEOM_Object theFace);
+
+ /*!
+ * \brief Explode a shape into edges sorted in a row from a starting point.
+ * \param theShape - the shape to be exploded on edges.
+ * \param theStartPoint - the starting point.
+ * \return Ordered list of edges sorted in a row from a starting point.
+ */
+ ListOfGO GetSubShapeEdgeSorted (in GEOM_Object theShape,
+ in GEOM_Object theStartPoint);
+
+ /*!
+ * \brief Return the list of subshapes that satisfies a certain tolerance
+ * criterion. The user defines the type of shapes to be returned, the
+ * condition and the tolerance value. The operation is defined for
+ * faces, edges and vertices only. E.g. for theShapeType FACE, theCondition
+ * CC_GT and theTolerance 1.e-7 this method returns all faces of theShape
+ * that have tolerances greater then 1.e7.
+ *
+ * \param theShape the shape to be exploded
+ * \param theShapeType the type of shapes to be returned. Can have the
+ * values FACE, EDGE and VERTEX only.
+ * \param theCondition the condition type.
+ * \param theTolerance the tolerance filter.
+ * \return the list of shapes that satisfy the conditions.
+ */
+ ListOfGO GetSubShapesWithTolerance(in GEOM_Object theShape,
+ in short theShapeType,
+ in comparison_condition theCondition,
+ in double theTolerance);
+
+ /**
+ * This enumeration represents an extraction statistics type. It is used in
+ * the interface GEOM_IShapesOperations::MakeExtraction.
+ */
+ enum ExtractionStatType
+ {
+ EST_Removed, ///< Removed sub-shapes
+ EST_Modified, ///< Modified sub-shapes
+ EST_Added ///< Newly created sub-shapes
+ };
+
+ /*!
+ * This structure defines a format of extraction statistics. It is used in
+ * the interface GEOM_IShapesOperations::MakeExtraction.
+ */
+ struct ExtractionStat
+ {
+ ExtractionStatType type; ///< Type of extraction statistics.
+ ListOfLong indices; ///< Shape indices touched by this type of modification.
+ };
+
+ typedef sequence<ExtractionStat> ExtractionStats;
+
+ /*!
+ * \brief Return the shape that is constructed from theShape without
+ * extracted sub-shapes from the input list.
+ *
+ * \param theShape the original shape.
+ * \param theSubShapeIDs the list of sub-shape IDs to be extracted from
+ * the original shape.
+ * \param theStats the operation statistics. Output parameter.
+ * \return the shape without extracted sub-shapes.
+ */
+ GEOM_Object MakeExtraction(in GEOM_Object theShape,
+ in ListOfLong theSubShapeIDs,
+ out ExtractionStats theStats);
+