-// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
*/
enum shape_type
{
- /*! */
+ /*! A collection of arbitrary shapes */
COMPOUND,
/*! A collection of solids */
COMPSOLID,
SOLID,
/*! A collection of faces connected by some edges of their wire boundaries */
SHELL,
- /*! Part of a plane (in 2D geometry) or a surface (in 3D geometry) bounded by a close wire */
+ /*! Part of a plane (in 2D geometry) or a surface (in 3D geometry) bounded by a closed wire */
FACE,
- /*! A sequence of edges connected by their vertices */
+ /*! A sequence of edges connected by their vertices */
WIRE,
/*! Edge, a shape corresponding to a curve, and bound by a vertex at each extremity */
EDGE,
/*! A zero-dimensional shape corresponding to a point in geometry */
VERTEX,
- /*! */
- SHAPE };
+ /*! Arbitrary shape in a Compound (used for processing of Compounds in some operations) */
+ SHAPE,
+ /*! Flat (top-level) contents of a Compound (used for processing of Compounds in some operations) */
+ FLAT
+ };
/*!
* \brief Marker type
*/
- enum marker_type { MT_NONE, MT_POINT, MT_PLUS, MT_STAR, MT_O, MT_X, MT_O_POINT, MT_O_PLUS,
- MT_O_STAR, MT_O_X, MT_BALL, MT_RING1, MT_RING2, MT_RING3, MT_USER };
+ enum marker_type { MT_NONE, MT_POINT, MT_PLUS, MT_STAR, MT_X, MT_O, MT_O_POINT, MT_O_PLUS,
+ MT_O_STAR, MT_O_X, MT_RING1, MT_RING2, MT_RING3, MT_BALL, MT_USER };
/*!
* /brief Marker size
/*!
* \brief Kind of the curves.
*
- * Used in the functions GEOM_ICurvesOperations.MakeCurveParametric(), GEOM_ICurvesOperations.MakeCurveParametricNew()
+ * Used in the functions GEOM_ICurvesOperations.MakeCurveParametric(), GEOM_ICurvesOperations.MakeCurveParametricNew(),
+ * GEOM_ICurvesOperations.MakePolyline2D, GEOM_ICurvesOperations.MakePolyline2DOnPlane.
*/
enum curve_type {
/*! Polyline curve */
};
/*!
- * \brief Pattern for block division of the disk
+ * \brief Type of field data
+ */
+ enum field_data_type {
+ FDT_Bool,
+ FDT_Int,
+ FDT_Double,
+ FDT_String
+ };
+
+ /**
+ * This enumeration represents the level of checking shape on
+ * self-interference. It defines which interferferences will be checked.
+ */
+ enum si_check_level
+ {
+ SI_V_V, // only V/V interferences
+ SI_V_E, // V/V and V/E interferences
+ SI_E_E, // V/V, V/E and E/E interferences
+ SI_V_F, // V/V, V/E, E/E and V/F interferences
+ SI_E_F, // V/V, V/E, E/E, V/F and E/F interferences
+ SI_ALL // all interferences
+ };
+
+
+ /*!
+ * \brief Object creation parameters
*
- * Used in the functions GEOM_IAdvancedOperations.MakeDividedDisk(), GEOM_ICurvesOperations.MakeDividedDiskPntVecR()
+ * Is returned by GEOM_Object::GetCreationInformation()
*/
- enum pattern {
- /*! Square */
- SQUARE,
-
- /*! Hexagon */
- HEXAGON
+ struct Parameter
+ {
+ string name;
+ //any value;
+ string value;
+ };
+ typedef sequence<Parameter> Parameters;
+
+ struct CreationInformation
+ {
+ string operationName;
+ Parameters params;
};
- typedef sequence<string> string_array;
- typedef sequence<short> short_array;
- typedef sequence<boolean> ListOfBool;
- typedef sequence<long> ListOfLong;
- typedef sequence<double> ListOfDouble;
+ typedef sequence<string> string_array;
+ typedef sequence<short> short_array;
+ typedef sequence<boolean> ListOfBool;
+ typedef sequence<long> ListOfLong;
+ typedef sequence<double> ListOfDouble;
+ typedef sequence<ListOfDouble> ListOfListOfDouble;
interface GEOM_Object;
+ interface GEOM_BaseObject;
+ interface GEOM_Field;
+ interface GEOM_FieldStep;
- typedef sequence<GEOM_Object> ListOfGO;
+ typedef sequence<GEOM_Object> ListOfGO;
+ typedef sequence<GEOM_BaseObject> ListOfGBO;
+ typedef sequence<GEOM_Field> ListOfFields;
+ typedef sequence<SALOMEDS::SObject> object_list;
- //# GEOM_Object
+ //# GEOM_BaseObject
/*!
- * \brief Interface of geometric object
+ * \brief A common root of objects in GEOM module
*/
- interface GEOM_Object : SALOME::GenericObj
+ interface GEOM_BaseObject : SALOME::GenericObj
{
+ /*!
+ * \brief Set name of the object.
+ *
+ * \param theName is a name which will be associated with this object.
+ */
+ void SetName (in string theName);
/*!
- * \brief Get an entry of the object in GEOM component.
+ * \brief Get name of the object associated with this object.
+ */
+ string GetName();
+
+ /*!
+ * \brief Get internal (unique) entry of the object in the GEOM component's data tree.
+ * \note This is not an entry of the data object in SALOME study.
+ * This is internal function of GEOM component, though it can be used outside it for
+ appropriate reason (e.g. for unique identification of geometry object).
*/
string GetEntry();
*/
long GetType();
+ /*!
+ * \brief Get value of a modification counter of the object
+ */
+ long GetTick();
+
+ /*!
+ * \brief Set a Study entry where this object was published.
+ */
+ void SetStudyEntry (in string theEntry);
+
+ /*!
+ * \brief Get a Study entry where this object was published.
+ */
+ string GetStudyEntry();
+
+ /*!
+ * \brief Get a list of all GEOM_Object on which were the arguments
+ * when this object was constructed and modified.
+ * \note This method is supposed to be used by GUI only.
+ */
+ ListOfGBO GetDependency();
+
+ /*!
+ * \brief Get a list of GEOM_Object on which the last function that created or modified the object depends.
+ * \note This method is supposed to be used by GUI only.
+ */
+ ListOfGBO GetLastDependency();
+
+ /*
+ * \brief Return true if geom object representes a shape.
+ *
+ * For example, method return false for GEOM_MARKER
+ */
+ boolean IsShape();
+
+ /*
+ * \brief Return true if passed object is identical to this object
+ *
+ * \param other object being compared with this one
+ */
+ boolean IsSame(in GEOM_BaseObject other);
+
+ /*!
+ * Set list of parameters
+ * \param theParameters is a string containing the notebook variables separated by ":" symbol,
+ * used for object creation
+ */
+ void SetParameters (in string theParameters);
+
+ /*!
+ * \brief Return list of notebook variables used for object creation separated by ":" symbol
+ */
+ string GetParameters();
+
+ /*!
+ * \brief Return name of operation and values of parameters used for object creation
+ */
+ CreationInformation GetCreationInformation();
+ };
+
+ //# GEOM_Object
+ /*!
+ * \brief Interface of geometric object
+ */
+ interface GEOM_Object : GEOM_BaseObject
+ {
/*!
* \brief Get a <VAR>shape_type</VAR> of the object value.
*/
*/
shape_type GetMaxShapeType();
- /*!
- * \brief Set name of the object.
- *
- * \param theName is a name which will be associated with this object.
- */
- void SetName (in string theName);
-
- /*!
- * \brief Get name of the object associated with this object.
- */
- string GetName();
-
/*!
* \brief Set color of the object.
*
*/
long GetMarkerTexture();
- /*!
- * \brief Set a Study entry where this object was published.
- */
- void SetStudyEntry (in string theEntry);
-
- /*!
- * \brief Get a Study entry where this object was published.
- */
- string GetStudyEntry();
-
- /*!
- * \brief Get a list of all GEOM_Object on which were the arguments
- * when this object was constructed and modified.
- * \note This method is supposed to be used by GUI only.
- */
- ListOfGO GetDependency();
-
- /*!
- * \brief Get a list of GEOM_Object on which the last function that created or modified the object depends.
- * \note This method is supposed to be used by GUI only.
- */
- ListOfGO GetLastDependency();
-
/*!
* \brief Get the TopoDS_Shape, for colocated case only.
*/
// # Internal methods (For sub-shape identification)
// ######################################################################
/*!
- * \brief Get geometric shape of the object as a byte stream
+ * \brief Get geometric shape of the object as a byte stream in BRep format
+ * \note GEOM_IInsertOperations::RestoreShape() method can be used to restore shape from a BRep stream.
*/
SALOMEDS::TMPFile GetShapeStream();
*/
GEOM_Object GetMainShape();
- /*
- * \brief Return true if geom object representes a shape.
- *
- * For example, method return false for GEOM_MARKER
+ };
+
+ //# GEOM_Field
+ /*!
+ * \brief Interface of the field
+ */
+ interface GEOM_Field : GEOM_BaseObject
+ {
+ /*!
+ * \brief Returns the shape the field lies on
*/
- boolean IsShape();
+ GEOM_Object GetShape();
- /*
- * \brief Return true if passed object is identical to this object
- *
- * \param other object being compared with this one
+ /*!
+ * \brief Returns type of field data
*/
- boolean IsSame(in GEOM_Object other);
+ field_data_type GetDataType();
- /*!
- * Set list of parameters
- * \param theParameters is a string containing the notebook variables separated by ":" symbol,
- * used for object creation
+ /*!
+ * \brief Returns dimension of the shape the field lies on
+ * 0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
*/
- void SetParameters (in string theParameters);
+ short GetDimension();
/*!
- * \brief Return list of notebook variables used for object creation separated by ":" symbol
+ * \brief Returns names of components
*/
- string GetParameters();
+ string_array GetComponents();
+
+ /*!
+ * \brief Removes a component. Component number counts from one.
+ */
+ //void RemoveComponent(in long number);
+
+ /*!
+ * \brief Adds a time step to the field
+ */
+ GEOM_FieldStep AddStep(in long stepID, in long stamp);
+
+ /*!
+ * \brief Remove a time step from the field
+ */
+ void RemoveStep(in long stepID);
+
+ /*!
+ * \brief Returns number of time steps in the field
+ */
+ long CountSteps();
+
+ /*!
+ * \brief Returns a list of time step IDs in the field
+ */
+ ListOfLong GetSteps();
+
+ /*!
+ * \brief Returns a time step by its ID
+ */
+ GEOM_FieldStep GetStep(in long stepID);
+
+ /*!
+ * \brief Returns a size of data array that is to be passed to
+ * GEOM_FieldStep.SetValues( dataArray ). This size depends on the
+ * number of sub-shapes of field dimension and the number of components
+ */
+ long GetArraySize();
+ };
+
+ // # GEOM_FieldStep:
+ /*!
+ * \brief Interface of the field time step
+ */
+ interface GEOM_FieldStep : GEOM_BaseObject
+ {
+ /*!
+ * \brief Changes the time of the field step
+ */
+ void SetStamp(in long stamp);
+
+ /*!
+ * \brief Returns the time of the field step
+ */
+ long GetStamp();
+
+ /*!
+ * \brief Returns the number of the field step
+ */
+ long GetID();
+
+ /*!
+ * \brief Returns the field the step belongs to
+ */
+ GEOM_Field GetField();
};
- // # GEOM_IOperations:
+ // # GEOM_BoolFieldStep:
+ /*!
+ * \brief Interface of the boolean field time step
+ */
+ interface GEOM_BoolFieldStep : GEOM_FieldStep
+ {
+ /*!
+ * \brief Changes values of the field step. Returns false if number of values is wrong
+ */
+ boolean SetValues(in short_array boolValues);
+
+ /*!
+ * \brief Returns values of the field step
+ */
+ short_array GetValues();
+ };
+
+ // # GEOM_IntFieldStep:
+ /*!
+ * \brief Interface of the integer field time step
+ */
+ interface GEOM_IntFieldStep : GEOM_FieldStep
+ {
+ /*!
+ * \brief Changes values of the field step. Returns false if number of values is wrong
+ */
+ boolean SetValues(in ListOfLong intValues);
+
+ /*!
+ * \brief Returns values of the field step
+ */
+ ListOfLong GetValues();
+ };
+
+ // # GEOM_DoubleFieldStep:
+ /*!
+ * \brief Interface of the double field time step
+ */
+ interface GEOM_DoubleFieldStep : GEOM_FieldStep
+ {
+ /*!
+ * \brief Changes values of the field step. Returns false if number of values is wrong
+ */
+ boolean SetValues(in ListOfDouble doubleValues);
+
+ /*!
+ * \brief Returns values of the field step
+ */
+ ListOfDouble GetValues();
+ };
+
+ // # GEOM_StringFieldStep:
+ /*!
+ * \brief Interface of the string field time step
+ */
+ interface GEOM_StringFieldStep : GEOM_FieldStep
+ {
+ /*!
+ * \brief Changes values of the field step. Returns false if number of values is wrong
+ */
+ boolean SetValues(in string_array strValues);
+
+ /*!
+ * \brief Returns values of the field step
+ */
+ string_array GetValues();
+ };
+
+ // # GEOM_IOperations:
/*!
* \brief Basic methods of all geometric operations
*/
in double theYParameter,
in double theZParameter);
+ /*!
+ * \brief Create a point, which lays on the given face.
+ * The point will lay in arbitrary place of the face.
+ * The only condition on it is a non-zero distance to the face boundary.
+ * Such point can be used to uniquely identify the face inside any
+ * shape in case, when the shape does not contain overlapped faces.
+ * \param theFace The referenced face.
+ * \return New GEOM_Object, containing the created point.
+ */
+ GEOM_Object MakePointOnFace (in GEOM_Object theFace);
/*!
* \brief Create a point, on two lines intersection.
in double theTrimSize);
};
+ /*!
+ * \brief Interface for shapes transforming.
+ *
+ * Translation, rotation, scaling, mirroring, offset, projection, recomputing.
+ */
interface GEOM_ITransformOperations : GEOM_IOperations
{
/*!
/*!
* \brief Translate the given object along the given vector a given number times
* \param theObject The object to be translated.
- * \param theVector Direction of the translation.
+ * \param theVector Direction of the translation. DX if None.
* \param theStep Distance to translate on.
* \param theNbTimes Quantity of translations to be done.
* \return New GEOM_Object, containing compound of all
/*!
* \brief Conseqently apply two specified translations to theObject specified number of times.
* \param theObject The object to be translated.
- * \param theVector1 Direction of the first translation.
+ * \param theVector1 Direction of the first translation. DX if None.
* \param theStep1 Step of the first translation.
* \param theNbTimes1 Quantity of translations to be done along theVector1.
- * \param theVector2 Direction of the second translation.
+ * \param theVector2 Direction of the second translation. DY if None.
* \param theStep2 Step of the second translation.
* \param theNbTimes2 Quantity of translations to be done along theVector2.
* \return New GEOM_Object, containing compound of all
in GEOM_Object theAxis,
in double theAngle);
-
/*!
* \brief Rotate the given object around the given axis a given number times.
*
- * Rotation angle will be 2*PI/theNbTimes.
+ * Rotation angle will be 2*PI/theNbObjects.
* \param theObject The object to be rotated.
- * \param theAxis The rotation axis.
- * \param theNbTimes Quantity of rotations to be done.
+ * \param theAxis The rotation axis. DZ if None.
+ * \param theNbObjects Quantity of rotations to be done.
* \return New GEOM_Object, containing compound of all the
* shapes, obtained after each rotation.
*/
GEOM_Object MultiRotate1D (in GEOM_Object theObject,
in GEOM_Object theAxis,
- in long theNbTimes);
+ in long theNbObjects);
+
+ /*!
+ * \brief Rotate the given object around the given axis
+ * a given number times on the given angle.
+ *
+ * \param theObject The object to be rotated.
+ * \param theAxis The rotation axis. DZ if None.
+ * \param theAngleStep Rotation angle in radians.
+ * \param theNbSteps Quantity of rotations to be done.
+ * \return New GEOM_Object, containing compound of all the
+ * shapes, obtained after each rotation.
+ */
+ GEOM_Object MultiRotate1DByStep (in GEOM_Object theObject,
+ in GEOM_Object theAxis,
+ in double theAngleStep,
+ in long theNbSteps);
+
+ /*!
+ * \brief Rotate the given object around the given axis
+ * a given number times and multi-translate each rotation result.
+ *
+ * Rotation angle will be 2*PI/theNbObjects.
+ * Translation direction passes through center of gravity
+ * of rotated shape and its projection on the rotation axis.
+ * \param theObject The object to be rotated.
+ * \param theAxis Rotation axis. DZ if None.
+ * \param theNbObjects Quantity of rotations to be done.
+ * \param theRadialStep Translation distance.
+ * \param theNbSteps Quantity of translations to be done.
+ * \return New GEOM_Object, containing compound of all the
+ * shapes, obtained after each transformation.
+ */
+ GEOM_Object MultiRotate2DNbTimes (in GEOM_Object theObject,
+ in GEOM_Object theAxis,
+ in long theNbObjects,
+ in double theRadialStep,
+ in long theNbSteps);
/*!
* \brief Rotate the given object around the
* Translation direction passes through center of gravity
* of rotated shape and its projection on the rotation axis.
* \param theObject The object to be rotated.
- * \param theAxis Rotation axis.
- * \param theAngle Rotation angle in graduces.
- * \param theNbTimes1 Quantity of rotations to be done.
- * \param theStep Translation distance.
- * \param theNbTimes2 Quantity of translations to be done.
+ * \param theAxis Rotation axis. DZ if None.
+ * \param theAngleStep Rotation angle in radians.
+ * \param theNbSteps1 Quantity of rotations to be done.
+ * \param theRadialStep Translation distance.
+ * \param theNbSteps2 Quantity of translations to be done.
+ * \return New GEOM_Object, containing compound of all the
+ * shapes, obtained after each transformation.
+ */
+ GEOM_Object MultiRotate2DByStep (in GEOM_Object theObject,
+ in GEOM_Object theAxis,
+ in double theAngleStep,
+ in long theNbSteps1,
+ in double theRadialStep,
+ in long theNbSteps2);
+
+ /*!
+ * \brief Rotate the given object around the
+ * given axis on the given angle a given number
+ * times and multi-translate each rotation result.
+ *
+ * Translation direction passes through center of gravity
+ * of rotated shape and its projection on the rotation axis.
+ * \param theObject The object to be rotated.
+ * \param theAxis Rotation axis. DZ if None.
+ * \param theAngleStep Rotation angle in degrees.
+ * \param theNbSteps1 Quantity of rotations to be done.
+ * \param theRadialStep Translation distance.
+ * \param theNbSteps2 Quantity of translations to be done.
* \return New GEOM_Object, containing compound of all the
* shapes, obtained after each transformation.
*/
GEOM_Object MultiRotate2D (in GEOM_Object theObject,
in GEOM_Object theAxis,
- in double theAngle,
- in long theNbTimes1,
- in double theStep,
- in long theNbTimes2);
+ in double theAngleStep,
+ in long theNbSteps1,
+ in double theRadialStep,
+ in long theNbSteps2);
/*!
* \brief Replace the given object by an object,
*/
GEOM_Object ProjectShapeCopy (in GEOM_Object theSource, in GEOM_Object theTarget);
+ /*!
+ * \brief Create a projection projection of the given point on a wire or
+ * an edge.
+ *
+ * If there are no solutions or there are 2 or more solutions It throws an
+ * exception.
+ * \param thePoint the point to be projected.
+ * \param theWire the wire. The edge is accepted as well.
+ * \param thePointOnEdge the projection point.
+ * \param theEdgeInWireIndex the index of an edge in a wire.
+ * \return the parameter of projection point on edge.
+ */
+ double ProjectPointOnWire (in GEOM_Object thePoint,
+ in GEOM_Object theWire,
+ out GEOM_Object thePointOnEdge,
+ out long theEdgeInWireIndex);
+
/*!
* \brief Scale the given object by the factor.
* \param theObject The object to be scaled.
* \param thePath Wire or Edge along that the object will be translated.
* \param theDistance progress of Path (0 = actual location, 1 = end of path location).
* \param theCopy is a true or false parameter. true is to create a copy, false to move the object.
- * \param theReverse is a true or false parameter. true is to reverse direction, false is to move normal direction.
+ * \param theReverse is a true or false parameter. True is to reverse
+ * direction, false is to move normal direction.
* \return New GEOM_Object, containing the displaced shape.
*/
GEOM_Object PositionAlongPath (in GEOM_Object theObject,
in boolean theCopy,
in boolean theReverse);
- /*!
- * \brief Transform the shape in the same way what was used for the sample shape creation.
- * \param theObject The object to be transformed.
- * \param theSample The object containing information about required transformation.
- * \note Implementation of this method is limited by multi-transformations now.
- * \note Internal method.
- * \return New GEOM_Object, containing the transformed shape.
- */
- GEOM_Object TransformLikeOtherCopy (in GEOM_Object theObject,
- in GEOM_Object theSample);
-
/*!
* \brief Recompute the shape from its arguments.
* \param theObject The object to be recomputed.
GEOM_Object RecomputeObject (in GEOM_Object theObject);
};
- // # GEOM_I3DPrimOperations:
/*!
* \brief Interface for 3D primitives creation
*
*/
GEOM_Object MakeCylinderRH (in double theR, in double theH);
+ /*!
+ * \brief Create a portion of cylinder with given radius, height and angle at
+ * the origin of coordinate system.
+ *
+ * Axis of the cylinder will be collinear to the OZ axis of the coordinate system.
+ * \param theR Cylinder radius.
+ * \param theH Cylinder height.
+ * \param theA Cylinder angle.
+ * \return New GEOM_Object, containing the created cylinder.
+ */
+ GEOM_Object MakeCylinderRHA (in double theR, in double theH, in double theA);
+
/*!
* \brief Create a cylinder with given base point, axis, radius and height.
* \param thePnt Central point of cylinder base.
in GEOM_Object theAxis,
in double theR,
in double theH);
+ /*!
+ * \brief Create a portion of cylinder with given base point, axis, radius, height and angle.
+ * \param thePnt Central point of cylinder base.
+ * \param theAxis Cylinder axis.
+ * \param theR Cylinder radius.
+ * \param theH Cylinder height.
+ * \param theA Cylinder angle.
+ * \return New GEOM_Object, containing the created cylinder.
+ */
+ GEOM_Object MakeCylinderPntVecRHA (in GEOM_Object thePnt,
+ in GEOM_Object theAxis,
+ in double theR,
+ in double theH,
+ in double theA);
/*!
* \brief Create a cone with given height and radiuses at
in double theAngle);
/*!
- * \brief Create a filling from the given compound of contours.
- * \param theShape Initial shape on which to perform the feature.
- * \param theMinDeg a minimal degree of BSpline surface to create
- * \param theMaxDeg a maximal degree of BSpline surface to create
- * \param theTol2D a 2d tolerance to be reached
- * \param theTol3D a 3d tolerance to be reached
- * \param theNbIter a number of iteration of approximation algorithm
+ * \brief Create a face from a given set of contours.
+ * \param theContours either a list or a compound of edges/wires.
+ * \param theMinDeg a minimal degree of BSpline surface to create.
+ * \param theMaxDeg a maximal degree of BSpline surface to create.
+ * \param theTol2D a 2d tolerance to be reached.
+ * \param theTol3D a 3d tolerance to be reached.
+ * \param theNbIter a number of iteration of approximation algorithm.
* \param theMethod Kind of method to perform filling operation.
- * \param theApprox Boolean indicating if result should be approximated
- * \return New GEOM_Object, containing the created filling surface.
+ * \param theApprox Boolean indicating if result should be approximated.
+ * \return New GEOM_Object (face), containing the created filling surface.
*/
- GEOM_Object MakeFilling (in GEOM_Object theShape,
+ GEOM_Object MakeFilling (in ListOfGO theContours,
in long theMinDeg, in long theMaxDeg,
in double theTol2D, in double theTol3D,
in long theNbIter,
in GEOM_Object thePath,
in GEOM_Object theVec);
+
+ /*!
+ * \brief Make a thick solid from a surface shape (face or shell)
+ * \param theObject Surface from which the thick solid is made
+ * \param theThickness Value of the thickness
+ * \param isCopy To make a copy of \a theObject ot to modify \a theObject.
+ * \return New GEOM_Object, containing the created pipe if isCopy = true
+ * or the modified object if isCopy = false
+ */
+ GEOM_Object MakeThickening (in GEOM_Object theObject,
+ in double theThickness,
+ in boolean isCopy);
+
+
+ /*!
+ * \brief Build a middle path of a pipe-like shape.
+ *
+ * The path shape can be a wire or an edge.
+ * \param theShape It can be closed or unclosed pipe-like shell
+ * or a pipe-like solid.
+ * \param theBase1, theBase2 Two bases of the supposed pipe. This
+ * should be wires or faces of \a theShape.
+ * \note It is not assumed that exact or approximate copy of \a theShape
+ * can be obtained by applying existing Pipe operation on the
+ * resulting "Path" wire taking \a theBase1 as the base - it is not
+ * always possible; though in some particular cases it might work
+ * it is not guaranteed. Thus, RestorePath function should not be
+ * considered as an exact reverse operation of the Pipe.
+ * \return New GEOM_Object, containing an edge or wire that represent
+ * source pipe's "path".
+ */
+ GEOM_Object RestorePath (in GEOM_Object theShape,
+ in GEOM_Object theBase1,
+ in GEOM_Object theBase2);
+
+ /*!
+ * \brief Build a middle path of a pipe-like shape.
+ *
+ * The path shape can be a wire or an edge.
+ * \param theShape It can be closed or unclosed pipe-like shell
+ * or a pipe-like solid.
+ * \param theBase1, theBase2 Two bases of the supposed pipe. This
+ * should be lists of edges of \a theShape.
+ * \note It is not assumed that exact or approximate copy of \a theShape
+ * can be obtained by applying existing Pipe operation on the
+ * resulting "Path" wire taking \a theBase1 as the base - it is not
+ * always possible; though in some particular cases it might work
+ * it is not guaranteed. Thus, RestorePath function should not be
+ * considered as an exact reverse operation of the Pipe.
+ * \return New GEOM_Object, containing an edge or wire that represent
+ * source pipe's "path".
+ */
+ GEOM_Object RestorePathEdges (in GEOM_Object theShape,
+ in ListOfGO theBase1,
+ in ListOfGO theBase2);
};
- // # GEOM_IShapesOperations
/*!
* \brief Interface for Shapes creation:
*
*/
GEOM_Object MakeFaceWires (in ListOfGO theWires, in boolean isPlanarWanted);
+ /**
+ * \brief Create a face based on surface of theFace limited by theWire.
+ * \param theFace the face whose surface is used to create a new face.
+ * \param theWire closed Wire build the face.
+ * \return New GEOM_Object, containing the created face.
+ */
+ GEOM_Object MakeFaceFromSurface(in GEOM_Object theFace,
+ in GEOM_Object theWire);
+
/*!
* \brief Create a shell from the set of faces and shells.
* \param theFacesAndShells List of faces and/or shells.
GEOM_Object MakeCompound (in ListOfGO theShapes);
/*!
- * \brief Replace coincident faces in theShape by one face.
- * \param theShape Initial shape.
+ * \brief Make a solid (or solids) from connected set of faces and/or shells.
+ * \param theFacesOrShells List of faces and/or shells.
+ * \param isIntersect If TRUE, forces performing intersections between arguments.
+ *
+ * \return New GEOM_Object, containing the created solid (or compound of solids).
+ */
+ GEOM_Object MakeSolidFromConnectedFaces (in ListOfGO theFacesOrShells, in boolean isIntersect);
+
+ /*!
+ * \brief Replace coincident faces in \a theShapes by one face.
+ * \param theShapes Initial shapes.
* \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.
+ * \return New GEOM_Object containing copies of theShapes without coincident faces.
*/
- GEOM_Object MakeGlueFaces (in GEOM_Object theShape, in double theTolerance, in boolean doKeepNonSolids);
+ GEOM_Object MakeGlueFaces (in ListOfGO theShapes, in double theTolerance, in boolean doKeepNonSolids);
/*!
- * Find coincident faces in theShape for possible gluing.
- * \param theShape Initial shape.
+ * Find coincident faces in theShapes for possible gluing.
+ * \param theShapes Initial shapes.
* \param theTolerance Maximum distance between faces, which can be considered as coincident.
* \return ListOfGO
*/
- ListOfGO GetGlueFaces (in GEOM_Object theShape, in double theTolerance);
+ ListOfGO GetGlueFaces (in ListOfGO theShapes, in double theTolerance);
/*!
- * \brief Replace coincident faces in theShape by one face
- * in compliance with given list of faces
- * \param theShape Initial shape.
+ * \brief Replace coincident faces in \a theShapes by one face
+ * in compliance with given list of faces
+ * \param theShapes Initial shapes.
* \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.
+ * \return New GEOM_Object containing copies of theShapes without coincident faces.
*/
- GEOM_Object MakeGlueFacesByList (in GEOM_Object theShape, in double theTolerance,
- in ListOfGO theFaces, in boolean doKeepNonSolids,
+ GEOM_Object MakeGlueFacesByList (in ListOfGO theShapes, in double theTolerance,
+ in ListOfGO theFaces, in boolean doKeepNonSolids,
in boolean doGlueAllEdges);
/*!
- * \brief Replace coincident edges in theShape by one edge.
- * \param theShape Initial shape.
+ * \brief Replace coincident edges in \a theShapes by one edge.
+ * \param theShapes Initial shapes.
* \param theTolerance Maximum distance between edges, which can be considered as coincident.
- * \return New GEOM_Object, containing a copy of theShape without coincident edges.
+ * \return New GEOM_Object containing copies of theShapes without coincident edges.
*/
- GEOM_Object MakeGlueEdges (in GEOM_Object theShape, in double theTolerance);
+ GEOM_Object MakeGlueEdges (in ListOfGO theShapes, in double theTolerance);
/*!
- * Find coincident edges in theShape for possible gluing.
- * \param theShape Initial shape.
+ * Find coincident edges in \a theShapes for possible gluing.
+ * \param theShapes Initial shapes.
* \param theTolerance Maximum distance between edges, which can be considered as coincident.
* \return ListOfGO
*/
- ListOfGO GetGlueEdges (in GEOM_Object theShape, in double theTolerance);
+ ListOfGO GetGlueEdges (in ListOfGO theShapes, in double theTolerance);
/*!
- * \brief Replace coincident edges in theShape by one edge
- * in compliance with given list of edges
- * \param theShape Initial shape.
+ * \brief Replace coincident edges in \a theShapes by one edge
+ * in compliance with given list of edges
+ * \param theShapes Initial shapes.
* \param theTolerance Maximum distance between edges, which can be considered as coincident.
* \param theEdges List of edges for gluing.
- * \return New GEOM_Object, containing a copy of theShape without some edges.
+ * \return New GEOM_Object containing copies of theShapes without some edges.
*/
- GEOM_Object MakeGlueEdgesByList (in GEOM_Object theShape,
- in double theTolerance,
+ GEOM_Object MakeGlueEdgesByList (in ListOfGO theShape,
+ in double theTolerance,
in ListOfGO theEdges);
/*!
*/
long GetSubShapeIndex (in GEOM_Object theMainShape, in GEOM_Object theSubShape);
+ /*!
+ * Get global indices of \a theSubShapes in \a theMainShape.
+ * \param theMainShape Main shape.
+ * \param theSubShapes List of sub-shapes of the main shape.
+ * \return list of global indices of \a theSubShapes in \a theMainShape.
+ */
+ ListOfLong GetSubShapesIndices (in GEOM_Object theMainShape, in ListOfGO theSubShapes);
+
/*!
* \brief Get index of \a theSubShape in \a theMainShape, unique among sub-shapes of the same type.
*
* \return found sub-shape.
*/
GEOM_Object GetSame (in GEOM_Object theShapeWhere,
- in GEOM_Object theShapeWhat);
+ in GEOM_Object theShapeWhat);
/*!
* \brief Get sub-shape Ids of theShapeWhere, which are
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);
+
};
// # GEOM_IBlocksOperations:
string PrintBCErrors (in GEOM_Object theCompound,
in BCErrors theErrors);
+ /*!
+ * \brief Retrieve all non blocks solids and faces from a shape.
+ *
+ * \param theShape The shape to explore.
+ * \param theNonQuads Output parameter. Group of all non quadrangular faces.
+ *
+ * \return Group of all non block solids (= not 6 faces, or with 6
+ * faces, but with the presence of non-quadrangular faces).
+ */
+ GEOM_Object GetNonBlocks (in GEOM_Object theShape, out GEOM_Object theNonQuads);
+
/*!
* \brief Remove all seam and degenerated edges from \a theShape.
*
GEOM_Object RemoveExtraEdges (in GEOM_Object theShape,
in long theOptimumNbFaces);
+ /*!
+ * \brief Performs union faces of \a theShape.
+ *
+ * Unite faces sharing one surface.
+ * \param theShape The compound or single solid that contains faces to perform union.
+ * \return Improved shape.
+ */
+ GEOM_Object UnionFaces (in GEOM_Object theShape);
+
/*!
* \brief Check, if the given shape is a blocks compound.
*
* \param theShape2 Second argument for boolean operation.
* \param theOperation Indicates the operation to be done:
* 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section.
+ * \param IsCheckSelfInte If TRUE, perform check self intersection
+ * of arguments before an operation.
* \return New GEOM_Object, containing the result shape.
*/
GEOM_Object MakeBoolean (in GEOM_Object theShape1,
in GEOM_Object theShape2,
- in long theOperation);
+ in long theOperation,
+ in boolean IsCheckSelfInte);
+ /*!
+ * \brief Perform fusion boolean operation on two given shapes.
+ * \param theShape1 First argument for fuse operation.
+ * \param theShape2 Second argument for fuse operation.
+ * \param IsCheckSelfInte If TRUE, perform check self intersection
+ * of arguments before an operation.
+ * \param IsRmExtraEdges If TRUE, perform removal of extra edges
+ * during an operation.
+ * \return New GEOM_Object, containing the result shape.
+ */
+ GEOM_Object MakeFuse (in GEOM_Object theShape1,
+ in GEOM_Object theShape2,
+ in boolean IsCheckSelfInte,
+ in boolean IsRmExtraEdges);
+
+ /*!
+ * \brief Perform fusion boolean operation on list of objects.
+ * \param theShapes Shapes to be fused.
+ * \param IsCheckSelfInte If TRUE, perform check self intersection
+ * of arguments before an operation.
+ * \param IsRmExtraEdges If TRUE, perform removal of extra edges
+ * during an operation.
+ * \return New GEOM_Object, containing the result shape.
+ */
+ GEOM_Object MakeFuseList (in ListOfGO theShapes,
+ in boolean IsCheckSelfInte,
+ in boolean IsRmExtraEdges);
+
+ /*!
+ * \brief Perform common boolean operation on list of objects.
+ * \param theShapes Shapes for common operation.
+ * \param IsCheckSelfInte If TRUE, perform check self intersection
+ * of arguments before an operation.
+ * \return New GEOM_Object, containing the result shape.
+ */
+ GEOM_Object MakeCommonList (in ListOfGO theShapes,
+ in boolean IsCheckSelfInte);
+
+ /*!
+ * \brief Perform cutting of list of objects from theMainShape.
+ * \param theMainShape the object for cut operation.
+ * \param theShapes Shapes to be cut from theMainShape (tools).
+ * \param IsCheckSelfInte If TRUE, perform check self intersection
+ * of arguments before an operation.
+ * \return New GEOM_Object, containing the result shape.
+ */
+ GEOM_Object MakeCutList (in GEOM_Object theMainShape,
+ in ListOfGO theShapes,
+ in boolean IsCheckSelfInte);
/*!
* \brief Perform partition operation.
* a compound containing nonintersected shapes. Performance will be better
* since intersection between shapes from compound is not performed.
*
- * Description of all parameters as in previous method MakePartition()
+ * Description of all parameters as in previous method MakePartition().
+ * One additional parameter is provided:
+ * \param IsCheckSelfInte If TRUE, perform check self intersection
+ * of arguments before an operation.
*
* \note Passed compounds (via ListShapes or via ListTools)
* have to consist of nonintersecting shapes.
in short theLimit,
in boolean theRemoveWebs,
in ListOfLong theMaterials,
- in short theKeepNonlimitShapes);
+ in short theKeepNonlimitShapes,
+ in boolean IsCheckSelfInte);
/*!
* \brief Perform partition of the Shape with the Plane
in boolean theIsClosed,
in boolean theDoReordering);
+ /*!
+ * \brief Create B-Spline curve on the set of points.
+ * \param thePoints Sequence of points for the B-Spline curve.
+ * \param theFirstVec Vector object, defining the curve direction at its first point.
+ * \param theLastVec Vector object, defining the curve direction at its last point.
+ * \return New GEOM_Object, containing the created B-Spline curve.
+ */
+ GEOM_Object MakeSplineInterpolWithTangents (in ListOfGO thePoints,
+ in GEOM_Object theFirstVec,
+ in GEOM_Object theLastVec);
+
/*!
* \brief Creates a curve using the parametric definition of the basic points.
* \param thexExpr parametric equation of the coordinates X.
in long theParamNbStep,
in curve_type theCurveType);
+ /*!
+ * \brief Creates an isoline curve on a face.
+ * \param theFace the face for which an isoline is created.
+ * \param IsUIsoline True for U-isoline creation; False for V-isoline
+ * creation.
+ * \param theParameter the U parameter for U-isoline or V parameter
+ * for V-isoline.
+ * \return New GEOM_Object, containing the created isoline edge or a
+ * compound of edges.
+ */
+ GEOM_Object MakeIsoline(in GEOM_Object theFace,
+ in boolean IsUIsoline,
+ in double theParameter);
+
/*!
* \brief Create a sketcher (wire or face), following the textual description,
- * passed through \a theCommand argument.
+ * passed through \a theCommand argument.
*
* Edges of the resulting wire or face will be arcs of circles and/or linear segments. \n
- * Format of the description string have to be the following:
+ * Format of the description string has to be the following:
*
* "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"
*
* coordinates of the working plane.
* \param theWorkingPlane Nine double values, defining origin,
* OZ and OX directions of the working plane.
- * \return New GEOM_Object, containing the created wire.
+ * \return New GEOM_Object, containing the created wire or face.
*/
GEOM_Object MakeSketcher (in string theCommand, in ListOfDouble theWorkingPlane);
/*!
- * \brief Create a 3D sketcher, following the numerical description,
- * passed through points created by \a theCoordinates argument.
+ * \brief Create a sketcher (wire or face), following the textual description,
+ * passed through \a theCommand argument.
*
- * Format of the description string have to be the following:
+ * For format of the description string see the previous method.\n
*
- * "Make3DSketcher[x1, y1, z1, x2, y2, z2, ..., xN, yN, zN]"
+ * \param theCommand String, defining the sketcher in local
+ * coordinates of the working plane.
+ * \param theWorkingPlane Planar Face or LCS(Marker) of the working plane.
+ * \return New GEOM_Object, containing the created wire or face.
*/
+ GEOM_Object MakeSketcherOnPlane (in string theCommand, in GEOM_Object theWorkingPlane);
- GEOM_Object Make3DSketcher (in ListOfDouble theCoordinates);
-
- /*!
- * \brief Create a sketcher (wire or face), following the textual description,
- * passed through \a theCommand argument.
+ /*!
+ * \brief Create a 3D sketcher, following the textual description,
+ * passed through \a theCommand argument.
+ *
+ * Format of the description string has to be the following:
+ *
+ * "3DSketcher:CMD[:CMD[:CMD...]]"
+ *
+ * Where CMD is one of
+ * - "TT x y z" : Create segment by point at X & Y or set the first point
+ * - "T dx dy dz" : Create segment by point with DX & DY
+ * .
+ * \n
+ * - "OXY angleX angle2 length" : Create segment by two angles and length
+ * - "OYZ angleY angle2 length" : Create segment by two angles and length
+ * - "OXZ angleX angle2 length" : Create segment by two angles and length
+ * .
+ * \n
+ * - "WW" : Close Wire (to finish)
*
- * For format of the description string see the previous method.\n
* \param theCommand String, defining the sketcher in local
* coordinates of the working plane.
- * \param theWorkingPlane Planar Face or LCS(Marker) of the working plane.
* \return New GEOM_Object, containing the created wire.
*/
- GEOM_Object MakeSketcherOnPlane (in string theCommand, in GEOM_Object theWorkingPlane);
+ GEOM_Object Make3DSketcherCommand (in string theCommand);
+
+ /*!
+ * \brief Create a 3D sketcher, made of a straight segments, joining points
+ * with coordinates passed through \a theCoordinates argument.
+ *
+ * Order of coordinates has to be the following:
+ * x1, y1, z1, x2, y2, z2, ..., xN, yN, zN
+ *
+ * \param theCoordinates List of double values.
+ * \return New GEOM_Object, containing the created wire.
+ */
+ GEOM_Object Make3DSketcher (in ListOfDouble theCoordinates);
+
+ /*!
+ * \brief Create a 2D polyline (wire or a compound of wires).
+ *
+ * The polyline can have several sections. Each section represents a set
+ * of points in the form of list of coordinates of the following order:
+ * x1, y1, x2, y2, ..., xN, yN
+ * Each section has its own name, type of curve (can be either
+ * GEOM::Polyline or GEOM::Interpolation) and Closed flag.
+ * For each section a wire is created. It represents either a polyline or
+ * interpolation BSpline either closed or not depending on the Closed flag.
+ * The result represents a wire if there is only one section is defined.
+ * Otherwise a compound of wires is returned.
+ *
+ * \param theCoordsList the list of coordinates list. theCoordsList[0]
+ * is the coordinates list of the first section. theCoordsList[1]
+ * is for the second section etc.
+ * \param theNamesList the list of names. The order corresponds to
+ * theCoordsList.
+ * \param theTypesList the list of curve types. The order corresponds to
+ * theCoordsList.
+ * \param theClosedList the list of Closed flags. The order corresponds to
+ * theCoordsList.
+ * \param theWorkingPlane 9 double values, defining origin,
+ * OZ and OX directions of the working plane.
+ * \return New GEOM_Object, containing the created wire or a compound
+ * of wires.
+ */
+ GEOM_Object MakePolyline2D (in ListOfListOfDouble theCoordsList,
+ in string_array theNamesList,
+ in short_array theTypesList,
+ in ListOfBool theClosedList,
+ in ListOfDouble theWorkingPlane);
+
+ /*!
+ * \brief Create a 2D polyline (wire or a compound of wires).
+ *
+ * The polyline can have several sections. Each section represents a set
+ * of points in the form of list of coordinates of the following order:
+ * x1, y1, x2, y2, ..., xN, yN
+ * Each section has its own name, type of curve (can be either
+ * GEOM::Polyline or GEOM::Interpolation) and Closed flag.
+ * For each section a wire is created. It represents either a polyline or
+ * interpolation BSpline either closed or not depending on the Closed flag.
+ * The result represents a wire if there is only one section is defined.
+ * Otherwise a compound of wires is returned.
+ *
+ * \param theCoordsList the list of coordinates list. theCoordsList[0]
+ * is the coordinates list of the first section. theCoordsList[1]
+ * is for the second section etc.
+ * \param theNamesList the list of names. The order corresponds to
+ * theCoordsList.
+ * \param theTypesList the list of curve types. The order corresponds to
+ * theCoordsList.
+ * \param theClosedList the list of Closed flags. The order corresponds to
+ * theCoordsList.
+ * \param theWorkingPlane planar Face or LCS(Marker) of the working plane.
+ * \return New GEOM_Object, containing the created wire or a compound
+ * of wires.
+ */
+ GEOM_Object MakePolyline2DOnPlane (in ListOfListOfDouble theCoordsList,
+ in string_array theNamesList,
+ in short_array theTypesList,
+ in ListOfBool theClosedList,
+ in GEOM_Object theWorkingPlane);
+
};
// # GEOM_ILocalOperations:
* \param theTolerance Required tolerance value.
* \return New GEOM_Object, containing processed shape.
*/
- GEOM_Object Sew (in GEOM_Object theObject, in double theTolerance);
+ GEOM_Object Sew (in ListOfGO theObjects, in double theTolerance);
/*!
- * \brief Addition of a point to a given edge object.
+ * Sewing of the given object. Allows non-manifold sewing.
+ * \param theObject Shape to be processed.
+ * \param theTolerance Required tolerance value.
+ * \return New GEOM_Object, containing processed shape.
+ */
+ GEOM_Object SewAllowNonManifold(in ListOfGO theObjects, in double theTolerance);
+
+ /*!
+ * Rebuild the topology of theSolids by removing
+ * the faces that are shared by several solids.
+ * \param theSolids A list of shapes containing solids to be processed.
+ * \return New GEOM_Object, containing processed shape.
+ */
+ GEOM_Object RemoveInternalFaces (in ListOfGO theSolids);
+
+ /*!
+ * \brief Addition of a point to a given edge of \a theObject.
* \param theObject Shape to be processed.
* \param theEdgeIndex Index of edge to be divided within theObject's shape,
* if -1, then theObject itself is the edge.
* depending on \a isByParameter.
* \param isByParameter If TRUE : \a theValue is treated as a curve parameter [0..1],
* if FALSE : \a theValue is treated as a length parameter [0..1]
- * \return New GEOM_Object, containing processed shape.
+ * \return New GEOM_Object, containing the processed shape.
*/
GEOM_Object DivideEdge (in GEOM_Object theObject, in short theEdgeIndex,
in double theValue, in boolean isByParameter);
+ /*!
+ * \brief Addition of a point to a given edge of \a theObject by projecting
+ * another point to the given edge.
+ * \param theObject Shape to be processed.
+ * \param theEdgeIndex Index of edge to be divided within theObject's shape,
+ * if -1, then theObject itself is the edge.
+ * \param thePoint Point to project to theEdgeIndex-th edge.
+ * \return New GEOM_Object, containing the processed shape.
+ */
+ GEOM_Object DivideEdgeByPoint (in GEOM_Object theObject,
+ in short theEdgeIndex,
+ in GEOM_Object thePoint);
+
/*!
* \brief Suppress the vertices in the wire in case if adjacent edges are C1 continuous.
* \param theWire Wire to minimize the number of C1 continuous edges in.
/*!
* \brief Get a list of wires (wrapped in GEOM_Object-s),
* that constitute a free boundary of the given shape.
- * \param theObject Shape to get free boundary of.
+ * \param theObject Shapes to get free boundary of.
* \param theClosedWires Output. Closed wires on the free boundary of the given shape.
* \param theOpenWires Output. Open wires on the free boundary of the given shape.
* \return FALSE, if an error(s) occured during the method execution.
*/
- boolean GetFreeBoundary (in GEOM_Object theObject,
+ boolean GetFreeBoundary (in ListOfGO theObjects,
out ListOfGO theClosedWires,
out ListOfGO theOpenWires);
GEOM_Object MakeCopy (in GEOM_Object theOriginal);
/*!
+ * \brief Deprecated method. Use Export\<FormatName\> (from the
+ * corresponding plugin) instead; here \<FormatName\> is a name of format.
+ *
* \brief Export the given shape into a file with given name.
* \param theObject Shape to be stored in the file.
* \param theFileName Name of the file to store the given shape in.
* \param theFormatName Specify format for the shape storage.
- * Available formats can be obtained with <VAR>ImportTranslators()</VAR> method.
*/
void Export (in GEOM_Object theObject, in string theFileName, in string theFormatName);
/*!
- * \brief Import a shape from the BRep or IGES or STEP file
+ * \brief Deprecated method. Use Import\<FormatName\> (from the
+ * corresponding plugin) instead; here \<FormatName\> is a name of format.
+ *
+ * \brief Import a shape from the STL, BREP, IGES or STEP file
* (depends on given format) with given name.
* \param theFileName The file, containing the shape.
* \param theFormatName Specify format for the file reading.
- * Available formats can be obtained with <VAR>ImportTranslators()</VAR> method.
- * If format 'IGES_SCALE' is used instead 'IGES' length unit will be
- * set to 'meter' and result model will be scaled.
- * \return New GEOM_Object, containing the imported shape.
+ * If format 'IGES_SCALE' is used instead of 'IGES' or
+ * format 'STEP_SCALE' is used instead of 'STEP',
+ * file length unit will be ignored (set to 'meter') and result model will be scaled.
+ * \return List of GEOM_Object, containing the created shape and groups of materials.
*/
- GEOM_Object ImportFile (in string theFileName, in string theFormatName);
+ ListOfGBO ImportFile (in string theFileName, in string theFormatName);
/*!
- * \brief Get the supported import formats and corresponding patterns for File dialog.
- * \param theFormats Output. List of formats, available for import.
- * \param thePatterns Output. List of file patterns, corresponding to available formats.
- * \return Returns available formats and patterns through the arguments.
+ * \brief Deprecated method. Use ReadValue (from the corresponding plugin) instead.
+ *
+ * \brief Read a value of parameter from a file, containing a shape.
+ * \param theFileName The file, containing the shape.
+ * \param theFormatName Specify format for the file reading.
+ * \param theParameterName Specify the parameter. For example, pass "LEN_UNITS"
+ * to obtain length units, in which the file is written.
+ * \return Value of requested parameter in form of text string.
*/
- void ImportTranslators (out string_array theFormats,
- out string_array thePatterns);
+ string ReadValue (in string theFileName, in string theFormatName, in string theParameterName);
/*!
- * \brief Get the supported export formats and corresponding patterns for File dialog.
- * \param theFormats Output. List of formats, available for export.
- * \param thePatterns Output. List of file patterns, corresponding to available formats.
- * \return Returns available formats and patterns through the arguments.
+ * \brief Read a shape from the binary stream, containing its bounding representation (BRep).
+ * \note GEOM_Object::GetShapeStream() method can be used to obtain the shape's BRep stream.
+ * \param theStream The BRep binary stream.
+ * \return New GEOM_Object, containing the shape, read from theStream.
*/
- void ExportTranslators (out string_array theFormats,
- out string_array thePatterns);
+ GEOM_Object RestoreShape (in SALOMEDS::TMPFile theStream);
/*!
* \brief Load texture from file
* \return list of all texture IDs avaiable for the current study
*/
ListOfLong GetAllTextures();
+
};
// # GEOM_IKindOfShape:
/*!
* \brief Get parameters of bounding box of the given shape
* \param theShape Shape to obtain bounding box of.
+ * \param precise TRUE for precise computation; FALSE for fast one.
* \param Xmin,Xmax Output. Limits of shape along OX axis.
* \param Ymin,Ymax Output. Limits of shape along OY axis.
* \param Zmin,Zmax Output. Limits of shape along OZ axis.
* \return Returns parameters of bounding box through the last six arguments.
*/
void GetBoundingBox (in GEOM_Object theShape,
+ in boolean precise,
out double Xmin, out double Xmax,
out double Ymin, out double Ymax,
out double Zmin, out double Zmax);
+ /*!
+ * \brief Get bounding box of the given shape
+ * \param theShape Shape to obtain bounding box of.
+ * \param precise TRUE for precise computation; FALSE for fast one.
+ * \return New GEOM_Object, containing the created bounding box.
+ */
+ GEOM_Object MakeBoundingBox (in GEOM_Object theShape,
+ in boolean precise);
+
/*!
* \brief Get min and max tolerances of sub-shapes of theShape
* \param theShape Shape, to get tolerances of.
out double EdgeMin, out double EdgeMax,
out double VertMin, out double VertMax);
+ /*!
+ * \brief Enumeration of Shape defects coming from CheckShape algorithms.
+ */
+ enum ShapeErrorType
+ {
+ /* for vertices */
+ InvalidPointOnCurve,
+ InvalidPointOnCurveOnSurface,
+ InvalidPointOnSurface,
+
+ /* for edges */
+ No3DCurve,
+ Multiple3DCurve,
+ Invalid3DCurve,
+ NoCurveOnSurface,
+ InvalidCurveOnSurface,
+ InvalidCurveOnClosedSurface,
+ InvalidSameRangeFlag,
+ InvalidSameParameterFlag,
+ InvalidDegeneratedFlag,
+
+ FreeEdge,
+ InvalidMultiConnexity,
+ InvalidRange,
+
+ /* for wires */
+ EmptyWire,
+ RedundantEdge,
+ SelfIntersectingWire, /* on a face */
+
+ /* for faces */
+ NoSurface,
+ InvalidWire,
+ RedundantWire,
+ IntersectingWires,
+ InvalidImbricationOfWires,
+
+ /* for shells */
+ EmptyShell,
+ RedundantFace,
+
+ /* for shapes */
+ UnorientableShape,
+ NotClosed,
+ NotConnected,
+
+ SubshapeNotInShape,
+
+ BadOrientation,
+ BadOrientationOfSubshape,
+
+ InvalidToleranceValue,
+
+ /* for exception */
+ CheckFail
+ };
+
+ /*!
+ * \brief Description of a shape defect: type and incriminated sub-shapes.
+ */
+ struct ShapeError
+ {
+ ShapeErrorType error;
+ ListOfLong incriminated;
+ };
+
+ /*!
+ * \brief Sequence of all shape defects.
+ */
+ typedef sequence<ShapeError> ShapeErrors;
+
/*!
* \brief Check a topology of the given shape.
* \param theShape Shape to check validity of.
- * \param theDescription Output. Description of problems in the shape, if they are.
+ * \param theErrors Structure, containing discovered errors and incriminated sub-shapes.
* \return TRUE, if the shape "seems to be valid" from the topological point of view.
*/
- boolean CheckShape (in GEOM_Object theShape,
- out string theDescription);
+ boolean CheckShape (in GEOM_Object theShape,
+ out ShapeErrors theErrors);
/*!
* \brief Check a topology and a geometry of the given shape.
* \param theShape Shape to check validity of.
- * \param theDescription Output. Description of problems in the shape, if they are.
+ * \param theErrors Structure, containing discovered errors and incriminated sub-shapes.
* \return TRUE, if the shape "seems to be valid".
*/
- boolean CheckShapeWithGeometry (in GEOM_Object theShape,
- out string theDescription);
+ boolean CheckShapeWithGeometry (in GEOM_Object theShape,
+ out ShapeErrors theErrors);
+
+ /*!
+ * \brief Convert sequence of shape errors, returned by
+ * <VAR>CheckShape()</VAR> or <VAR>CheckShapeWithGeometry()</VAR>, into string.
+ * \param theShape the invalid shape.
+ * \param theErrors The sequence of \a theShape errors.
+ * \return String, describing all the errors in form, suitable for printing.
+ */
+ string PrintShapeErrors (in GEOM_Object theShape,
+ in ShapeErrors theErrors);
/*!
* \brief Check a topology of the given shape on self-intersections presence.
* \param theShape Shape to check validity of.
+ * \param theCheckLevel the level of self-interference check.
* \param theIntersections Output. List of intersected sub-shapes IDs, it contains pairs of IDs.
* \return TRUE, if the shape does not have any self-intersections.
*/
boolean CheckSelfIntersections (in GEOM_Object theShape,
+ in long theCheckLevel,
out ListOfLong theIntersections);
/*!
out double X1, out double Y1, out double Z1,
out double X2, out double Y2, out double Z2);
+ /*!
+ * \brief Get closest points of the given shapes.
+ * \param theShape1,theShape2 Shapes to find closest points of.
+ * \param theCoords Output. List of (X, Y, Z) coordinates for all couples of points.
+ * \return The number of found solutions (-1 in case of infinite number of solutions).
+ */
+ long ClosestPoints (in GEOM_Object theShape1,
+ in GEOM_Object theShape2,
+ out ListOfDouble theCoords);
+
/*!
* \brief Get angle between the given lines or linear edges.
* \param theShape1,theShape2 Shapes to find angle between. Lines or linear edges.
*/
void DifferenceIDs (in GEOM_Object theGroup, in ListOfLong theSubShapes);
+ /*!
+ * \brief Union of two groups.
+ * New group is created. It will contain all entities
+ * which are present in groups theGroup1 and theGroup2.
+ * \param theGroup1, theGroup2 are the initial GEOM groups
+ * to create the united group from.
+ * \return a newly created GEOM group.
+ */
+ GEOM_Object UnionGroups (in GEOM_Object theGroup1, in GEOM_Object theGroup2);
+
+ /*!
+ * \brief Intersection of two groups.
+ * New group is created. It will contain only those entities
+ * which are present in both groups theGroup1 and theGroup2.
+ * \param theGroup1, theGroup2 are the initial GEOM groups to get common part of.
+ * \return a newly created GEOM group.
+ */
+ GEOM_Object IntersectGroups (in GEOM_Object theGroup1, in GEOM_Object theGroup2);
+
+ /*!
+ * \brief Cut of two groups.
+ * New group is created. It will contain entities which are
+ * present in group theGroup1 but are not present in group theGroup2.
+ * \param theGroup1 is a GEOM group to include elements of.
+ * \param theGroup2 is a GEOM group to exclude elements of.
+ * \return a newly created GEOM group.
+ */
+ GEOM_Object CutGroups (in GEOM_Object theGroup1, in GEOM_Object theGroup2);
+
+ /*!
+ * \brief Union of list of groups.
+ * New group is created. It will contain all entities that are
+ * present in groups listed in theGList.
+ * \param theGList is a list of GEOM groups to create the united group from.
+ * \return a newly created GEOM group.
+ */
+ GEOM_Object UnionListOfGroups (in ListOfGO theGList);
+
+ /*!
+ * \brief Intersection of list of groups.
+ * New group is created. It will contain only entities
+ * which are simultaneously present in the groups listed in theGList.
+ * \param theGList is a list of GEOM groups to get common part of.
+ * \return a newly created GEOM group.
+ */
+ GEOM_Object IntersectListOfGroups (in ListOfGO theGList);
+
+ /*!
+ * \brief Cut of lists of groups.
+ * New group is created. It will contain only entities
+ * which are present in groups listed in theGList1 but
+ * are not present in groups from theGList2.
+ * \param theGList1 is a list of GEOM groups to include elements of.
+ * \param theGList2 is a list of GEOM groups to exclude elements of.
+ * \return a newly created GEOM group.
+ */
+ GEOM_Object CutListOfGroups (in ListOfGO theGList1,
+ in ListOfGO theGList2);
+
/*!
* \brief Returns a type of sub-objects stored in the group
* \param theGroup is a GEOM group which type is returned.
ListOfLong GetObjects (in GEOM_Object theGroup);
};
- // # GEOM_IAdvancedOperations:
+ // # GEOM_IFieldOperations:
/*!
- * \brief Interface for advanced modeling functions.
+ * \brief Interface for field operation.
*/
- interface GEOM_IAdvancedOperations : GEOM_IOperations
+ interface GEOM_IFieldOperations : GEOM_IOperations
{
/*!
- * \brief Create a T-shape object with specified caracteristics for the main and
- * the incident pipes (radius, width, half-length).
- *
- * Center of the shape is (0,0,0). The main plane of the T-shape is XOY.
- * \param theR1 Internal radius of main pipe
- * \param theW1 Width of main pipe
- * \param theL1 Half-length of main pipe
- * \param theR2 Internal radius of incident pipe (R2 < R1)
- * \param theW2 Width of incident pipe (R2+W2 < R1+W1)
- * \param theL2 Half-length of incident pipe
- * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
- * \return List of GEOM_Object, containing the created shape and propagation groups.
- */
- ListOfGO MakePipeTShape (in double theR1, in double theW1, in double theL1,
- in double theR2, in double theW2, in double theL2,
- in boolean theHexMesh);
- /*!
- * \brief Create a T-shape object with specified caracteristics for the main and
- * the incident pipes (radius, width, half-length).
- *
- * The extremities of the main pipe are located on junctions points P1 and P2.
- * The extremity of the incident pipe is located on junction point P3.
- * \param theR1 Internal radius of main pipe
- * \param theW1 Width of main pipe
- * \param theL1 Half-length of main pipe
- * \param theR2 Internal radius of incident pipe (R2 < R1)
- * \param theW2 Width of incident pipe (R2+W2 < R1+W1)
- * \param theL2 Half-length of incident pipe
- * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
- * \param theP1 1st junction point of main pipe
- * \param theP2 2nd junction point of main pipe
- * \param theP3 Junction point of incident pipe
- * \return List of GEOM_Object, containing the created shape and propagation groups.
- */
- ListOfGO MakePipeTShapeWithPosition (in double theR1, in double theW1, in double theL1,
- in double theR2, in double theW2, in double theL2,
- in boolean theHexMesh,
- in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3);
- /*!
- * \brief Create a T-shape object with specified caracteristics for the main and
- * the incident pipes (radius, width, half-length). A chamfer is created
- * on the junction of the pipes.
- *
- * Center of the shape is (0,0,0). The main plane of the T-shape is XOY.
- * \param theR1 Internal radius of main pipe
- * \param theW1 Width of main pipe
- * \param theL1 Half-length of main pipe
- * \param theR2 Internal radius of incident pipe (R2 < R1)
- * \param theW2 Width of incident pipe (R2+W2 < R1+W1)
- * \param theL2 Half-length of incident pipe
- * \param theH Height of the chamfer.
- * \param theW Width of the chamfer.
- * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
- * \return List of GEOM_Object, containing the created shape and propagation groups.
- */
- ListOfGO MakePipeTShapeChamfer (in double theR1, in double theW1, in double theL1,
- in double theR2, in double theW2, in double theL2,
- in double theH, in double theW, in boolean theHexMesh);
- /*!
- * \brief Create a T-shape object with specified caracteristics for the main and
- * the incident pipes (radius, width, half-length).
- *
- * A chamfer is created on the junction of the pipes.
- * The extremities of the main pipe are located on junctions points P1 and P2.
- * The extremity of the incident pipe is located on junction point P3.
- * \param theR1 Internal radius of main pipe
- * \param theW1 Width of main pipe
- * \param theL1 Half-length of main pipe
- * \param theR2 Internal radius of incident pipe (R2 < R1)
- * \param theW2 Width of incident pipe (R2+W2 < R1+W1)
- * \param theL2 Half-length of incident pipe
- * \param theH Height of the chamfer.
- * \param theW Width of the chamfer.
- * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
- * \param theP1 1st junction point of main pipe
- * \param theP2 2nd junction point of main pipe
- * \param theP3 Junction point of incident pipe
- * \return List of GEOM_Object, containing the created shape and propagation groups.
- */
- ListOfGO MakePipeTShapeChamferWithPosition (in double theR1, in double theW1, in double theL1,
- in double theR2, in double theW2, in double theL2,
- in double theH, in double theW, in boolean theHexMesh,
- in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3);
- /*!
- * \brief Create a T-shape object with specified caracteristics for the main and
- * the incident pipes (radius, width, half-length).
- *
- * A fillet is created on the junction of the pipes.
- * Center of the shape is (0,0,0). The main plane of the T-shape is XOY.
- * \param theR1 Internal radius of main pipe
- * \param theW1 Width of main pipe
- * \param theL1 Half-length of main pipe
- * \param theR2 Internal radius of incident pipe (R2 < R1)
- * \param theW2 Width of incident pipe (R2+W2 < R1+W1)
- * \param theL2 Half-length of incident pipe
- * \param theRF Radius of curvature of fillet.
- * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
- * \return List of GEOM_Object, containing the created shape and propagation groups.
- */
- ListOfGO MakePipeTShapeFillet (in double theR1, in double theW1, in double theL1,
- in double theR2, in double theW2, in double theL2,
- in double theRF, in boolean theHexMesh);
- /*!
- * \brief Create a T-shape object with specified caracteristics for the main and
- * the incident pipes (radius, width, half-length).
- *
- * A fillet is created on the junction of the pipes.
- * The extremities of the main pipe are located on junctions points P1 and P2.
- * The extremity of the incident pipe is located on junction point P3.
- * \param theR1 Internal radius of main pipe
- * \param theW1 Width of main pipe
- * \param theL1 Half-length of main pipe
- * \param theR2 Internal radius of incident pipe (R2 < R1)
- * \param theW2 Width of incident pipe (R2+W2 < R1+W1)
- * \param theL2 Half-length of incident pipe
- * \param theRF Radius of curvature of fillet.
- * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true)
- * \param theP1 1st junction point of main pipe
- * \param theP2 2nd junction point of main pipe
- * \param theP3 Junction point of incident pipe
- * \return List of GEOM_Object, containing the created shape and propagation groups.
- */
- ListOfGO MakePipeTShapeFilletWithPosition (in double theR1, in double theW1, in double theL1,
- in double theR2, in double theW2, in double theL2,
- in double theRF, in boolean theHexMesh,
- in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3);
- /*!
- * This function allows to create a disk already divided into blocks. It
- * can be use to create divided pipes for later meshing in hexaedra.
- * \param theR Radius of the disk
- * \param theRatio Relative size of the central square diagonal against the disk diameter
- * \param theOrientation Plane on which the disk will be built
- * \return New GEOM_Object, containing the created shape.
- */
- GEOM_Object MakeDividedDisk (in double theR,
- in double theRatio,
- in short theOrientation,
- in pattern thePattern);
-
- /*!
- * \brief Create a Disk prepared for hexa meshing with given center, normal vector and radius.
- * \param thePnt disk center.
- * \param theVec Vector, normal to the plane of the disk.
- * \param theR Disk radius.
- * \param theRatio Relative size of the central square diagonal against the disk diameter
- * \return New GEOM_Object, containing the created disk.
+ * \brief Creates a field
*/
- GEOM_Object MakeDividedDiskPntVecR ( in GEOM_Object thePnt,
- in GEOM_Object theVec,
- in double theR,
- in double theRatio,
- in pattern thePattern);
+ GEOM_Field CreateField(in GEOM_Object shape,
+ in string name,
+ in field_data_type type,
+ in short dimension,
+ in string_array componentNames);
+ /*!
+ * \brief Returns number of fields on a shape
+ */
+ long CountFields(in GEOM_Object shape);
+
+ /*!
+ * \brief Returns all fields on a shape
+ */
+ ListOfFields GetFields(in GEOM_Object shape);
/*!
- * Builds a cylinder prepared for hexa meshes
- * \param theR Radius of the cylinder
- * \param theH Height of the cylinder
- * \return New GEOM_Object, containing the created shape.
+ * \brief Returns a field on a shape by its name
*/
- GEOM_Object MakeDividedCylinder (in double theR,
- in double theH,
- in pattern thePattern );
+ GEOM_Field GetField(in GEOM_Object shape, in string name);
- /*@@ insert new functions before this line @@ do not remove this line @@*/
+ /*!
+ * \brief Returns number of sub-shapes of given dimension
+ */
+ long GetNbSubShapes(in GEOM_Object shape, in short fieldDim);
};
// # GEOM_Gen:
* Returns a SObject where theObject is placed
*/
SALOMEDS::SObject AddInStudy (in SALOMEDS::Study theStudy,
- in GEOM_Object theObject,
- in string theName,
- in GEOM_Object theFather);
+ in GEOM_BaseObject theObject,
+ in string theName,
+ in GEOM_BaseObject theFather);
/*!
* \brief Publish sub-shapes, standing for arguments and sub-shapes of arguments
in boolean theInheritFirstArg,
in boolean theAddPrefix);
- // # Methods to access interfaces for objects creation and transformation
-
+ // # Methods to access interfaces for objects creation and transformation
+
GEOM_IBasicOperations GetIBasicOperations (in long theStudyID) raises (SALOME::SALOME_Exception);
GEOM_ITransformOperations GetITransformOperations(in long theStudyID) raises (SALOME::SALOME_Exception);
GEOM_I3DPrimOperations GetI3DPrimOperations (in long theStudyID) raises (SALOME::SALOME_Exception);
GEOM_IMeasureOperations GetIMeasureOperations (in long theStudyID) raises (SALOME::SALOME_Exception);
GEOM_IBlocksOperations GetIBlocksOperations (in long theStudyID) raises (SALOME::SALOME_Exception);
GEOM_IGroupOperations GetIGroupOperations (in long theStudyID) raises (SALOME::SALOME_Exception);
- GEOM_IAdvancedOperations GetIAdvancedOperations (in long theStudyID) raises (SALOME::SALOME_Exception);
+ GEOM_IFieldOperations GetIFieldOperations (in long theStudyID) raises (SALOME::SALOME_Exception);
+
+ GEOM_IOperations GetPluginOperations (in long theStudyID,
+ in string theLibName) raises (SALOME::SALOME_Exception);
+
+ // # Objects Management
- // # Objects Management
-
/*!
* \brief Removes the object from the GEOM component
* \param theObject is a GEOM_Object to be removed
*/
- void RemoveObject (in GEOM_Object theObject);
+ void RemoveObject (in GEOM_BaseObject theObject);
/*!
* \brief Returns an object defined by the study and its entry in the GEOM component
* \param theEntry is an entry of the requested GEOM_Object in the GEOM component
* \note if the object has not previously been created a NULL GEOM_Object is returned
*/
- GEOM_Object GetObject (in long theStudyID, in string theEntry);
+ GEOM_BaseObject GetObject (in long theStudyID, in string theEntry);
/*!
* \brief Add a sub-shape defined by indices in \a theIndices
ListOfGO PublishNamedShapesInStudy(in SALOMEDS::Study theStudy,
//in SObject theSObject,
in Object theObject);
+
+ /*!
+ * \brief Creates a new folder
+ *
+ * Creates a new container (folder) for any GEOM objects.
+ * Folder will have name theName.
+ * If theFather is not NULL, the folder is placed under theFather object.
+ * Otherwise, the folder takes place under root 'Geometry' object.
+ *
+ * \param theName name of the folder
+ * \param theFather parent object
+ * \return SObject represented the created folder.
+ */
+ SALOMEDS::SObject CreateFolder (in string theName,
+ in SALOMEDS::SObject theFather);
+
+ /*!
+ * \brief Moves object to the specified folder
+ *
+ * The moved object should be first published in the study.
+ * \param theObject GEOM object to move
+ * \param theFolder target folder
+ */
+ void MoveToFolder (in GEOM_Object theObject,
+ in SALOMEDS::SObject theFolder);
+
+ /*!
+ * \brief Moves list of objects to the specified folder
+ *
+ * The moved objects should be first published in the study.
+ * \param theListOfGO list of GEOM objects to move
+ * \param theFolder target folder
+ */
+ void MoveListToFolder (in ListOfGO theListOfGO,
+ in SALOMEDS::SObject theFolder);
+
+ /*!
+ * \brief Moves objects to the specified position
+ *
+ * This function is used in the drag-n-drop functionality.
+ *
+ * \param what objects being moved
+ * \param where parent object where objects are moved to
+ * \param row position in the parent object's children list at which objects are moved
+ */
+ void Move( in object_list what,
+ in SALOMEDS::SObject where,
+ in long row );
+
+ /*!
+ * \brief Collects dependencies of the given objects from other ones
+ * \param theStudy The study in which the object is published
+ * \param theListOfEntries List of GEOM object entries in OCAF tree (not in study)
+ * \return Struct of dependent entries and its links as a byte array
+ * \note This method is supposed to be used by GUI only.
+ */
+ SALOMEDS::TMPFile GetDependencyTree(in SALOMEDS::Study theStudy,
+ in string_array theListOfEntries);
+
+ /*!
+ * \brief Fills 3 lists that is used to reduce study of redundant objects:
+ * - dependencies of the given objects from other ones;
+ * - children of the given objects;
+ * - all other objects in study.
+ * \param theStudy The study in which the object was published
+ * \param theSelectedEntries List of GEOM object entries in OCAF tree
+ * \param theParentEntries List of GEOM object entries on which the given objects depend
+ * \param theSubEntries Children entries list of the given objects
+ * \param theOtherEntries List of GEOM object entries which are in the study, but not in parents and children lists
+ * \note This method is supposed to be used by GUI only.
+ */
+ void GetEntriesToReduceStudy(in SALOMEDS::Study theStudy,
+ inout string_array theSelectedEntries,
+ inout string_array theParentEntries,
+ inout string_array theSubEntries,
+ inout string_array theOtherEntries);
+
};
};