-// 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;
* \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
* \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);
+
+ /*!
+ * \brief Convert X,Y,Z points coordinates to UV parameters on the given surface.
+ \param theSurf the given face. It can be also a shell or a compound with one face.
+ \param theXYZlist float list of size 3*N where N is the number of points
+ for which we want their U,V coordinates.
+ If the user enters a list of size not divisible by 3
+ an exception will be thrown.
+ \param theIsNormalized if True, the returned parameters will be in range [0, 1].
+ \return list of float of size 2*N.
+ */
+ ListOfDouble XYZtoUV(in GEOM_Object theSurf,
+ in ListOfDouble theXYZlist,
+ in boolean theIsNormalized);
+
+ /*!
+ * \brief Convert UV parameters on the given surface to 3D points coordinates.
+ \param theSurf the given face. It can be also a shell or a compound with one face.
+ \param theUVlist float list of size 2*N where N is the number of points
+ for which we want their X,Y,Z coordinates.
+ If the user enters a list of non-even size
+ an exception will be thrown.
+ \param theIsNormalized if True, the input parameters are expected to be in range [0, 1].
+ \return list of float of size 3*N.
+ */
+ ListOfDouble UVtoXYZ(in GEOM_Object theSurf,
+ in ListOfDouble theUVlist,
+ in boolean theIsNormalized);
+
+ //! 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.
*
// # Methods to access interfaces for objects creation and transformation
- 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_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);
inout string_array theSubEntries,
inout string_array theOtherEntries);
+
+ /*
+ * \brief Breaks links to parametrical mode for parametrical shape
+ */
+ void BreakLink(in string theEntry);
};
};