X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=idl%2FGEOM_Gen.idl;h=66f23e436fa4fbf0f36e1aa46813c38ca116433d;hb=190ad709e40fe26daaecb81dcd1b875a2d235b17;hp=78e9bfca24e552af7724c92253f7cca05f6bae3f;hpb=cceb7b5b9e6c728367bdc94c596eb2bf496669e0;p=modules%2Fgeom.git diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index 78e9bfca2..66f23e436 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 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 @@ -209,6 +209,17 @@ 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 * @@ -226,6 +237,7 @@ module GEOM string operationName; Parameters params; }; + typedef sequence CreationInformationSeq; /*! * \brief Reporting on shape healing @@ -287,7 +299,9 @@ module GEOM 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(); @@ -348,7 +362,7 @@ module GEOM /*! * \brief Return name of operation and values of parameters used for object creation */ - CreationInformation GetCreationInformation(); + CreationInformationSeq GetCreationInformation(); }; //# GEOM_Object @@ -394,6 +408,18 @@ module GEOM */ shape_type GetMaxShapeType(); + /*! + * \brief Returns a name of a sub-shape if the sub-shape is published in the study + * \param subID - sub-shape ID + * \return string - the found name or an empty string if the sub-shape does not + * exits or is not published in the study + * + * \note Only sub-shapes directly retrieved (using e.g. ExtractSubShapes() or + * via group creation) can be found. Also, as sub-shape can be published in the study + * many times, only the first found name is returned. + */ + string GetSubShapeName(in long subID); + /*! * \brief Set color of the object. * @@ -719,10 +745,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. @@ -1408,6 +1437,35 @@ module GEOM * \return theObject. */ GEOM_Object RecomputeObject (in GEOM_Object theObject); + + /*! + * \brief Compute the projection of a wire or a face on a cylinder. + * + * This method computes a wire or a face or a compound of faces + * that represents a projection of the source shape onto cylinder. + * The cylinder's coordinate system is the same as the global coordinate + * system. + * + * \param theObject The object to be projected. It can be either + * a planar wire or a face. + * \param theRadius The radius of the cylinder. + * \param theStartAngle The starting angle from the cylinder's X axis + * around Z axis. The angle from which the projection is started. + * \param theAngleLength The projection length angle. The angle in which + * 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 theAngleRotation); }; /*! @@ -1674,22 +1732,31 @@ module GEOM * \param theHeight Prism dimension along the normal of the face. * \param theAngle Draft angel in degrees * \param theFuse If true material is added else material is removed + * \param theInvert If true material changes the direction * \return New GEOM_Object, containing the modified shape */ GEOM_Object MakeDraftPrism (in GEOM_Object theInitShape, in GEOM_Object theBase, in double theHeight, in double theAngle, - in boolean theFuse); + in boolean theFuse, + in boolean theInvert); /*! * \brief Create a shape by extrusion of the base shape along * the path shape. The path shape can be a wire or an edge. * \param theBase Base shape to be extruded. * \param thePath Path shape to extrude the base shape along it. - * \return New GEOM_Object, containing the created pipe. + * \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, + * the other ones are the created groups. If \a IsGenerateGroups + * is not set the returned list contains a single object, which + * is the operation result. */ - GEOM_Object MakePipe (in GEOM_Object theBase, in GEOM_Object thePath); + ListOfGO MakePipe (in GEOM_Object theBase, + in GEOM_Object thePath, + in boolean IsGenerateGroups); /*! * \brief Create a shape by revolution of the base shape around the axis @@ -1754,16 +1821,27 @@ module GEOM * 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 - * \return New GEOM_Object, containing the created pipe. - */ - GEOM_Object MakePipeWithDifferentSections (in ListOfGO theSeqBases, - in ListOfGO theLocations, - in GEOM_Object thePath, - in boolean theWithContact , - in boolean theWithCorrection ); + * 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, + * the other ones are the created groups. If \a IsGenerateGroups + * is not set the returned list contains a single object, which + * is the operation result. + */ + ListOfGO MakePipeWithDifferentSections (in ListOfGO theSeqBases, + in ListOfGO theLocations, + in GEOM_Object thePath, + in boolean theWithContact , + in boolean theWithCorrection, + in boolean IsBySteps, + in boolean IsGenerateGroups); /*! * \brief Create a shape by extrusion of the profile shape along @@ -1781,23 +1859,35 @@ module GEOM * contact with the spine. * \param theWithCorrection - defining that the section is rotated to be * orthogonal to the spine tangent in the correspondent point - * \return New GEOM_Object, containing the created pipe. - */ - GEOM_Object MakePipeWithShellSections (in ListOfGO theSeqBases, - in ListOfGO theSeqSubBases, - in ListOfGO theLocations, - in GEOM_Object thePath, - in boolean theWithContact , - in boolean theWithCorrection ); + * \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, + * the other ones are the created groups. If \a IsGenerateGroups + * is not set the returned list contains a single object, which + * is the operation result. + */ + ListOfGO MakePipeWithShellSections (in ListOfGO theSeqBases, + in ListOfGO theSeqSubBases, + in ListOfGO theLocations, + in GEOM_Object thePath, + in boolean theWithContact, + in boolean theWithCorrection, + in boolean IsGenerateGroups); /*! * \brief Create solids between given sections * \param theSeqBases - list of sections (shell or face). * \param theLocations - list of corresponding vertexes - * \return New GEOM_Object, containing the created solids. + * \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, + * the other ones are the created groups. If \a IsGenerateGroups + * is not set the returned list contains a single object, which + * is the operation result. */ - GEOM_Object MakePipeShellsWithoutPath (in ListOfGO theSeqBases, - in ListOfGO theLocations); + ListOfGO MakePipeShellsWithoutPath (in ListOfGO theSeqBases, + in ListOfGO theLocations, + in boolean IsGenerateGroups); /*! * \brief Create a shape by extrusion of the base shape along @@ -1809,24 +1899,40 @@ module GEOM * \param theVec Vector defines a constant binormal direction to keep the * same angle beetween the Direction and the sections * along the sweep surface. - * \return New GEOM_Object, containing the created pipe. - */ - GEOM_Object MakePipeBiNormalAlongVector (in GEOM_Object theBase, - in GEOM_Object thePath, - in GEOM_Object theVec); + * \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, + * the other ones are the created groups. If \a IsGenerateGroups + * is not set the returned list contains a single object, which + * is the operation result. + */ + ListOfGO MakePipeBiNormalAlongVector (in GEOM_Object theBase, + in GEOM_Object thePath, + in GEOM_Object theVec, + in boolean IsGenerateGroups); /*! - * \brief Make a thick solid from a surface shape (face or shell) - * \param theObject Surface from which the thick solid is made + * \brief Make a thick solid from a shape. + * + * If the input is a surface shape (face or shell) the result is + * a thick solid. If an input shape is a solid the result is a hollowed + * solid with removed faces. + * \param theObject face or shell to get thick solid or solid to get + * hollowed solid. + * \param theFacesIDs the list of face IDs to be removed from the result. + * It can be empty. * \param theThickness Value of the thickness - * \param isCopy To make a copy of \a theObject ot to modify \a theObject. + * \param isCopy To make a copy of \a theObject or to modify \a theObject + * \param isInside If true the thickness is applied towards inside * \return New GEOM_Object, containing the created pipe if isCopy = true * or the modified object if isCopy = false */ GEOM_Object MakeThickening (in GEOM_Object theObject, - in double theThickness, - in boolean isCopy); + in ListOfLong theFacesIDs, + in double theThickness, + in boolean isCopy, + in boolean isInside); /*! @@ -2255,13 +2361,21 @@ module GEOM in long theShapeType); /*! - * \brief Get all sub-shapes, shared by all shapes in the list \a theShapes. + * \brief Get sub-shapes, shared by input shapes. * \param theShapes Shapes to find common sub-shapes of. * \param theShapeType Type of sub-shapes to be retrieved. - * \return List of objects, that are sub-shapes of all given shapes. + * \param theMultiShare Specifies what type of shares should be checked: + * - \c TRUE: search sub-shapes from 1st input shape shared with all other input shapes; + * - \c FALSE: causes to search sub-shapes shared between couples of input shapes. + * \note If \a theShapes contains single compound, the shares between all possible couples of + * its top-level shapes are returned; otherwise, only shares between 1st input shape + * and all rest input shapes are returned. + * + * \return List of all found sub-shapes. */ ListOfGO GetSharedShapesMulti (in ListOfGO theShapes, - in long theShapeType); + in long theShapeType, + in boolean theMultiShare); /*! * \brief Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively @@ -2542,7 +2656,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); @@ -2565,7 +2680,8 @@ 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); @@ -2637,6 +2753,72 @@ module GEOM */ GEOM_Object MakeSurfaceFromFace(in GEOM_Object theFace); + /*! + * \brief Explode a shape into edges sorted in a row from a starting point. + * \param theShape - the shape to be exploded on edges. + * \param theStartPoint - the starting point. + * \return Ordered list of edges sorted in a row from a starting point. + */ + 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: @@ -2882,10 +3064,14 @@ module GEOM * - The glue between two quadrangle faces should be applied. * \note Single block is also accepted as a valid compound of blocks. * \param theCompound The compound to check. + * \param theToleranceC1 the tolerance to check if two neighbor edges are + * collinear in the common vertex with this tolerance. Negative + * value means that C1 criterion is not used (old implementation). * \param theErrors Structure, containing discovered errors and incriminated sub-shapes. * \return TRUE, if the given shape is a compound of blocks. */ boolean CheckCompoundOfBlocks (in GEOM_Object theCompound, + in double theToleranceC1, out BCErrors theErrors); /*! @@ -2902,12 +3088,17 @@ module GEOM * \brief Retrieve all non blocks solids and faces from a shape. * * \param theShape The shape to explore. + * \param theToleranceC1 the tolerance to check if two neighbor edges are + * collinear in the common vertex with this tolerance. Negative + * value means that C1 criterion is not used (old implementation). * \param theNonQuads Output parameter. Group of all non quadrangular faces. * * \return Group of all non block solids (= not 6 faces, or with 6 * faces, but with the presence of non-quadrangular faces). */ - GEOM_Object GetNonBlocks (in GEOM_Object theShape, out GEOM_Object theNonQuads); + GEOM_Object GetNonBlocks (in GEOM_Object theShape, + in double theToleranceC1, + out GEOM_Object theNonQuads); /*! * \brief Remove all seam and degenerated edges from \a theShape. @@ -3170,6 +3361,17 @@ module GEOM * \param theShape Shape to be intersected. * \param thePlane Tool shape, to intersect theShape. * \return New GEOM_Object, containing the result shape. + * + * \note This operation is a shortcut to the more general \ref MakePartition + * operation, where \a theShape specifies single "object" (shape being partitioned) + * and \a thePlane specifies single "tool" (intersector shape). Other parameters of + * \ref MakePartition operation have default values: + * - \a theLimit: GEOM::SHAPE (shape limit corresponds to the type of \a theShape) + * - \a theKeepNonlimitShapes: 0 + * - \a theKeepInside, \a theRemoveInside, \a theRemoveWebs, + * \a theMaterials (obsolete parameters): empty + * + * \sa MakePartition, MakePartitionNonSelfIntersectedShape */ GEOM_Object MakeHalfPartition (in GEOM_Object theShape, in GEOM_Object thePlane); @@ -4086,6 +4288,7 @@ module GEOM // VERTEX VERTEX, // ADVANCED shapes + LCS, /*! all advanced shapes (temporary implementation) */ ADVANCED }; @@ -4134,12 +4337,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); @@ -4330,6 +4535,49 @@ 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 tesselation. + * \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 agruments. + * \param theShape the agrument of an operation to be checked. + * \return TRUE if the agrument 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 + * \param theShape2 Second source object + * \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: + * - 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 + * \return TRUE, if the are intersections (gaps) between source shapes + */ + boolean FastIntersect (in GEOM_Object theShape1, + in GEOM_Object theShape2, + in double theTolerance, + in float theDeflection, + out ListOfLong theIntersections1, + out ListOfLong theIntersections2); + /*! * \brief Check if the given shape can be an argument for MakeSolid operation * \param theShape Shape to be described.