-// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2022 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
CC_LE ///< Less then or equal to
};
- /*!
+ /*!
* \brief Object creation parameters
*
* Is returned by GEOM_Object::GetCreationInformation()
typedef sequence<long> ListOfLong;
typedef sequence<double> ListOfDouble;
typedef sequence<ListOfDouble> ListOfListOfDouble;
+ typedef sequence<ListOfLong> ListOfListOfLong;
+ interface GEOM_Gen;
interface GEOM_Object;
interface GEOM_BaseObject;
interface GEOM_Field;
*/
string GetEntry();
- /*!
- * \brief Get ID of study, where the object is created.
- */
- long GetStudyID();
-
/*!
* \brief Get internal type of operation created this object (POINT, BOX, CYLINDER, EXTRUSION...).
* \note To get topological information on the object, use \ref GEOM_IMeasureOperations::WhatIs() "WhatIs()"
* \brief Return name of operation and values of parameters used for object creation
*/
CreationInformationSeq GetCreationInformation();
+
+ /*!
+ * \brief Return the engine creating this object
+ */
+ GEOM_Gen GetGen();
};
//# GEOM_Object
*/
GEOM_Object GetMainShape();
+ /*
+ * \brief Returns true if the current object has connection to a parametrical model
+ * which can be modified by parameters change.
+ */
+ boolean IsParametrical();
+
};
//# GEOM_Field
*/
string GetErrorCode();
- /*!
- * \brief Get ID of study, where the operation is defined
- */
- long GetStudyID();
-
/*!
* \brief Opens a new transaction
*/
* \param theFace The referenced face.
* \return New GEOM_Object, containing the created point.
*/
- GEOM_Object MakePointOnFace (in GEOM_Object theFace);
+ GEOM_Object MakePointOnFace (in GEOM_Object theFace,
+ in long theNumberOfPnts);
/*!
* \brief Create a point, on two lines intersection.
GEOM_Object MakeVectorTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2);
/*!
- * C\brief reate a line, passing through the given point
+ * \brief Create a line, passing through the given point
* and parallel to the given direction
* \param thePnt Point. The resulting line will pass through it.
* \param theDir Direction. The resulting line will be parallel to it.
* \brief Create a plane, passing through the three given points
* \param thePnt1 First of three points, defining the plane.
* \param thePnt2 Second of three points, defining the plane.
- * \param thePnt3 Fird of three points, defining the plane.
+ * \param thePnt3 Third of three points, defining the plane.
* \param theTrimSize Half size of a side of quadrangle face, representing the plane.
* \return New GEOM_Object, containing the created plane.
*/
* \param theShape Shape to find sub-shapes of.
* \param theShapeType Type of sub-shapes to be retrieved.
* \param theTopLeftPoint Top left quadrangle corner
- * \param theTopRigthPoint Top right quadrangle corner
+ * \param theTopRightPoint Top right quadrangle corner
* \param theBottomLeftPoint Bottom left quadrangle corner
- * \param theBottomRigthPoint Bottom right quadrangle corner
+ * \param theBottomRightPoint Bottom right quadrangle corner
* \param theState The state of the sub-shapes to find.
* \return List of all found sub-shapes.
*/
ListOfGO GetShapesOnQuadrangle (in GEOM_Object theShape,
in long theShapeType,
in GEOM_Object theTopLeftPoint,
- in GEOM_Object theTopRigthPoint,
+ in GEOM_Object theTopRightPoint,
in GEOM_Object theBottomLeftPoint,
- in GEOM_Object theBottomRigthPoint,
+ in GEOM_Object theBottomRightPoint,
in shape_state theState);
/*!
* \param theShape Shape to find sub-shapes of.
* \param theShapeType Type of sub-shapes to be retrieved.
* \param theTopLeftPoint Top left quadrangle corner
- * \param theTopRigthPoint Top right quadrangle corner
+ * \param theTopRightPoint Top right quadrangle corner
* \param theBottomLeftPoint Bottom left quadrangle corner
- * \param theBottomRigthPoint Bottom right quadrangle corner
+ * \param theBottomRightPoint Bottom right quadrangle corner
* \param theState The state of the sub-shapes to find.
* \return List of IDs of all found sub-shapes.
*/
ListOfLong GetShapesOnQuadrangleIDs (in GEOM_Object theShape,
in long theShapeType,
in GEOM_Object theTopLeftPoint,
- in GEOM_Object theTopRigthPoint,
+ in GEOM_Object theTopRightPoint,
in GEOM_Object theBottomLeftPoint,
- in GEOM_Object theBottomRigthPoint,
+ in GEOM_Object theBottomRightPoint,
in shape_state theState);
/*!
GEOM_Object GetInPlaceByHistory (in GEOM_Object theShapeWhere,
in GEOM_Object theShapeWhat);
+ /*!
+ * \brief A sort of GetInPlace functionality, returning for each sub-shape ID of
+ * \a theShapeWhat a list of corresponding sub-shape IDs of \a theShapeWhere.
+ * For example, if theShapeWhat is a box and theShapeWhere is this box cut into
+ * two parts by a plane, then the result can be as this:
+ * len( result_list ) = 35,
+ * result_list[ 1 ] = [ 2, 36 ], which means that the box turned into two solids
+ * with IDs 2 and 36 within theShapeWhere
+ */
+ ListOfListOfLong GetInPlaceMap (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.
GEOM_Object GetCentreOfMass (in GEOM_Object theShape);
/*
- * Get the vertex by index for 1D objects depends the edge/wire orientation
+ * Get the vertex by index for 1D objects
* \param theShape Shape (wire or edge) to find the vertex on it
* \param theIndex Index of vertex sub-shape
+ * \param theUseOri To consider edge/wire orientation or not
* \return New GEOM_Object, vertex.
*/
- GEOM_Object GetVertexByIndex( in GEOM_Object theShape, in long index );
+ GEOM_Object GetVertexByIndex( in GEOM_Object theShape, in long theIndex, in boolean theUseOri );
/*!
* \brief Get a vector, representing the normal of theFace.
*/
double GetAngleBtwVectors (in GEOM_Object theShape1, in GEOM_Object theShape2);
+ /*!
+ * \brief The function takes a single face with holes and returns a list of faces,
+ * first of them is the original face without holes, and the other faces are placed
+ * on the same surface as the original face but bounded by each hole wire.
+ * If the original face has no holes, it will be returned as an output
+ * \param theShape face, to perform operation.
+ * \return ListOfGO, containing the result original face and faces from holes.
+ */
+ ListOfGO PatchFace(in GEOM_Object theShape);
+
/*!
* \brief Get point coordinates
*/
*/
double MinSurfaceCurvatureByPoint (in GEOM_Object theShape, in GEOM_Object thePoint);
+ /*!
+ * \brief Get vector of curvature of surface in the given point along the given direction.
+ * \param theShape - face.
+ * \param thePoint - point.
+ * \param theDirection - direction.
+ * \note Before the calculation of curvature, the point and the direction
+ * are projected to the face, if the point does not lay on it or
+ * the direction is not tangent to it initially.
+ * \return Vector of curvature. The returned vector is codirectional with
+ * the normal to the face in the given point in case of positive
+ * curvature value and opposite to the normal in case of negative
+ * curvature. The normal of the returned vector is equal to the
+ * absolute value of the curvature.
+ */
+ GEOM_Object SurfaceCurvatureByPointAndDirection (in GEOM_Object theShape,
+ in GEOM_Object thePoint,
+ in GEOM_Object theDirection);
+
+ //! Methods and structure for implement CheckConformity tool
+
+ /*!
+ * \brief Structure for store shapes from failed checks.
+ * If failed check on small edges, then second shape is null
+ */
+ struct PairOfShape
+ {
+ GEOM_Object first;
+ GEOM_Object second;
+ };
+
+ /*!
+ * \brief Structure for store result of check
+ * store type of check as number and failed shapes
+ */
+ struct CheckResult
+ {
+ long type;
+ PairOfShape failedShapes;
+ };
+
+ typedef sequence<PairOfShape> SequenceOfPairOfShape;
+ typedef sequence<CheckResult> CheckResults;
+
+ /*!
+ * \brief Perform analyse of shape and return all failed checks.
+ *
+ * \param theShape Shape for check.
+ */
+ CheckResults CheckConformityShape(in GEOM_Object theShape);
+
+ /*!
+ * \brief Find all self-intersected 2D curves.
+ *
+ * \param theResults result of check - list of failed checks and sub-shapes.
+ */
+ SequenceOfPairOfShape SelfIntersected2D(in CheckResults theResults);
+
+ /*!
+ * \brief Find pairs of interfering sub-shapes, by default all pairs of interfering shapes are returned.
+ * Avaliable types:
+ * - vertices touched by tolerance;
+ * - vertex touching an edge in the inner point;
+ * - vertex lying on the inner point of a face;
+ * - edges intersecting by inner points;
+ * - edge touching/intersecting face in the inner point;
+ * - faces intersection by inner point
+ *
+ * \param theResults result of check - list of failed checks and sub-shapes.
+ * \param theShapeType1 Type of shape.
+ * \param theShapeType2 Type of shape.
+ */
+ SequenceOfPairOfShape InterferingSubshapes(in CheckResults theResults,
+ in long theShapeType1,
+ in long theShapeType2);
+
+ /*!
+ * \brief Find edges, which are fully covered by tolerances of vertices.
+ *
+ * \param theResults result of check - list of failed checks and sub-shapes.
+ */
+ ListOfGO SmallEdges(in CheckResults theResults);
+
+ /*!
+ * \brief find remote objects (sub-shape on a shape).
+ * Avaliable types:
+ * - vertex far from edge;
+ * - vertex far from face;
+ * - edge far from face
+ *
+ * \param theResults result of check - list of failed checks and sub-shapes.
+ * \param theShapeType Type of shape.
+ * \param theSubShapeType Type of sub-shape.
+ * \param theTolerance tolerance, by default used tolerance of sub-shape.
+ */
+ SequenceOfPairOfShape DistantShapes(in CheckResults theResults,
+ in long theShapeType,
+ in long theSubShapeType,
+ in double theTolerance);
+
+ /*!
+ * \brief Compute possible tolerance for the shape, minimize tolerance of shape as well
+ * as tolerance of sub-shapes as much as possible
+ *
+ * \param theShape Shape for update.
+ */
+ double UpdateTolerance(in GEOM_Object theShape);
+
+ /*!
+ * \brief Get the calculator for the proximity value between the given shapes.
+ * \param theShape1,theShape2 Shapes to find proximity.
+ * \return The calculator object.
+ */
+ GEOM_Object ShapeProximityCalculator(in GEOM_Object theShape1, in GEOM_Object theShape2);
+
+ /*!
+ * \brief Set number sample points to compute the coarse proximity.
+ * \param theCalculator Proximity calculator.
+ * \param theShape Shape to be samples.
+ * \param theNbSamples Number of samples points.
+ */
+ void SetShapeSampling(in GEOM_Object theCalculator,
+ in GEOM_Object theShape,
+ in long theNbSamples);
+
+ /*!
+ * \brief Compute coarse value of the proximity basing on the polygonal representation of shapes.
+ * \param theCalculator Proximity calculator.
+ * \return Proximity value.
+ */
+ double GetCoarseProximity(in GEOM_Object theCalculator);
+
+ /*!
+ * \brief Compute precise value of the proximity basing on the exact shapes.
+ * \param theCalculator Proximity calculator.
+ * \return Proximity value.
+ */
+ double GetPreciseProximity(in GEOM_Object theCalculator);
+
};
// # GEOM_IGroupOperations:
void RemoveObject (in GEOM_Object theGroup, in long theSubShapeId);
/*!
- * \brief Adds to the group all the given shapes. No errors, if some shapes are alredy included.
+ * \brief Adds to the group all the given shapes. No errors, if some shapes are already included.
* \param theGroup is a GEOM group to which the new sub-shapes are added.
* \param theSubShapes is a list of sub-shapes to be added.
*/
void DifferenceList (in GEOM_Object theGroup, in ListOfGO theSubShapes);
/*!
- * \brief Adds to the group all the given shapes. No errors, if some shapes are alredy included.
+ * \brief Adds to the group all the given shapes. No errors, if some shapes are already included.
* \param theGroup is a GEOM group to which the new sub-shapes are added.
* \param theSubShapes is a list of IDs of sub-shapes to be added.
*/
long GetNbSubShapes(in GEOM_Object shape, in short fieldDim);
};
- // # GEOM_Gen:
+ // # GEOM_ITestOperations:
+ /*!
+ * \brief Interface for testing operations.
+ */
+ interface GEOM_ITestOperations : GEOM_IOperations
+ {
+ /*!
+ * \brief Build a mesh on the given shape.
+ * \param shape is a source object
+ * \param linearDeflection is a linear deflection
+ * \param isRelative says if given value of deflection is relative to shape's bounding box
+ * \param angularDeflection is an angular deflection for edges in radians
+ * \return true in case of success; otherwise false.
+ */
+ boolean Tesselate(in GEOM_Object shape, in double linearDeflection,
+ in boolean isRelative, in double angularDeflection);
+ };
+
+ // # GEOM_ICanonicalRecognition:
+ /*!
+ * \brief Interface for canonical recognition operations.
+ */
+ interface GEOM_ICanonicalRecognition : GEOM_IOperations
+ {
+ /*!
+ * check if the shape is planar
+ */
+ boolean isPlane(in GEOM_Object shape, in double tolerance, inout ListOfDouble normal, inout ListOfDouble origin);
+
+ /*!
+ * check if shape is spherical
+ */
+ boolean isSphere(in GEOM_Object shape, in double tolerance, inout ListOfDouble origin, inout double radius);
+
+ /*!
+ * check if shape is conical
+ */
+ boolean isCone(in GEOM_Object shape, in double tolerance, inout ListOfDouble axis, inout ListOfDouble apex, inout double halfAngle);
+
+ /*!
+ * check if shape is cylinder
+ */
+ boolean isCylinder(in GEOM_Object shape, in double tolerance, inout ListOfDouble axis, inout ListOfDouble origin, inout double radius);
+
+ /*!
+ * check if edge / wire is line
+ */
+ boolean isLine(in GEOM_Object edge, in double tolerance, inout ListOfDouble direction, inout ListOfDouble origin);
+
+ /*!
+ * check if edge / wire is circle
+ */
+ boolean isCircle(in GEOM_Object edge, in double tolerance, inout ListOfDouble normal, inout ListOfDouble origin, inout double radius);
+
+ /*!
+ * check if edge / wire is ellipse
+ */
+ boolean isEllipse(in GEOM_Object edge, in double tolerance, inout ListOfDouble normal, inout ListOfDouble dirX, inout ListOfDouble origin, inout double majorRadius, inout double minorRadius);
+ };
+
+ // # GEOM_Gen:
/*!
* \brief Interface to access other GEOM interfaces.
*
* \brief Undo/Redo Management
*/
- void Undo (in long theStudyID);
+ void Undo ();
- void Redo (in long theStudyID);
+ void Redo ();
/*!
* \brief Publishing management
* if theFather is not NULL the object is placed under thFather's SObject.
* Returns a SObject where theObject is placed
*/
- SALOMEDS::SObject AddInStudy (in SALOMEDS::Study theStudy,
- in GEOM_BaseObject theObject,
+ SALOMEDS::SObject AddInStudy (in GEOM_BaseObject theObject,
in string theName,
in GEOM_BaseObject theFather);
* \brief Publish sub-shapes, standing for arguments and sub-shapes of arguments
*
* To be used from python scripts out of geompy.addToStudy (non-default usage)
- * \param theStudy the study, in which theObject is published already,
- * and in which the arguments will be published
* \param theObject published GEOM_Object, arguments of which will be published
* \param theArgs list of GEOM_Object, operation arguments to be published.
* If this list is empty, all operation arguments will be published
* and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
* \return list of published sub-shapes
*/
- ListOfGO RestoreSubShapesO (in SALOMEDS::Study theStudy,
- in GEOM_Object theObject,
+ ListOfGO RestoreSubShapesO (in GEOM_Object theObject,
in ListOfGO theArgs,
in find_shape_method theFindMethod,
in boolean theInheritFirstArg,
* \brief Publish sub-shapes, standing for arguments and sub-shapes of arguments
*
* To be used from python scripts out of geompy.addToStudy (non-default usage)
- * \param theStudy the study, in which theObject is published already,
- * and in which the arguments will be published
* \param theObject published GEOM_Object, arguments of which will be published
* \param theArgs list of GEOM_Object, operation arguments to be published.
* If this list is empty, all operation arguments will be published
* and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
* \return list of published sub-shapes
*/
- ListOfGO RestoreGivenSubShapesO (in SALOMEDS::Study theStudy,
- in GEOM_Object theObject,
+ ListOfGO RestoreGivenSubShapesO (in GEOM_Object theObject,
in ListOfGO theArgs,
in find_shape_method theFindMethod,
in boolean theInheritFirstArg,
*
* To be used from GUI and from geompy.addToStudy.
* Work like the above method, but accepts study object theSObject instead of GEOM_Object.
- * \param theStudy the study, in which theObject is published already,
- * and in which the arguments will be published
* \param theSObject study object, referencing GEOM_Object, arguments of which will be published
* \param theArgs list of GEOM_Object, operation arguments to be published.
* If this list is empty, all operation arguments will be published
* \param theAddPrefix add prefix "from_" to names of restored sub-shapes,
* and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
*/
- ListOfGO RestoreSubShapesSO (in SALOMEDS::Study theStudy,
- in SALOMEDS::SObject theSObject,
+ ListOfGO RestoreSubShapesSO (in SALOMEDS::SObject theSObject,
in ListOfGO theArgs,
in find_shape_method theFindMethod,
in boolean theInheritFirstArg,
// # 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_IShapesOperations GetIShapesOperations (in long theStudyID) raises (SALOME::SALOME_Exception);
- GEOM_IBooleanOperations GetIBooleanOperations (in long theStudyID) raises (SALOME::SALOME_Exception);
- GEOM_ICurvesOperations GetICurvesOperations (in long theStudyID) raises (SALOME::SALOME_Exception);
- GEOM_ILocalOperations GetILocalOperations (in long theStudyID) raises (SALOME::SALOME_Exception);
- GEOM_IHealingOperations GetIHealingOperations (in long theStudyID) raises (SALOME::SALOME_Exception);
- GEOM_IInsertOperations GetIInsertOperations (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_IFieldOperations GetIFieldOperations (in long theStudyID) raises (SALOME::SALOME_Exception);
-
- GEOM_IOperations GetPluginOperations (in long theStudyID,
- in string theLibName) raises (SALOME::SALOME_Exception);
+ GEOM_IBasicOperations GetIBasicOperations () raises (SALOME::SALOME_Exception);
+ GEOM_ITransformOperations GetITransformOperations () raises (SALOME::SALOME_Exception);
+ GEOM_I3DPrimOperations GetI3DPrimOperations () raises (SALOME::SALOME_Exception);
+ GEOM_IShapesOperations GetIShapesOperations () raises (SALOME::SALOME_Exception);
+ GEOM_IBooleanOperations GetIBooleanOperations () raises (SALOME::SALOME_Exception);
+ GEOM_ICurvesOperations GetICurvesOperations () raises (SALOME::SALOME_Exception);
+ GEOM_ILocalOperations GetILocalOperations () raises (SALOME::SALOME_Exception);
+ GEOM_IHealingOperations GetIHealingOperations () raises (SALOME::SALOME_Exception);
+ GEOM_IInsertOperations GetIInsertOperations () raises (SALOME::SALOME_Exception);
+ GEOM_IMeasureOperations GetIMeasureOperations () raises (SALOME::SALOME_Exception);
+ GEOM_IBlocksOperations GetIBlocksOperations () raises (SALOME::SALOME_Exception);
+ GEOM_IGroupOperations GetIGroupOperations () raises (SALOME::SALOME_Exception);
+ GEOM_IFieldOperations GetIFieldOperations () raises (SALOME::SALOME_Exception);
+ GEOM_ITestOperations GetITestOperations () raises (SALOME::SALOME_Exception);
+ GEOM_ICanonicalRecognition GetICanonicalRecognition() raises (SALOME::SALOME_Exception);
+
+ GEOM_IOperations GetPluginOperations (in string theLibName) raises (SALOME::SALOME_Exception);
// # Objects Management
/*!
* \brief Returns an object defined by the study and its entry in the GEOM component
- * \param theStudyID is a SALOMEDS Study ID
* \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_BaseObject GetObject (in long theStudyID, in string theEntry);
+ GEOM_BaseObject GetObject (in string theEntry);
/*!
* \brief Add a sub-shape defined by indices in \a theIndices
/*!
* \brief Publishes the named sub-shapes of given object in the study.
- * \param theStudy The study in which the object is published
* \param theObject The object which named sub-shapes are published
*/
- ListOfGO PublishNamedShapesInStudy(in SALOMEDS::Study theStudy,
- //in SObject theSObject,
+ ListOfGO PublishNamedShapesInStudy(//in SObject theSObject,
in Object theObject);
/*!
/*!
* \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);
+ SALOMEDS::TMPFile GetDependencyTree(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);
+ void GetEntriesToReduceStudy(inout string_array theSelectedEntries,
+ inout string_array theParentEntries,
+ inout string_array theSubEntries,
+ inout string_array theOtherEntries);
+
+ /*
+ * \brief Breaks links to parametrical mode for parametrical shape
+ */
+ void BreakLink(in string theEntry);
};
};