+ GEOM_Object MakeSolidShells (in ListOfGO theShells);
+
+ /*!
+ * Create a compound of the given shapes.
+ * \param theShapes List of shapes to put in compound.
+ * \return New GEOM_Object, containing the created compound.
+ */
+ GEOM_Object MakeCompound (in ListOfGO theShapes);
+
+ /*!
+ * Replace coincident faces in theShape by one face.
+ * \param theShape Initial shape.
+ * \param theTolerance Maximum distance between faces, which can be considered as coincident.
+ * \param doKeepNonSolids If FALSE, only solids will present in the result, otherwise all initial shapes.
+ * \return New GEOM_Object, containing a copy of theShape without coincident faces.
+ */
+ GEOM_Object MakeGlueFaces (in GEOM_Object theShape, in double theTolerance, in boolean doKeepNonSolids);
+
+ /*!
+ * Find coincident faces in theShape for possible gluing.
+ * \param theShape Initial shape.
+ * \param theTolerance Maximum distance between faces, which can be considered as coincident.
+ * \return ListOfGO
+ */
+ ListOfGO GetGlueFaces (in GEOM_Object theShape, in double theTolerance);
+
+ /*!
+ * Replace coincident faces in theShape by one face
+ * in compliance with given list of faces
+ * \param theShape Initial shape.
+ * \param theTolerance Maximum distance between faces, which can be considered as coincident.
+ * \param theFaces List of faces for gluing.
+ * \param doKeepNonSolids If FALSE, only solids will present in the result, otherwise all initial shapes.
+ * \param doGlueAllEdges If TRUE, all coincident edges of <VAR>theShape</VAR>
+ * will be glued, otherwise only the edges,
+ * belonging to <VAR>theFaces</VAR>.
+ * \return New GEOM_Object, containing a copy of theShape without some faces.
+ */
+ GEOM_Object MakeGlueFacesByList (in GEOM_Object theShape, in double theTolerance,
+ in ListOfGO theFaces, in boolean doKeepNonSolids,
+ in boolean doGlueAllEdges);
+
+ /*!
+ * Replace coincident edges in theShape by one edge.
+ * \param theShape Initial shape.
+ * \param theTolerance Maximum distance between edges, which can be considered as coincident.
+ * \return New GEOM_Object, containing a copy of theShape without coincident edges.
+ */
+ GEOM_Object MakeGlueEdges (in GEOM_Object theShape, in double theTolerance);
+
+ /*!
+ * Find coincident edges in theShape for possible gluing.
+ * \param theShape Initial shape.
+ * \param theTolerance Maximum distance between edges, which can be considered as coincident.
+ * \return ListOfGO
+ */
+ ListOfGO GetGlueEdges (in GEOM_Object theShape, in double theTolerance);
+
+ /*!
+ * Replace coincident edges in theShape by one edge
+ * in compliance with given list of edges
+ * \param theShape Initial shape.
+ * \param theTolerance Maximum distance between edges, which can be considered as coincident.
+ * \param theFaces List of edges for gluing.
+ * \return New GEOM_Object, containing a copy of theShape without some edges.
+ */
+ GEOM_Object MakeGlueEdgesByList (in GEOM_Object theShape,
+ in double theTolerance,
+ in ListOfGO theEdges);
+
+ /*!
+ * Get all sub-shapes and groups of \a theShape,
+ * that were created already by any other methods.
+ * \param theShape Any shape.
+ * \param theGroupsOnly If this parameter is TRUE, only groups will be
+ * returned, else all found sub-shapes and groups.
+ * \return List of existing sub-objects of \a theShape.
+ */
+ ListOfGO GetExistingSubObjects (in GEOM_Object theShape,
+ in boolean theGroupsOnly);
+
+ /*!
+ * Deprecated method. Use MakeAllSubShapes() instead.
+ */
+ ListOfGO MakeExplode (in GEOM_Object theShape,
+ in long theShapeType,
+ in boolean isSorted);
+
+ /*!
+ * Explode a shape on subshapes of a given type. If the
+ * shape itself has the given type, it is also returned.
+ * \param theShape Shape to be exploded.
+ * \param theShapeType Type of sub-shapes to be retrieved.
+ * \param isSorted If this parameter is TRUE, sub-shapes will be
+ * sorted by coordinates of their gravity centers.
+ * \return List of sub-shapes of type theShapeType, contained in theShape.
+ */
+ ListOfGO MakeAllSubShapes (in GEOM_Object theShape,
+ in long theShapeType,
+ in boolean isSorted);
+
+ /*!
+ * Extract all subshapes of the given type from
+ * the given shape, excluding the shape itself.
+ * \param theShape Shape to be exploded.
+ * \param theShapeType Type of sub-shapes to be retrieved.
+ * \param isSorted If this parameter is TRUE, sub-shapes will be
+ * sorted by coordinates of their gravity centers.
+ * \return List of sub-shapes of type theShapeType, contained in theShape.
+ */
+ ListOfGO ExtractSubShapes (in GEOM_Object theShape,
+ in long theShapeType,
+ in boolean isSorted);
+
+ /*!
+ * Deprecated method. Use GetAllSubShapesIDs() instead.
+ */
+ ListOfLong SubShapeAllIDs (in GEOM_Object theShape,
+ in long theShapeType,
+ in boolean isSorted);
+
+ /*!
+ * Explode a shape on subshapes of a given type.
+ * Does the same, as MakeAllSubShapes, but returns IDs of
+ * sub-shapes, not GEOM_Objects. It works faster.
+ * \param theShape Shape to be exploded.
+ * \param theShapeType Type of sub-shapes to be retrieved.
+ * \param isSorted If this parameter is TRUE, sub-shapes will be
+ * sorted by coordinates of their gravity centers.
+ * \return List of IDs of sub-shapes of type theShapeType, contained in theShape.
+ */
+ ListOfLong GetAllSubShapesIDs (in GEOM_Object theShape,
+ in long theShapeType,
+ in boolean isSorted);
+
+ /*!
+ * Get a sub shape defined by its unique ID inside \a theMainShape
+ * \param theMainShape Main shape.
+ * \param theID Unique ID of sub shape inside \a theMainShape.
+ * \return GEOM_Object, corresponding to found sub shape.
+ * \note The sub shape GEOM_Objects can has ONLY ONE function.
+ * Don't try to apply modification operations (without copy) on them.
+ */
+ GEOM_Object GetSubShape (in GEOM_Object theMainShape,
+ in long theID);
+
+ /*!
+ * Get a set of sub shapes defined by their unique IDs inside \a theMainShape
+ * \param theMainShape Main shape.
+ * \param theIndices List of unique IDs of sub shapes inside \a theMainShape.
+ * \return List of GEOM_Objects, corresponding to found sub shapes.
+ * \note The sub shape GEOM_Objects can has ONLY ONE function.
+ * Don't try to apply modification operations (without copy) on them.
+ */
+ ListOfGO MakeSubShapes (in GEOM_Object theMainShape,
+ in ListOfLong theIndices);
+
+ /*!
+ * Get global index of \a theSubShape in \a theMainShape.
+ * \param theMainShape Main shape.
+ * \param theSubShape Sub-shape of the main shape.
+ * \return global index of \a theSubShape in \a theMainShape.
+ */
+ long GetSubShapeIndex (in GEOM_Object theMainShape, in GEOM_Object theSubShape);
+
+ /*!
+ * Get index of \a theSubShape in \a theMainShape, unique among sub-shapes of the same type.
+ * Together with method <VAR>GetShapeTypeString()</VAR> it can be used
+ * to generate automatic names for sub-shapes, when publishing them in a study.
+ * \param theMainShape Main shape.
+ * \param theSubShape Sub-shape of the main shape.
+ * \return index of \a theSubShape in a list of all sub-shapes of \a theMainShape of the same type.
+ */
+ long GetTopologyIndex (in GEOM_Object theMainShape, in GEOM_Object theSubShape);
+
+ /*!
+ * \brief Get name of type of \a theShape.
+ *
+ * Use wide type notation, taking into consideration both topology and geometry of the shape.
+ * Together with method <VAR>GetTopologyIndex()</VAR> it can be used
+ * to generate automatic names for sub-shapes, when publishing them in a study.
+ * \param theShape The shape to get a type of.
+ * \return String, containing a type name of \a theShape.
+ */
+ string GetShapeTypeString (in GEOM_Object theShape);
+
+ /*!
+ * Count number of faces in the given shape.
+ * \param theShape Shape to count faces in.
+ * \return Number of faces in the given shape.
+ */
+ long NumberOfFaces (in GEOM_Object theShape);
+
+ /*!
+ * Count number of edges in the given shape.
+ * \param theShape Shape to count edges in.
+ * \return Number of edges in theShape.
+ */
+ long NumberOfEdges (in GEOM_Object theShape);
+
+ /*!
+ * Count number of subshapes of type \a theShapeType in the given shape.
+ * \param theShape Shape to count subshapes in.
+ * \param theShapeType The type of subshapes to count.
+ * \return Number of subshapes of type \a theShapeType in \a theShape.
+ */
+ long NumberOfSubShapes (in GEOM_Object theShape,
+ in long theShapeType);
+
+ /*!
+ * Reverses an orientation the given shape.
+ * \param theShape Shape to be reversed.
+ * \return The reversed copy of theShape.
+ */
+ GEOM_Object ChangeOrientation (in GEOM_Object theShape);
+
+ /*!
+ * Retrieve all free faces from the given shape.
+ * Free face is a face, which is not shared between two shells of the shape.
+ * \param theShape Shape to find free faces in.
+ * \return List of IDs of all free faces, contained in theShape.
+ */
+ ListOfLong GetFreeFacesIDs (in GEOM_Object theShape);
+
+ /*!
+ * Get all sub-shapes of theShape1 of the given type, shared with theShape2.
+ * \param theShape1 Shape to find sub-shapes in.
+ * \param theShape2 Shape to find shared sub-shapes with.
+ * \param theShapeType Type of sub-shapes to be retrieved.
+ * \return List of sub-shapes of theShape1, shared with theShape2.
+ */
+ ListOfGO GetSharedShapes (in GEOM_Object theShape1,
+ in GEOM_Object theShape2,
+ in long theShapeType);