-// 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
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 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:
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);
};
};