X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=idl%2FGEOM_Gen.idl;h=7907cde35940c73aa950860bd6a5abd3391cde85;hb=d617faae6bc5aeb91b63796618a20c7c13037b6c;hp=87a912edc3829cb0cbb0237637947422e9819efe;hpb=b46831ede78cc6a4c84d76c7ddf46c3f270bc45c;p=modules%2Fgeom.git diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index 87a912edc..7907cde35 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 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 @@ -209,7 +209,18 @@ module GEOM SI_ALL // all interferences }; - /*! + /** + * This enumeration represents comparison conditions. + */ + enum comparison_condition + { + CC_GT, ///< Greater then + CC_GE, ///< Greater then or equal to + CC_LT, ///< Less then + CC_LE ///< Less then or equal to + }; + + /*! * \brief Object creation parameters * * Is returned by GEOM_Object::GetCreationInformation() @@ -245,7 +256,9 @@ module GEOM typedef sequence ListOfLong; typedef sequence ListOfDouble; typedef sequence ListOfListOfDouble; + typedef sequence ListOfListOfLong; + interface GEOM_Gen; interface GEOM_Object; interface GEOM_BaseObject; interface GEOM_Field; @@ -283,12 +296,9 @@ module GEOM string GetEntry(); /*! - * \brief Get ID of study, where the object is created. - */ - long GetStudyID(); - - /*! - * \brief Get internal type of the object (POINT, BOX, CYLINDER, EXTRUSION...). + * \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()" + * or \ref GEOM_IMeasureOperations::KindOfShape() "KindOfShape()" operation. */ long GetType(); @@ -350,6 +360,11 @@ module GEOM * \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 @@ -378,7 +393,7 @@ module GEOM * * This function is useful for the compounds only; for simple shapes it * exactly the same value as GetShapeType(). - * Note, that compounds are procesed recursively. + * Note, that compounds are processed recursively. * * \sa GetShapeType(), GetTopologyType(), GetMaxShapeType() */ @@ -389,7 +404,7 @@ module GEOM * * This function is useful for the compounds only; for simple shapes it * exactly the same value as GetShapeType(). - * Note, that compounds are procesed recursively. + * Note, that compounds are processed recursively. * * \sa GetShapeType(), GetTopologyType(), GetMinShapeType() */ @@ -494,6 +509,12 @@ module GEOM */ 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 @@ -669,7 +690,7 @@ module GEOM /*! * \brief Set the operation error code - * \param theErrorID is a string describing the error occured + * \param theErrorID is a string describing the error occurred * \note This method is supposed to be used only by interfaces inheriting from IOperations. */ void SetErrorCode (in string theErrorID); @@ -679,18 +700,13 @@ module GEOM */ string GetErrorCode(); - /*! - * \brief Get ID of study, where the operation is defined - */ - long GetStudyID(); - /*! * \brief Opens a new transaction */ void StartOperation(); /*! - * \brief Closes the previously opened trasaction + * \brief Closes the previously opened transaction */ void FinishOperation(); @@ -732,10 +748,13 @@ module GEOM * Create a point, corresponding to the given parameter on the given curve. * \param theRefCurve The referenced curve. * \param theParameter Value of parameter on the referenced curve. + * \param takeOrientationIntoAccount flag that tells if it is necessary + * to take the curve's orientation into account. * \return New GEOM_Object, containing the created point. */ GEOM_Object MakePointOnCurve (in GEOM_Object theRefCurve, - in double theParameter); + in double theParameter, + in boolean takeOrientationIntoAccount); /*! * \brief Create a point, corresponding to the given length on the given curve. @@ -797,7 +816,8 @@ module GEOM * \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. @@ -838,8 +858,8 @@ module GEOM GEOM_Object MakeVectorTwoPnt (in GEOM_Object thePnt1, in GEOM_Object thePnt2); /*! - * C\brief reate a line, passing through the given point - * and parrallel to the given direction + * \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. * \return New GEOM_Object, containing the created line. @@ -866,7 +886,7 @@ module GEOM * \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. */ @@ -1284,17 +1304,23 @@ module GEOM * \brief Replace the given object by its offset. * \param theObject The base object for the offset. * \param theOffset Offset value. + * \param theJoinByPipes To join offset surfaces by pipes or by intersection. * \return theObject. */ - GEOM_Object OffsetShape (in GEOM_Object theObject, in double theOffset); + GEOM_Object OffsetShape (in GEOM_Object theObject, + in double theOffset, + in boolean theJoinByPipes); /*! * \brief Create new object as offset of the given one. * \param theObject The base object for the offset. * \param theOffset Offset value. + * \param theJoinByPipes To join offset surfaces by pipes or by intersection. * \return New GEOM_Object, containing the offset object. */ - GEOM_Object OffsetShapeCopy (in GEOM_Object theObject, in double theOffset); + GEOM_Object OffsetShapeCopy (in GEOM_Object theObject, + in double theOffset, + in boolean theJoinByPipes); /*! * \brief Create new object as projection of the given one on a 2D surface. @@ -1439,13 +1465,17 @@ module GEOM * to project the total length of the wire. If it is negative the * projection is not scaled and natural wire length is kept for * the projection. + * \param theAngleRotation the desired angle between the tangent vector + * to the first curve at the first point of the theObject's + * projection in 2D space and U-direction of cylinder's 2D space. * \return A wire or a face or a compound of faces that represents a * projection of the source shape onto a cylinder. */ GEOM_Object MakeProjectionOnCylinder (in GEOM_Object theObject, in double theRadius, in double theStartAngle, - in double theAngleLength); + in double theAngleLength, + in double theAngleRotation); }; /*! @@ -1705,7 +1735,7 @@ module GEOM /*! - * \brief Add / Remove material to / from a solid by extrusion of the base shape on the given distance. + * \brief Add / Remove material to / from a solid by extrusion of the base shape on the given distance. * \param theInitShape Initial shape on which to perform the feature.It has to be a solid or * a compound made of a single solid * \param theBase Edge or wire defining the base shape to be extruded. @@ -1795,15 +1825,19 @@ module GEOM * * The path shape can be a wire or an edge. * the several profiles can be specified in the several locations of path. - * \param theSeqBases - list of Bases shape to be extruded. + * \param theSeqBases - list of Bases shape to be extruded. * \param theLocations - list of locations on the path corresponding * specified list of the Bases shapes. Number of locations * should be equal to number of bases or list of locations can be empty. * \param thePath - Path shape to extrude the base shape along it. * \param theWithContact - the mode defining that the section is translated to be in - * contact with the spine. + * contact with the spine. Ignored if IsBySteps is set. * \param theWithCorrection - defining that the section is rotated to be - * orthogonal to the spine tangent in the correspondent point + * orthogonal to the spine tangent in + * the correspondent point. Ignored if IsBySteps is set. + * \param IsBySteps - flag that tells if the result should be created + * step by step or as a whole. If IsBySteps is set no correction + * of bases is allowed. * \param IsGenerateGroups flag that tells if it is necessary to * return groups (true) or not (false). * \return The list of objects. The first one is a result pipe, @@ -1816,6 +1850,7 @@ module GEOM in GEOM_Object thePath, in boolean theWithContact , in boolean theWithCorrection, + in boolean IsBySteps, in boolean IsGenerateGroups); /*! @@ -1824,7 +1859,7 @@ module GEOM * * The path shape can be a shell or a face. * the several profiles can be specified in the several locations of path. - * \param theSeqBases - list of Bases shape to be extruded. + * \param theSeqBases - list of Bases shape to be extruded. * \param theSeqSubBases - list of corresponding sub-shapes of section shapes. * \param theLocations - list of locations on the path corresponding * specified list of the Bases shapes. Number of locations @@ -1872,7 +1907,7 @@ module GEOM * \param theBase Base shape to be extruded. * \param thePath Path shape to extrude the base shape along it. * \param theVec Vector defines a constant binormal direction to keep the - * same angle beetween the Direction and the sections + * same angle between the Direction and the sections * along the sweep surface. * \param IsGenerateGroups flag that tells if it is necessary to * return groups (true) or not (false). @@ -2443,18 +2478,18 @@ module GEOM * \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); /*! @@ -2547,18 +2582,18 @@ module GEOM * \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); /*! @@ -2631,7 +2666,8 @@ module GEOM * coincident with \a theShapeWhat or could be a part of it. * \param theShapeWhere Shape to find sub-shapes of. * \param theShapeWhat Shape, specifying what to find. - * \return Group of all found sub-shapes or a single found sub-shape. + * \return Compound which includes all found sub-shapes if they have different types; + * or group of all found shapes of the equal type; or a single found sub-shape. */ GEOM_Object GetInPlace (in GEOM_Object theShapeWhere, in GEOM_Object theShapeWhat); @@ -2654,11 +2690,24 @@ module GEOM * * \param theShapeWhere Shape to find sub-shapes of. * \param theShapeWhat Shape, specifying what to find. - * \return Group of all found sub-shapes or a single found sub-shape. + * \return Compound which includes all found sub-shapes if they have different types; + * or group of all found shapes of the equal type; or a single found sub-shape. */ 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. @@ -2735,6 +2784,63 @@ module GEOM ListOfGO GetSubShapeEdgeSorted (in GEOM_Object theShape, in GEOM_Object theStartPoint); + /*! + * \brief Return the list of subshapes that satisfies a certain tolerance + * criterion. The user defines the type of shapes to be returned, the + * condition and the tolerance value. The operation is defined for + * faces, edges and vertices only. E.g. for theShapeType FACE, theCondition + * CC_GT and theTolerance 1.e-7 this method returns all faces of theShape + * that have tolerances greater then 1.e7. + * + * \param theShape the shape to be exploded + * \param theShapeType the type of shapes to be returned. Can have the + * values FACE, EDGE and VERTEX only. + * \param theCondition the condition type. + * \param theTolerance the tolerance filter. + * \return the list of shapes that satisfy the conditions. + */ + ListOfGO GetSubShapesWithTolerance(in GEOM_Object theShape, + in short theShapeType, + in comparison_condition theCondition, + in double theTolerance); + + /** + * This enumeration represents an extraction statistics type. It is used in + * the interface GEOM_IShapesOperations::MakeExtraction. + */ + enum ExtractionStatType + { + EST_Removed, ///< Removed sub-shapes + EST_Modified, ///< Modified sub-shapes + EST_Added ///< Newly created sub-shapes + }; + + /*! + * This structure defines a format of extraction statistics. It is used in + * the interface GEOM_IShapesOperations::MakeExtraction. + */ + struct ExtractionStat + { + ExtractionStatType type; ///< Type of extraction statistics. + ListOfLong indices; ///< Shape indices touched by this type of modification. + }; + + typedef sequence ExtractionStats; + + /*! + * \brief Return the shape that is constructed from theShape without + * extracted sub-shapes from the input list. + * + * \param theShape the original shape. + * \param theSubShapeIDs the list of sub-shape IDs to be extracted from + * the original shape. + * \param theStats the operation statistics. Output parameter. + * \return the shape without extracted sub-shapes. + */ + GEOM_Object MakeExtraction(in GEOM_Object theShape, + in ListOfLong theSubShapeIDs, + out ExtractionStats theStats); + }; // # GEOM_IBlocksOperations: @@ -2750,7 +2856,7 @@ module GEOM /*! * \brief Create a quadrangle face from four edges. Order of Edges is not - * important. It is not necessary that edges share the same vertex. + * important. It is not necessary that edges share the same vertex. * \param theEdge1,theEdge2,theEdge3,theEdge4 Edges for the face bound. * \return New GEOM_Object, containing the created face. */ @@ -2785,7 +2891,7 @@ module GEOM * \brief Create a hexahedral solid, bounded by the six given faces. Order of * faces is not important. * - * It is not necessary that Faces share the same edge. + * It is not necessary that Faces share the same edge. * \param theFace1,theFace2,theFace3,theFace4,theFace5,theFace6 Faces for the hexahedral solid. * \return New GEOM_Object, containing the created solid. */ @@ -3133,7 +3239,7 @@ module GEOM * * Propagation group is a set of all edges, opposite to one (main) * edge of this group directly or through other opposite edges. - * Notion of Opposite Edge make sence only on quadrangle face. + * Notion of Opposite Edge make sense only on quadrangle face. * \param theShape Shape to build propagation groups on. * \return List of GEOM_Object, each of them is a propagation group. */ @@ -3232,7 +3338,7 @@ module GEOM * \param theRemoveInside Shapes, inside which the results will be deleted. * Each shape from theRemoveInside must belong to theShapes also. * \param theRemoveWebs If TRUE, perform Glue 3D algorithm. - * \param theMaterials Material indices for each shape. Make sence, only if theRemoveWebs is TRUE. + * \param theMaterials Material indices for each shape. Make sense, only if theRemoveWebs is TRUE. * * \return New GEOM_Object, containing the result shapes. */ @@ -3248,7 +3354,7 @@ module GEOM /*! * \brief Perform partition operation. * - * This method may be usefull if it is needed to make a partition for + * This method may be useful if it is needed to make a partition for * a compound containing nonintersected shapes. Performance will be better * since intersection between shapes from compound is not performed. * @@ -3711,7 +3817,7 @@ module GEOM * \param theVertexes Global indices of vertexes to perform fillet on. * \note Global index of sub-shape can be obtained, using method * GEOM_IShapesOperations.GetSubShapeIndex(). - * \note The list of vertices coudl be empty, in this case fillet fill be done + * \note The list of vertices could be empty, in this case fillet fill be done * at all vertices in given wire * \param doIgnoreSecantVertices If FALSE, fillet radius is always limited * by the length of the edges, nearest to the fillet vertex. @@ -3750,7 +3856,7 @@ module GEOM in double theD1, in double theD2, in long theFace1, in long theFace2); /*! - * \brief The Same but with params theD = Chamfer Lenght + * \brief The Same but with params theD = Chamfer Length * and theAngle = Chamfer Angle (Angle in radians) */ GEOM_Object MakeChamferEdgeAD (in GEOM_Object theShape, @@ -3774,7 +3880,7 @@ module GEOM in double theD1, in double theD2, in ListOfLong theFaces); /*! - * The Same but with params theD = Chamfer Lenght + * The Same but with params theD = Chamfer Length * and theAngle = Chamfer Angle (Angle in radians) */ GEOM_Object MakeChamferFacesAD (in GEOM_Object theShape, @@ -3793,7 +3899,7 @@ module GEOM in double theD1, in double theD2, in ListOfLong theEdges); /*! - * The Same but with params theD = Chamfer Lenght + * The Same but with params theD = Chamfer Length * and theAngle = Chamfer Angle (Angle in radians) */ GEOM_Object MakeChamferEdgesAD (in GEOM_Object theShape, @@ -3980,7 +4086,7 @@ module GEOM * \param theObjects 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. + * \return FALSE, if an error(s) occurred during the method execution. */ boolean GetFreeBoundary (in ListOfGO theObjects, out ListOfGO theClosedWires, @@ -4094,8 +4200,8 @@ module GEOM SALOMEDS::TMPFile GetTexture(in long theID, out long theWidth, out long theHeight); /*! - * \brief Get list of all avaiable texture IDs - * \return list of all texture IDs avaiable for the current study + * \brief Get list of all available texture IDs + * \return list of all texture IDs available for the current study */ ListOfLong GetAllTextures(); @@ -4110,7 +4216,7 @@ module GEOM }; /*! - * \brief Sequence of non-topological information tranfer data. + * \brief Sequence of non-topological information transfer data. */ typedef sequence ListOfTransferDatum; @@ -4125,7 +4231,7 @@ module GEOM * \param theResult statistics of the operation. Output parameter. It * represents a sequence of Transfer Datum. A datum has the type * (string code), the total number of items of this type and - * the number of transfered items. + * the number of transferred items. * \return true in case of success; otherwise false. */ boolean TransferData(in GEOM_Object theObjectFrom, @@ -4199,11 +4305,20 @@ module GEOM LINE, /*! segment */ SEGMENT, + /*! B-Spline curve */ + CRV_BSPLINE, + /*! Bezier curve */ + CRV_BEZIER, + /*! hyperbola */ + HYPERBOLA, + /*! parabola */ + PARABOLA, /*! other edge */ EDGE, // VERTEX VERTEX, // ADVANCED shapes + LCS, /*! all advanced shapes (temporary implementation) */ ADVANCED }; @@ -4252,12 +4367,14 @@ module GEOM * \brief Get summarized length of all wires, * area of surface and volume of the given shape. * \param theShape Shape to define properties of. + * \param theTolerance maximal relative error of area and volume computation. * \param theLength Output. Summarized length of all wires of the given shape. * \param theSurfArea Output. Area of surface of the given shape. * \param theVolume Output. Volume of the given shape. * \return Returns shape properties through the last three arguments. */ void GetBasicProperties (in GEOM_Object theShape, + in double theTolerance, out double theLength, out double theSurfArea, out double theVolume); @@ -4270,12 +4387,13 @@ module GEOM 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. @@ -4448,6 +4566,29 @@ module GEOM in long theCheckLevel, out ListOfLong theIntersections); + /*! + * \brief Detect self-intersections of the given shape with algorithm based on mesh intersections. + * \param theShape Shape to check validity of. + * \param theDeflection Linear deflection coefficient that specifies quality of tessellation. + * \param theTolerance Specifies a distance between sub-shapes used for detecting gaps: + * - if \a theTolerance <= 0, algorithm detects intersections + * - if \a theTolerance > 0, algorithm detects gaps + * \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 CheckSelfIntersectionsFast (in GEOM_Object theShape, + in float theDeflection, + in double theTolerance, + out ListOfLong theIntersections); + + /*! + * \brief Check boolean and partition operations arguments. + * \param theShape the argument of an operation to be checked. + * \return TRUE if the argument is valid for a boolean or partition + * operation; FALSE otherwise. + */ + boolean CheckBOPArguments (in GEOM_Object theShape); + /*! * \brief Detect intersections of the given shapes with algorithm based on mesh intersections. * \param theShape1 First source object @@ -4455,7 +4596,7 @@ module GEOM * \param theTolerance Specifies a distance between shapes used for detecting gaps: * - if \a theTolerance <= 0, algorithm detects intersections * - if \a theTolerance > 0, algorithm detects gaps - * \param theDeflection Linear deflection coefficient that specifies quality of tesselation: + * \param theDeflection Linear deflection coefficient that specifies quality of tessellation: * - if \a theDeflection <= 0, default deflection 0.001 is used * \param theIntersections1 Output: contains list of sub-shapes IDs from 1st shape that localize intersection * \param theIntersections2 Output: contains list of sub-shapes IDs from 2nd shape that localize intersection @@ -4527,6 +4668,16 @@ module GEOM */ 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 */ @@ -4584,6 +4735,172 @@ module GEOM */ 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 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: @@ -4593,7 +4910,7 @@ module GEOM interface GEOM_IGroupOperations : GEOM_IOperations { /*! - * \brief Creates a new group which will store sub-shapes of theMainShape + * \brief Creates a new group which will store sub-shapes of theMainShape * \param theMainShape is a GEOM_Object on which the group is selected * \param theShapeType defines a shape type of the group * \return a newly created GEOM group @@ -4617,7 +4934,7 @@ module GEOM 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. */ @@ -4631,7 +4948,7 @@ module GEOM 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. */ @@ -4758,7 +5075,67 @@ module GEOM 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. * @@ -4770,9 +5147,9 @@ module GEOM * \brief Undo/Redo Management */ - void Undo (in long theStudyID); + void Undo (); - void Redo (in long theStudyID); + void Redo (); /*! * \brief Publishing management @@ -4781,8 +5158,7 @@ module GEOM * 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); @@ -4790,8 +5166,6 @@ module GEOM * \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 @@ -4802,7 +5176,7 @@ module GEOM * in place of sub-shapes of the first argument, * because the whole shape corresponds to the first argument. * Mainly to be used after transformations, but it also can be - * usefull after partition with one object shape, and some other + * useful after partition with one object shape, and some other * operations, where only the first argument has to be considered. * If theObject has only one argument shape, this flag is automatically * considered as True, not regarding really passed value. @@ -4810,8 +5184,7 @@ module GEOM * 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, @@ -4821,8 +5194,6 @@ module GEOM * \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 @@ -4833,7 +5204,7 @@ module GEOM * in place of sub-shapes of the first argument, * because the whole shape corresponds to the first argument. * Mainly to be used after transformations, but it also can be - * usefull after partition with one object shape, and some other + * useful after partition with one object shape, and some other * operations, where only the first argument has to be considered. * If theObject has only one argument shape, this flag is automatically * considered as True, not regarding really passed value. @@ -4841,8 +5212,7 @@ module GEOM * 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, @@ -4853,8 +5223,6 @@ module GEOM * * 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 @@ -4865,15 +5233,14 @@ module GEOM * in place of sub-shapes of the first argument, * because the whole shape corresponds to the first argument. * Mainly to be used after transformations, but it also can be - * usefull after partition with one object shape, and some other + * useful after partition with one object shape, and some other * operations, where only the first argument has to be considered. * If theObject has only one argument shape, this flag is automatically * considered as True, not regarding really passed value. * \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, @@ -4881,22 +5248,23 @@ module GEOM // # 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 @@ -4909,11 +5277,10 @@ module GEOM /*! * \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 @@ -4928,7 +5295,7 @@ module GEOM /*! * \brief Returns a GEOM_Object defined by its IOR - * \param theIOR a string containg an IOR of the requested GEOM_Object + * \param theIOR a string containing an IOR of the requested GEOM_Object */ GEOM_Object GetIORFromString (in string theIOR); @@ -4952,11 +5319,9 @@ module GEOM /*! * \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); /*! @@ -5009,32 +5374,33 @@ module GEOM /*! * \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); }; };