X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=idl%2FGEOM_Gen.idl;h=7907cde35940c73aa950860bd6a5abd3391cde85;hb=d617faae6bc5aeb91b63796618a20c7c13037b6c;hp=7423266a40e83d282b5ecf86ecad0da9e07e14da;hpb=bb74bfbe1eb20b371dd4d310ee2292ccfa7cc454;p=modules%2Fgeom.git diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index 7423266a4..7907cde35 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2023 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -4305,6 +4305,14 @@ module GEOM LINE, /*! segment */ SEGMENT, + /*! B-Spline curve */ + CRV_BSPLINE, + /*! Bezier curve */ + CRV_BEZIER, + /*! hyperbola */ + HYPERBOLA, + /*! parabola */ + PARABOLA, /*! other edge */ EDGE, // VERTEX @@ -4745,6 +4753,154 @@ module GEOM 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 SequenceOfPairOfShape; + typedef sequence 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: