X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=idl%2FGEOM_Gen.idl;h=26412f7e5f13a276593c72c2a29fb39ba8fe3256;hb=528f4842f4018924640fb8a56dbe625f439abfec;hp=bbd4cf7c11932dbfd5f36fefd28709f5ebc74ee1;hpb=d609d087b1c433e50dc92ba44e3542068b63001d;p=modules%2Fgeom.git diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index bbd4cf7c1..26412f7e5 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2014 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 @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -39,7 +39,7 @@ module GEOM */ enum shape_type { - /*! */ + /*! A collection of arbitrary shapes */ COMPOUND, /*! A collection of solids */ COMPSOLID, @@ -47,22 +47,25 @@ module GEOM SOLID, /*! A collection of faces connected by some edges of their wire boundaries */ SHELL, - /*! Part of a plane (in 2D geometry) or a surface (in 3D geometry) bounded by a close wire */ + /*! Part of a plane (in 2D geometry) or a surface (in 3D geometry) bounded by a closed wire */ FACE, - /*! A sequence of edges connected by their vertices */ + /*! A sequence of edges connected by their vertices */ WIRE, /*! Edge, a shape corresponding to a curve, and bound by a vertex at each extremity */ EDGE, /*! A zero-dimensional shape corresponding to a point in geometry */ VERTEX, - /*! */ - SHAPE }; + /*! Arbitrary shape in a Compound (used for processing of Compounds in some operations) */ + SHAPE, + /*! Flat (top-level) contents of a Compound (used for processing of Compounds in some operations) */ + FLAT + }; /*! * \brief Marker type */ - enum marker_type { MT_NONE, MT_POINT, MT_PLUS, MT_STAR, MT_O, MT_X, MT_O_POINT, MT_O_PLUS, - MT_O_STAR, MT_O_X, MT_BALL, MT_RING1, MT_RING2, MT_RING3, MT_USER }; + enum marker_type { MT_NONE, MT_POINT, MT_PLUS, MT_STAR, MT_X, MT_O, MT_O_POINT, MT_O_PLUS, + MT_O_STAR, MT_O_X, MT_RING1, MT_RING2, MT_RING3, MT_BALL, MT_USER }; /*! * /brief Marker size @@ -112,7 +115,8 @@ module GEOM * \brief Kind of method to find inside one main shape some sub-shapes, * corresponding to other given shape (its argument) * - * Is used in functions GEOM_Gen.RestoreSubShapesO(), GEOM_Gen.RestoreSubShapesSO() + * Is used in functions GEOM_Gen.RestoreSubShapesO(), GEOM_Gen.RestoreSubShapesSO(), + * TransferNames() */ enum find_shape_method { @@ -136,7 +140,10 @@ module GEOM /*! To be used only for multi-transformation result. * Only this method can be used after multi-transformation. */ - FSM_MultiTransformed + FSM_MultiTransformed, + + /*! Use old GetInPlace functionality. */ + FSM_GetInPlace_Old }; /*! @@ -164,7 +171,8 @@ module GEOM /*! * \brief Kind of the curves. * - * Used in the functions GEOM_ICurvesOperations.MakeCurveParametric(), GEOM_ICurvesOperations.MakeCurveParametricNew() + * Used in the functions GEOM_ICurvesOperations.MakeCurveParametric(), GEOM_ICurvesOperations.MakeCurveParametricNew(), + * GEOM_ICurvesOperations.MakePolyline2D, GEOM_ICurvesOperations.MakePolyline2DOnPlane. */ enum curve_type { /*! Polyline curve */ @@ -178,16 +186,27 @@ module GEOM }; /*! - * \brief Pattern for block division of the disk - * - * Used in the functions GEOM_IAdvancedOperations.MakeDividedDisk(), GEOM_ICurvesOperations.MakeDividedDiskPntVecR() + * \brief Type of field data */ - enum pattern { - /*! Square */ - SQUARE, - - /*! Hexagon */ - HEXAGON + enum field_data_type { + FDT_Bool, + FDT_Int, + FDT_Double, + FDT_String + }; + + /** + * This enumeration represents the level of checking shape on + * self-interference. It defines which interferferences will be checked. + */ + enum si_check_level + { + SI_V_V, // only V/V interferences + SI_V_E, // V/V and V/E interferences + SI_E_E, // V/V, V/E and E/E interferences + SI_V_F, // V/V, V/E, E/E and V/F interferences + SI_E_F, // V/V, V/E, E/E, V/F and E/F interferences + SI_ALL // all interferences }; /*! @@ -198,7 +217,6 @@ module GEOM struct Parameter { string name; - //any value; string value; }; typedef sequence Parameters; @@ -209,23 +227,51 @@ module GEOM Parameters params; }; + /*! + * \brief Reporting on shape healing + */ + struct ModifInfo + { + string name; // what changed + long count; // how many times + }; + typedef sequence ModifStatistics; + - typedef sequence string_array; - typedef sequence short_array; - typedef sequence ListOfBool; - typedef sequence ListOfLong; - typedef sequence ListOfDouble; + typedef sequence string_array; + typedef sequence short_array; + typedef sequence ListOfBool; + typedef sequence ListOfLong; + typedef sequence ListOfDouble; + typedef sequence ListOfListOfDouble; interface GEOM_Object; + interface GEOM_BaseObject; + interface GEOM_Field; + interface GEOM_FieldStep; - typedef sequence ListOfGO; + typedef sequence ListOfGO; + typedef sequence ListOfGBO; + typedef sequence ListOfFields; + typedef sequence object_list; - //# GEOM_Object + //# GEOM_BaseObject /*! - * \brief Interface of geometric object + * \brief A common root of objects in GEOM module */ - interface GEOM_Object : SALOME::GenericObj + interface GEOM_BaseObject : SALOME::GenericObj { + /*! + * \brief Set name of the object. + * + * \param theName is a name which will be associated with this object. + */ + void SetName (in string theName); + + /*! + * \brief Get name of the object associated with this object. + */ + string GetName(); /*! * \brief Get internal (unique) entry of the object in the GEOM component's data tree. @@ -245,6 +291,72 @@ module GEOM */ long GetType(); + /*! + * \brief Get value of a modification counter of the object + */ + long GetTick(); + + /*! + * \brief Set a Study entry where this object was published. + */ + void SetStudyEntry (in string theEntry); + + /*! + * \brief Get a Study entry where this object was published. + */ + string GetStudyEntry(); + + /*! + * \brief Get a list of all GEOM_Object on which were the arguments + * when this object was constructed and modified. + * \note This method is supposed to be used by GUI only. + */ + ListOfGBO GetDependency(); + + /*! + * \brief Get a list of GEOM_Object on which the last function that created or modified the object depends. + * \note This method is supposed to be used by GUI only. + */ + ListOfGBO GetLastDependency(); + + /* + * \brief Return true if geom object representes a shape. + * + * For example, method return false for GEOM_MARKER + */ + boolean IsShape(); + + /* + * \brief Return true if passed object is identical to this object + * + * \param other object being compared with this one + */ + boolean IsSame(in GEOM_BaseObject other); + + /*! + * Set list of parameters + * \param theParameters is a string containing the notebook variables separated by ":" symbol, + * used for object creation + */ + void SetParameters (in string theParameters); + + /*! + * \brief Return list of notebook variables used for object creation separated by ":" symbol + */ + string GetParameters(); + + /*! + * \brief Return name of operation and values of parameters used for object creation + */ + CreationInformation GetCreationInformation(); + }; + + //# GEOM_Object + /*! + * \brief Interface of geometric object + */ + interface GEOM_Object : GEOM_BaseObject + { /*! * \brief Get a shape_type of the object value. */ @@ -283,16 +395,16 @@ module GEOM shape_type GetMaxShapeType(); /*! - * \brief Set name of the object. + * \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 * - * \param theName is a name which will be associated with this object. - */ - void SetName (in string theName); - - /*! - * \brief Get name of the object associated with this object. + * \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 GetName(); + string GetSubShapeName(in long subID); /*! * \brief Set color of the object. @@ -350,29 +462,6 @@ module GEOM */ long GetMarkerTexture(); - /*! - * \brief Set a Study entry where this object was published. - */ - void SetStudyEntry (in string theEntry); - - /*! - * \brief Get a Study entry where this object was published. - */ - string GetStudyEntry(); - - /*! - * \brief Get a list of all GEOM_Object on which were the arguments - * when this object was constructed and modified. - * \note This method is supposed to be used by GUI only. - */ - ListOfGO GetDependency(); - - /*! - * \brief Get a list of GEOM_Object on which the last function that created or modified the object depends. - * \note This method is supposed to be used by GUI only. - */ - ListOfGO GetLastDependency(); - /*! * \brief Get the TopoDS_Shape, for colocated case only. */ @@ -404,36 +493,166 @@ module GEOM */ GEOM_Object GetMainShape(); - /* - * \brief Return true if geom object representes a shape. - * - * For example, method return false for GEOM_MARKER + }; + + //# GEOM_Field + /*! + * \brief Interface of the field + */ + interface GEOM_Field : GEOM_BaseObject + { + /*! + * \brief Returns the shape the field lies on */ - boolean IsShape(); + GEOM_Object GetShape(); - /* - * \brief Return true if passed object is identical to this object - * - * \param other object being compared with this one + /*! + * \brief Returns type of field data */ - boolean IsSame(in GEOM_Object other); + field_data_type GetDataType(); - /*! - * Set list of parameters - * \param theParameters is a string containing the notebook variables separated by ":" symbol, - * used for object creation + /*! + * \brief Returns dimension of the shape the field lies on + * 0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape */ - void SetParameters (in string theParameters); + short GetDimension(); /*! - * \brief Return list of notebook variables used for object creation separated by ":" symbol + * \brief Returns names of components */ - string GetParameters(); + string_array GetComponents(); /*! - * \brief Return name of operation and values of parameters used for object creation + * \brief Removes a component. Component number counts from one. */ - CreationInformation GetCreationInformation(); + //void RemoveComponent(in long number); + + /*! + * \brief Adds a time step to the field + */ + GEOM_FieldStep AddStep(in long stepID, in long stamp); + + /*! + * \brief Remove a time step from the field + */ + void RemoveStep(in long stepID); + + /*! + * \brief Returns number of time steps in the field + */ + long CountSteps(); + + /*! + * \brief Returns a list of time step IDs in the field + */ + ListOfLong GetSteps(); + + /*! + * \brief Returns a time step by its ID + */ + GEOM_FieldStep GetStep(in long stepID); + + /*! + * \brief Returns a size of data array that is to be passed to + * GEOM_FieldStep.SetValues( dataArray ). This size depends on the + * number of sub-shapes of field dimension and the number of components + */ + long GetArraySize(); + }; + + // # GEOM_FieldStep: + /*! + * \brief Interface of the field time step + */ + interface GEOM_FieldStep : GEOM_BaseObject + { + /*! + * \brief Changes the time of the field step + */ + void SetStamp(in long stamp); + + /*! + * \brief Returns the time of the field step + */ + long GetStamp(); + + /*! + * \brief Returns the number of the field step + */ + long GetID(); + + /*! + * \brief Returns the field the step belongs to + */ + GEOM_Field GetField(); + }; + + // # GEOM_BoolFieldStep: + /*! + * \brief Interface of the boolean field time step + */ + interface GEOM_BoolFieldStep : GEOM_FieldStep + { + /*! + * \brief Changes values of the field step. Returns false if number of values is wrong + */ + boolean SetValues(in short_array boolValues); + + /*! + * \brief Returns values of the field step + */ + short_array GetValues(); + }; + + // # GEOM_IntFieldStep: + /*! + * \brief Interface of the integer field time step + */ + interface GEOM_IntFieldStep : GEOM_FieldStep + { + /*! + * \brief Changes values of the field step. Returns false if number of values is wrong + */ + boolean SetValues(in ListOfLong intValues); + + /*! + * \brief Returns values of the field step + */ + ListOfLong GetValues(); + }; + + // # GEOM_DoubleFieldStep: + /*! + * \brief Interface of the double field time step + */ + interface GEOM_DoubleFieldStep : GEOM_FieldStep + { + /*! + * \brief Changes values of the field step. Returns false if number of values is wrong + */ + boolean SetValues(in ListOfDouble doubleValues); + + /*! + * \brief Returns values of the field step + */ + ListOfDouble GetValues(); + }; + + // # GEOM_StringFieldStep: + /*! + * \brief Interface of the string field time step + */ + interface GEOM_StringFieldStep : GEOM_FieldStep + { + /*! + * \brief Changes values of the field step. Returns false if number of values is wrong + */ + boolean SetValues(in string_array strValues); + + /*! + * \brief Returns values of the field step + */ + string_array GetValues(); }; // # GEOM_IOperations: @@ -1084,6 +1303,23 @@ module GEOM */ GEOM_Object ProjectShapeCopy (in GEOM_Object theSource, in GEOM_Object theTarget); + /*! + * \brief Create a projection projection of the given point on a wire or + * an edge. + * + * If there are no solutions or there are 2 or more solutions It throws an + * exception. + * \param thePoint the point to be projected. + * \param theWire the wire. The edge is accepted as well. + * \param thePointOnEdge the projection point. + * \param theEdgeInWireIndex the index of an edge in a wire. + * \return the parameter of projection point on edge. + */ + double ProjectPointOnWire (in GEOM_Object thePoint, + in GEOM_Object theWire, + out GEOM_Object thePointOnEdge, + out long theEdgeInWireIndex); + /*! * \brief Scale the given object by the factor. * \param theObject The object to be scaled. @@ -1275,6 +1511,18 @@ module GEOM */ GEOM_Object MakeCylinderRH (in double theR, in double theH); + /*! + * \brief Create a portion of cylinder with given radius, height and angle at + * the origin of coordinate system. + * + * Axis of the cylinder will be collinear to the OZ axis of the coordinate system. + * \param theR Cylinder radius. + * \param theH Cylinder height. + * \param theA Cylinder angle. + * \return New GEOM_Object, containing the created cylinder. + */ + GEOM_Object MakeCylinderRHA (in double theR, in double theH, in double theA); + /*! * \brief Create a cylinder with given base point, axis, radius and height. * \param thePnt Central point of cylinder base. @@ -1287,6 +1535,20 @@ module GEOM in GEOM_Object theAxis, in double theR, in double theH); + /*! + * \brief Create a portion of cylinder with given base point, axis, radius, height and angle. + * \param thePnt Central point of cylinder base. + * \param theAxis Cylinder axis. + * \param theR Cylinder radius. + * \param theH Cylinder height. + * \param theA Cylinder angle. + * \return New GEOM_Object, containing the created cylinder. + */ + GEOM_Object MakeCylinderPntVecRHA (in GEOM_Object thePnt, + in GEOM_Object theAxis, + in double theR, + in double theH, + in double theA); /*! * \brief Create a cone with given height and radiuses at @@ -1461,18 +1723,18 @@ module GEOM in double theAngle); /*! - * \brief Create a filling from the given compound of contours. - * \param theShape Initial shape on which to perform the feature. - * \param theMinDeg a minimal degree of BSpline surface to create - * \param theMaxDeg a maximal degree of BSpline surface to create - * \param theTol2D a 2d tolerance to be reached - * \param theTol3D a 3d tolerance to be reached - * \param theNbIter a number of iteration of approximation algorithm + * \brief Create a face from a given set of contours. + * \param theContours either a list or a compound of edges/wires. + * \param theMinDeg a minimal degree of BSpline surface to create. + * \param theMaxDeg a maximal degree of BSpline surface to create. + * \param theTol2D a 2d tolerance to be reached. + * \param theTol3D a 3d tolerance to be reached. + * \param theNbIter a number of iteration of approximation algorithm. * \param theMethod Kind of method to perform filling operation. - * \param theApprox Boolean indicating if result should be approximated - * \return New GEOM_Object, containing the created filling surface. + * \param theApprox Boolean indicating if result should be approximated. + * \return New GEOM_Object (face), containing the created filling surface. */ - GEOM_Object MakeFilling (in GEOM_Object theShape, + GEOM_Object MakeFilling (in ListOfGO theContours, in long theMinDeg, in long theMaxDeg, in double theTol2D, in double theTol3D, in long theNbIter, @@ -1691,6 +1953,25 @@ module GEOM */ GEOM_Object MakeFaceWires (in ListOfGO theWires, in boolean isPlanarWanted); + /** + * \brief Create a face based on surface of theFace limited by theWire. + * \param theFace the face whose surface is used to create a new face. + * \param theWire closed Wire build the face. + * \return New GEOM_Object, containing the created face. + */ + GEOM_Object MakeFaceFromSurface(in GEOM_Object theFace, + in GEOM_Object theWire); + + /*! + * \brief Create a face from a set of edges with the given constraints. + * \param theConstraints List of edges and constraint faces (as a sequence of a Edge + Face couples): + * - edges should form a closed wire; + * - for each edge, constraint face is optional: if a constraint face is missing + * for some edge, this means that there no constraint associated with this edge. + * \return New GEOM_Object, containing the created face. + */ + GEOM_Object MakeFaceWithConstraints(in ListOfGO theConstraints); + /*! * \brief Create a shell from the set of faces and shells. * \param theFacesAndShells List of faces and/or shells. @@ -1720,64 +2001,73 @@ module GEOM GEOM_Object MakeCompound (in ListOfGO theShapes); /*! - * \brief Replace coincident faces in theShape by one face. - * \param theShape Initial shape. + * \brief Make a solid (or solids) from connected set of faces and/or shells. + * \param theFacesOrShells List of faces and/or shells. + * \param isIntersect If TRUE, forces performing intersections between arguments. + * + * \return New GEOM_Object, containing the created solid (or compound of solids). + */ + GEOM_Object MakeSolidFromConnectedFaces (in ListOfGO theFacesOrShells, in boolean isIntersect); + + /*! + * \brief Replace coincident faces in \a theShapes by one face. + * \param theShapes Initial shapes. * \param theTolerance Maximum distance between faces, which can be considered as coincident. * \param doKeepNonSolids If FALSE, only solids will present in the result, otherwise all initial shapes. - * \return New GEOM_Object, containing a copy of theShape without coincident faces. + * \return New GEOM_Object containing copies of theShapes without coincident faces. */ - GEOM_Object MakeGlueFaces (in GEOM_Object theShape, in double theTolerance, in boolean doKeepNonSolids); + GEOM_Object MakeGlueFaces (in ListOfGO theShapes, in double theTolerance, in boolean doKeepNonSolids); /*! - * Find coincident faces in theShape for possible gluing. - * \param theShape Initial shape. + * Find coincident faces in theShapes for possible gluing. + * \param theShapes Initial shapes. * \param theTolerance Maximum distance between faces, which can be considered as coincident. * \return ListOfGO */ - ListOfGO GetGlueFaces (in GEOM_Object theShape, in double theTolerance); + ListOfGO GetGlueFaces (in ListOfGO theShapes, in double theTolerance); /*! - * \brief Replace coincident faces in theShape by one face - * in compliance with given list of faces - * \param theShape Initial shape. + * \brief Replace coincident faces in \a theShapes by one face + * in compliance with given list of faces + * \param theShapes Initial shapes. * \param theTolerance Maximum distance between faces, which can be considered as coincident. * \param theFaces List of faces for gluing. * \param doKeepNonSolids If FALSE, only solids will present in the result, otherwise all initial shapes. * \param doGlueAllEdges If TRUE, all coincident edges of theShape * will be glued, otherwise only the edges, * belonging to theFaces. - * \return New GEOM_Object, containing a copy of theShape without some faces. + * \return New GEOM_Object containing copies of theShapes without coincident faces. */ - GEOM_Object MakeGlueFacesByList (in GEOM_Object theShape, in double theTolerance, - in ListOfGO theFaces, in boolean doKeepNonSolids, + GEOM_Object MakeGlueFacesByList (in ListOfGO theShapes, in double theTolerance, + in ListOfGO theFaces, in boolean doKeepNonSolids, in boolean doGlueAllEdges); /*! - * \brief Replace coincident edges in theShape by one edge. - * \param theShape Initial shape. + * \brief Replace coincident edges in \a theShapes by one edge. + * \param theShapes Initial shapes. * \param theTolerance Maximum distance between edges, which can be considered as coincident. - * \return New GEOM_Object, containing a copy of theShape without coincident edges. + * \return New GEOM_Object containing copies of theShapes without coincident edges. */ - GEOM_Object MakeGlueEdges (in GEOM_Object theShape, in double theTolerance); + GEOM_Object MakeGlueEdges (in ListOfGO theShapes, in double theTolerance); /*! - * Find coincident edges in theShape for possible gluing. - * \param theShape Initial shape. + * Find coincident edges in \a theShapes for possible gluing. + * \param theShapes Initial shapes. * \param theTolerance Maximum distance between edges, which can be considered as coincident. * \return ListOfGO */ - ListOfGO GetGlueEdges (in GEOM_Object theShape, in double theTolerance); + ListOfGO GetGlueEdges (in ListOfGO theShapes, in double theTolerance); /*! - * \brief Replace coincident edges in theShape by one edge - * in compliance with given list of edges - * \param theShape Initial shape. + * \brief Replace coincident edges in \a theShapes by one edge + * in compliance with given list of edges + * \param theShapes Initial shapes. * \param theTolerance Maximum distance between edges, which can be considered as coincident. * \param theEdges List of edges for gluing. - * \return New GEOM_Object, containing a copy of theShape without some edges. + * \return New GEOM_Object containing copies of theShapes without some edges. */ - GEOM_Object MakeGlueEdgesByList (in GEOM_Object theShape, - in double theTolerance, + GEOM_Object MakeGlueEdgesByList (in ListOfGO theShapes, + in double theTolerance, in ListOfGO theEdges); /*! @@ -1909,6 +2199,23 @@ module GEOM */ string GetShapeTypeString (in GEOM_Object theShape); + /*! + * \brief Check if the object is a sub-object of another GEOM object. + * + * \param theSubObject Checked sub-object (or its parent object, in case if + * \a theSubObjectIndex is non-zero). + * \param theSubObjectIndex When non-zero, specifies a sub-shape index that + * identifies a sub-object within its parent specified via \a theSubObject. + * \param theObject An object that is checked for ownership (or its parent object, + * in case if \a theObjectIndex is non-zero). + * \param theObjectIndex When non-zero, specifies a sub-shape index that + * identifies an object within its parent specified via \a theObject. + * \return TRUE, if the given object contains sub-object. + */ + boolean IsSubShapeBelongsTo( in GEOM_Object theSubObject, + in long theSubObjectIndex, + in GEOM_Object theObject, + in long theObjectIndex); /*! * \brief Count number of faces in the given shape. * \param theShape Shape to count faces in. @@ -1960,13 +2267,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 @@ -2283,7 +2598,7 @@ module GEOM * \return found sub-shape. */ GEOM_Object GetSame (in GEOM_Object theShapeWhere, - in GEOM_Object theShapeWhat); + in GEOM_Object theShapeWhat); /*! * \brief Get sub-shape Ids of theShapeWhere, which are @@ -2295,6 +2610,53 @@ module GEOM ListOfLong GetSameIDs (in GEOM_Object theShapeWhere, in GEOM_Object theShapeWhat); + /*! + * \brief Resize the input edge with the new Min and Max parameters. + * The input edge parameters range is [0, 1]. If theMin parameter is + * negative, the input edge is extended, otherwise it is shrinked by + * theMin parameter. If theMax is greater than 1, the edge is extended, + * otherwise it is shrinked by theMax parameter. + * \param theEdge the input edge to be resized. + * \param theMin the minimal parameter value. + * \param theMax the maximal parameter value. + * \return a newly created edge. + */ + GEOM_Object ExtendEdge(in GEOM_Object theEdge, + in double theMin, + in double theMax); + + /*! + * \brief Resize the input face with the new UMin, UMax, VMin and VMax + * parameters. The input face U and V parameters range is [0, 1]. If + * theUMin parameter is negative, the input face is extended, otherwise + * it is shrinked along U direction by theUMin parameter. If theUMax is + * greater than 1, the face is extended, otherwise it is shrinked along + * U direction by theUMax parameter. So as for theVMin, theVMax and + * V direction of the input face. + * \param theFace the input face to be resized. + * \param theUMin the minimal U parameter value. + * \param theUMax the maximal U parameter value. + * \param theVMin the minimal V parameter value. + * \param theVMax the maximal V parameter value. + * \return a newly created face. + */ + GEOM_Object ExtendFace(in GEOM_Object theFace, + in double theUMin, + in double theUMax, + in double theVMin, + in double theVMax); + + /*! + * \brief Make a surface from a face. This function takes some face as + * input parameter and creates new GEOM_Object, i.e. topological shape + * by extracting underlying surface of the source face and limiting it + * by the Umin, Umax, Vmin, Vmax parameters of the source face (in the + * parametrical space). + * \param theFace the input face. + * \return a newly created face. + */ + GEOM_Object MakeSurfaceFromFace(in GEOM_Object theFace); + }; // # GEOM_IBlocksOperations: @@ -2703,34 +3065,63 @@ module GEOM * \param theShape2 Second argument for boolean operation. * \param theOperation Indicates the operation to be done: * 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section. + * \param IsCheckSelfInte If TRUE, perform check self intersection + * of arguments before an operation. * \return New GEOM_Object, containing the result shape. */ GEOM_Object MakeBoolean (in GEOM_Object theShape1, in GEOM_Object theShape2, - in long theOperation); + in long theOperation, + in boolean IsCheckSelfInte); + /*! + * \brief Perform fusion boolean operation on two given shapes. + * \param theShape1 First argument for fuse operation. + * \param theShape2 Second argument for fuse operation. + * \param IsCheckSelfInte If TRUE, perform check self intersection + * of arguments before an operation. + * \param IsRmExtraEdges If TRUE, perform removal of extra edges + * during an operation. + * \return New GEOM_Object, containing the result shape. + */ + GEOM_Object MakeFuse (in GEOM_Object theShape1, + in GEOM_Object theShape2, + in boolean IsCheckSelfInte, + in boolean IsRmExtraEdges); /*! * \brief Perform fusion boolean operation on list of objects. * \param theShapes Shapes to be fused. + * \param IsCheckSelfInte If TRUE, perform check self intersection + * of arguments before an operation. + * \param IsRmExtraEdges If TRUE, perform removal of extra edges + * during an operation. * \return New GEOM_Object, containing the result shape. */ - GEOM_Object MakeFuseList (in ListOfGO theShapes); + GEOM_Object MakeFuseList (in ListOfGO theShapes, + in boolean IsCheckSelfInte, + in boolean IsRmExtraEdges); /*! * \brief Perform common boolean operation on list of objects. * \param theShapes Shapes for common operation. + * \param IsCheckSelfInte If TRUE, perform check self intersection + * of arguments before an operation. * \return New GEOM_Object, containing the result shape. */ - GEOM_Object MakeCommonList (in ListOfGO theShapes); + GEOM_Object MakeCommonList (in ListOfGO theShapes, + in boolean IsCheckSelfInte); /*! * \brief Perform cutting of list of objects from theMainShape. * \param theMainShape the object for cut operation. * \param theShapes Shapes to be cut from theMainShape (tools). + * \param IsCheckSelfInte If TRUE, perform check self intersection + * of arguments before an operation. * \return New GEOM_Object, containing the result shape. */ GEOM_Object MakeCutList (in GEOM_Object theMainShape, - in ListOfGO theShapes); + in ListOfGO theShapes, + in boolean IsCheckSelfInte); /*! * \brief Perform partition operation. @@ -2774,7 +3165,10 @@ module GEOM * a compound containing nonintersected shapes. Performance will be better * since intersection between shapes from compound is not performed. * - * Description of all parameters as in previous method MakePartition() + * Description of all parameters as in previous method MakePartition(). + * One additional parameter is provided: + * \param IsCheckSelfInte If TRUE, perform check self intersection + * of arguments before an operation. * * \note Passed compounds (via ListShapes or via ListTools) * have to consist of nonintersecting shapes. @@ -2788,7 +3182,8 @@ module GEOM in short theLimit, in boolean theRemoveWebs, in ListOfLong theMaterials, - in short theKeepNonlimitShapes); + in short theKeepNonlimitShapes, + in boolean IsCheckSelfInte); /*! * \brief Perform partition of the Shape with the Plane @@ -2979,6 +3374,20 @@ module GEOM in long theParamNbStep, in curve_type theCurveType); + /*! + * \brief Creates an isoline curve on a face. + * \param theFace the face for which an isoline is created. + * \param IsUIsoline True for U-isoline creation; False for V-isoline + * creation. + * \param theParameter the U parameter for U-isoline or V parameter + * for V-isoline. + * \return New GEOM_Object, containing the created isoline edge or a + * compound of edges. + */ + GEOM_Object MakeIsoline(in GEOM_Object theFace, + in boolean IsUIsoline, + in double theParameter); + /*! * \brief Create a sketcher (wire or face), following the textual description, * passed through \a theCommand argument. @@ -3066,6 +3475,72 @@ module GEOM * \return New GEOM_Object, containing the created wire. */ GEOM_Object Make3DSketcher (in ListOfDouble theCoordinates); + + /*! + * \brief Create a 2D polyline (wire or a compound of wires). + * + * The polyline can have several sections. Each section represents a set + * of points in the form of list of coordinates of the following order: + * x1, y1, x2, y2, ..., xN, yN + * Each section has its own name, type of curve (can be either + * GEOM::Polyline or GEOM::Interpolation) and Closed flag. + * For each section a wire is created. It represents either a polyline or + * interpolation BSpline either closed or not depending on the Closed flag. + * The result represents a wire if there is only one section is defined. + * Otherwise a compound of wires is returned. + * + * \param theCoordsList the list of coordinates list. theCoordsList[0] + * is the coordinates list of the first section. theCoordsList[1] + * is for the second section etc. + * \param theNamesList the list of names. The order corresponds to + * theCoordsList. + * \param theTypesList the list of curve types. The order corresponds to + * theCoordsList. + * \param theClosedList the list of Closed flags. The order corresponds to + * theCoordsList. + * \param theWorkingPlane 9 double values, defining origin, + * OZ and OX directions of the working plane. + * \return New GEOM_Object, containing the created wire or a compound + * of wires. + */ + GEOM_Object MakePolyline2D (in ListOfListOfDouble theCoordsList, + in string_array theNamesList, + in short_array theTypesList, + in ListOfBool theClosedList, + in ListOfDouble theWorkingPlane); + + /*! + * \brief Create a 2D polyline (wire or a compound of wires). + * + * The polyline can have several sections. Each section represents a set + * of points in the form of list of coordinates of the following order: + * x1, y1, x2, y2, ..., xN, yN + * Each section has its own name, type of curve (can be either + * GEOM::Polyline or GEOM::Interpolation) and Closed flag. + * For each section a wire is created. It represents either a polyline or + * interpolation BSpline either closed or not depending on the Closed flag. + * The result represents a wire if there is only one section is defined. + * Otherwise a compound of wires is returned. + * + * \param theCoordsList the list of coordinates list. theCoordsList[0] + * is the coordinates list of the first section. theCoordsList[1] + * is for the second section etc. + * \param theNamesList the list of names. The order corresponds to + * theCoordsList. + * \param theTypesList the list of curve types. The order corresponds to + * theCoordsList. + * \param theClosedList the list of Closed flags. The order corresponds to + * theCoordsList. + * \param theWorkingPlane planar Face or LCS(Marker) of the working plane. + * \return New GEOM_Object, containing the created wire or a compound + * of wires. + */ + GEOM_Object MakePolyline2DOnPlane (in ListOfListOfDouble theCoordsList, + in string_array theNamesList, + in short_array theTypesList, + in ListOfBool theClosedList, + in GEOM_Object theWorkingPlane); + }; // # GEOM_ILocalOperations: @@ -3342,30 +3817,30 @@ module GEOM /*! * Sewing of the given object. - * \param theObject Shape to be processed. + * \param theObjects Shapes to be processed. * \param theTolerance Required tolerance value. * \return New GEOM_Object, containing processed shape. */ - GEOM_Object Sew (in GEOM_Object theObject, in double theTolerance); + GEOM_Object Sew (in ListOfGO theObjects, in double theTolerance); /*! * Sewing of the given object. Allows non-manifold sewing. - * \param theObject Shape to be processed. + * \param theObjects Shapes to be processed. * \param theTolerance Required tolerance value. * \return New GEOM_Object, containing processed shape. */ - GEOM_Object SewAllowNonManifold(in GEOM_Object theObject, in double theTolerance); + GEOM_Object SewAllowNonManifold(in ListOfGO theObjects, in double theTolerance); /*! - * Rebuild the topology of theCompound of solids by removing - * of the faces that are shared by several solids. - * \param theCompound Shape to be processed. + * Rebuild the topology of theSolids by removing + * the faces that are shared by several solids. + * \param theSolids A list of shapes containing solids to be processed. * \return New GEOM_Object, containing processed shape. */ - GEOM_Object RemoveInternalFaces (in GEOM_Object theCompound); + GEOM_Object RemoveInternalFaces (in ListOfGO theSolids); /*! - * \brief Addition of a point to a given edge object. + * \brief Addition of a point to a given edge of \a theObject. * \param theObject Shape to be processed. * \param theEdgeIndex Index of edge to be divided within theObject's shape, * if -1, then theObject itself is the edge. @@ -3373,11 +3848,24 @@ module GEOM * depending on \a isByParameter. * \param isByParameter If TRUE : \a theValue is treated as a curve parameter [0..1], * if FALSE : \a theValue is treated as a length parameter [0..1] - * \return New GEOM_Object, containing processed shape. + * \return New GEOM_Object, containing the processed shape. */ GEOM_Object DivideEdge (in GEOM_Object theObject, in short theEdgeIndex, in double theValue, in boolean isByParameter); + /*! + * \brief Addition of points to a given edge of \a theObject by projecting + * other points to the given edge. + * \param theObject Shape to be processed. + * \param theEdgeIndex Index of edge to be divided within theObject's shape, + * if -1, then theObject itself is the edge. + * \param thePoints Points to project to theEdgeIndex-th edge. + * \return New GEOM_Object, containing the processed shape. + */ + GEOM_Object DivideEdgeByPoint (in GEOM_Object theObject, + in short theEdgeIndex, + in ListOfGO thePoints); + /*! * \brief Suppress the vertices in the wire in case if adjacent edges are C1 continuous. * \param theWire Wire to minimize the number of C1 continuous edges in. @@ -3390,13 +3878,13 @@ module GEOM /*! * \brief Get a list of wires (wrapped in GEOM_Object-s), - * that constitute a free boundary of the given shape. - * \param theObject Shape to get free boundary of. + * that constitute a free boundary of the given shapes. + * \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. */ - boolean GetFreeBoundary (in GEOM_Object theObject, + boolean GetFreeBoundary (in ListOfGO theObjects, out ListOfGO theClosedWires, out ListOfGO theOpenWires); @@ -3416,6 +3904,12 @@ module GEOM */ GEOM_Object LimitTolerance (in GEOM_Object theObject, in double theTolerance); + + /*! + * \brief Return information on what has been done by the last called healing method. + * \return ModifStatistics, information container. + */ + ModifStatistics GetStatistics(); }; // # GEOM_IInsertOperations: @@ -3431,56 +3925,43 @@ module GEOM GEOM_Object MakeCopy (in GEOM_Object theOriginal); /*! + * \brief Deprecated method. Use Export\ (from the + * corresponding plugin) instead; here \ is a name of format. + * * \brief Export the given shape into a file with given name. * \param theObject Shape to be stored in the file. * \param theFileName Name of the file to store the given shape in. * \param theFormatName Specify format for the shape storage. - * Available formats can be obtained with ImportTranslators() method. */ void Export (in GEOM_Object theObject, in string theFileName, in string theFormatName); /*! - * \brief Import a shape from the BRep or IGES or STEP file + * \brief Deprecated method. Use Import\ (from the + * corresponding plugin) instead; here \ is a name of format. + * + * \brief Import a shape from the STL, BREP, IGES or STEP file * (depends on given format) with given name. * \param theFileName The file, containing the shape. * \param theFormatName Specify format for the file reading. - * Available formats can be obtained with ImportTranslators() method. * If format 'IGES_SCALE' is used instead of 'IGES' or * format 'STEP_SCALE' is used instead of 'STEP', * file length unit will be ignored (set to 'meter') and result model will be scaled. - * \return New GEOM_Object, containing the imported shape. + * \return List of GEOM_Object, containing the created shape and groups of materials. */ - GEOM_Object ImportFile (in string theFileName, in string theFormatName); + ListOfGBO ImportFile (in string theFileName, in string theFormatName); /*! + * \brief Deprecated method. Use ReadValue (from the corresponding plugin) instead. + * * \brief Read a value of parameter from a file, containing a shape. * \param theFileName The file, containing the shape. * \param theFormatName Specify format for the file reading. - * Available formats can be obtained with ImportTranslators() method. * \param theParameterName Specify the parameter. For example, pass "LEN_UNITS" * to obtain length units, in which the file is written. * \return Value of requested parameter in form of text string. */ string ReadValue (in string theFileName, in string theFormatName, in string theParameterName); - /*! - * \brief Get the supported import formats and corresponding patterns for File dialog. - * \param theFormats Output. List of formats, available for import. - * \param thePatterns Output. List of file patterns, corresponding to available formats. - * \return Returns available formats and patterns through the arguments. - */ - void ImportTranslators (out string_array theFormats, - out string_array thePatterns); - - /*! - * \brief Get the supported export formats and corresponding patterns for File dialog. - * \param theFormats Output. List of formats, available for export. - * \param thePatterns Output. List of file patterns, corresponding to available formats. - * \return Returns available formats and patterns through the arguments. - */ - void ExportTranslators (out string_array theFormats, - out string_array thePatterns); - /*! * \brief Read a shape from the binary stream, containing its bounding representation (BRep). * \note GEOM_Object::GetShapeStream() method can be used to obtain the shape's BRep stream. @@ -3519,6 +4000,41 @@ module GEOM * \return list of all texture IDs avaiable for the current study */ ListOfLong GetAllTextures(); + + /*! + * \brief Non-topological information transfer datum. + */ + struct TransferDatum + { + string myName; + long myNumber; + long myMaxNumber; + }; + + /*! + * \brief Sequence of non-topological information tranfer data. + */ + typedef sequence ListOfTransferDatum; + + /*! + * \brief Transfer non-topological data from one object to another + * \param theObjectFrom the source object of non-topological data + * \param theObjectTo the destination object of non-topological data + * \param theFindMethod method to search sub-shapes of theObjectFrom + * in shape theObjectTo. Possible values are: GEOM::FSM_GetInPlace, + * GEOM::FSM_GetInPlaceByHistory and GEOM::FSM_GetInPlace_Old. + * Other values of GEOM::find_shape_method are not supported. + * \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. + * \return true in case of success; otherwise false. + */ + boolean TransferData(in GEOM_Object theObjectFrom, + in GEOM_Object theObjectTo, + in find_shape_method theFindMethod, + out ListOfTransferDatum theResult); + }; // # GEOM_IKindOfShape: @@ -3724,33 +4240,136 @@ module GEOM out double EdgeMin, out double EdgeMax, out double VertMin, out double VertMax); + /*! + * \brief Enumeration of Shape defects coming from CheckShape algorithms. + */ + enum ShapeErrorType + { + /* for vertices */ + InvalidPointOnCurve, + InvalidPointOnCurveOnSurface, + InvalidPointOnSurface, + + /* for edges */ + No3DCurve, + Multiple3DCurve, + Invalid3DCurve, + NoCurveOnSurface, + InvalidCurveOnSurface, + InvalidCurveOnClosedSurface, + InvalidSameRangeFlag, + InvalidSameParameterFlag, + InvalidDegeneratedFlag, + + FreeEdge, + InvalidMultiConnexity, + InvalidRange, + + /* for wires */ + EmptyWire, + RedundantEdge, + SelfIntersectingWire, /* on a face */ + + /* for faces */ + NoSurface, + InvalidWire, + RedundantWire, + IntersectingWires, + InvalidImbricationOfWires, + + /* for shells */ + EmptyShell, + RedundantFace, + + /* for shapes */ + UnorientableShape, + NotClosed, + NotConnected, + + SubshapeNotInShape, + + BadOrientation, + BadOrientationOfSubshape, + + InvalidToleranceValue, + + /* for exception */ + CheckFail + }; + + /*! + * \brief Description of a shape defect: type and incriminated sub-shapes. + */ + struct ShapeError + { + ShapeErrorType error; + ListOfLong incriminated; + }; + + /*! + * \brief Sequence of all shape defects. + */ + typedef sequence ShapeErrors; + /*! * \brief Check a topology of the given shape. * \param theShape Shape to check validity of. - * \param theDescription Output. Description of problems in the shape, if they are. + * \param theErrors Structure, containing discovered errors and incriminated sub-shapes. * \return TRUE, if the shape "seems to be valid" from the topological point of view. */ - boolean CheckShape (in GEOM_Object theShape, - out string theDescription); + boolean CheckShape (in GEOM_Object theShape, + out ShapeErrors theErrors); /*! * \brief Check a topology and a geometry of the given shape. * \param theShape Shape to check validity of. - * \param theDescription Output. Description of problems in the shape, if they are. + * \param theErrors Structure, containing discovered errors and incriminated sub-shapes. * \return TRUE, if the shape "seems to be valid". */ - boolean CheckShapeWithGeometry (in GEOM_Object theShape, - out string theDescription); + boolean CheckShapeWithGeometry (in GEOM_Object theShape, + out ShapeErrors theErrors); + + /*! + * \brief Convert sequence of shape errors, returned by + * CheckShape() or CheckShapeWithGeometry(), into string. + * \param theShape the invalid shape. + * \param theErrors The sequence of \a theShape errors. + * \return String, describing all the errors in form, suitable for printing. + */ + string PrintShapeErrors (in GEOM_Object theShape, + in ShapeErrors theErrors); /*! * \brief Check a topology of the given shape on self-intersections presence. * \param theShape Shape to check validity of. + * \param theCheckLevel the level of self-interference check. * \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 CheckSelfIntersections (in GEOM_Object theShape, + in long theCheckLevel, out ListOfLong theIntersections); + /*! + * \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. @@ -4006,439 +4625,39 @@ module GEOM ListOfLong GetObjects (in GEOM_Object theGroup); }; - // # GEOM_IAdvancedOperations: + // # GEOM_IFieldOperations: /*! - * \brief Interface for advanced modeling functions. + * \brief Interface for field operation. */ - interface GEOM_IAdvancedOperations : GEOM_IOperations + interface GEOM_IFieldOperations : GEOM_IOperations { - // T-Shape WITHOUT Thickness reduction - /*! - * \brief Create a T-shape object with specified caracteristics for the main and - * the incident pipes (radius, width, half-length). - * - * Center of the shape is (0,0,0). The main plane of the T-shape is XOY. - * \param theR1 Internal radius of main pipe - * \param theW1 Width of main pipe - * \param theL1 Half-length of main pipe - * \param theR2 Internal radius of incident pipe (R2 < R1) - * \param theW2 Width of incident pipe (R2+W2 < R1+W1) - * \param theL2 Half-length of incident pipe - * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) - * \return List of GEOM_Object, containing the created shape and propagation groups. - */ - ListOfGO MakePipeTShape (in double theR1, in double theW1, in double theL1, - in double theR2, in double theW2, in double theL2, - in boolean theHexMesh); - /*! - * \brief Create a T-shape object with specified caracteristics for the main and - * the incident pipes (radius, width, half-length). - * - * The extremities of the main pipe are located on junctions points P1 and P2. - * The extremity of the incident pipe is located on junction point P3. - * \param theR1 Internal radius of main pipe - * \param theW1 Width of main pipe - * \param theL1 Half-length of main pipe - * \param theR2 Internal radius of incident pipe (R2 < R1) - * \param theW2 Width of incident pipe (R2+W2 < R1+W1) - * \param theL2 Half-length of incident pipe - * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) - * \param theP1 1st junction point of main pipe - * \param theP2 2nd junction point of main pipe - * \param theP3 Junction point of incident pipe - * \return List of GEOM_Object, containing the created shape and propagation groups. - */ - ListOfGO MakePipeTShapeWithPosition (in double theR1, in double theW1, in double theL1, - in double theR2, in double theW2, in double theL2, - in boolean theHexMesh, - in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3); - /*! - * \brief Create a T-shape object with specified caracteristics for the main and - * the incident pipes (radius, width, half-length). A chamfer is created - * on the junction of the pipes. - * - * Center of the shape is (0,0,0). The main plane of the T-shape is XOY. - * \param theR1 Internal radius of main pipe - * \param theW1 Width of main pipe - * \param theL1 Half-length of main pipe - * \param theR2 Internal radius of incident pipe (R2 < R1) - * \param theW2 Width of incident pipe (R2+W2 < R1+W1) - * \param theL2 Half-length of incident pipe - * \param theH Height of the chamfer. - * \param theW Width of the chamfer. - * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) - * \return List of GEOM_Object, containing the created shape and propagation groups. - */ - ListOfGO MakePipeTShapeChamfer (in double theR1, in double theW1, in double theL1, - in double theR2, in double theW2, in double theL2, - in double theH, in double theW, in boolean theHexMesh); - /*! - * \brief Create a T-shape object with specified caracteristics for the main and - * the incident pipes (radius, width, half-length). - * - * A chamfer is created on the junction of the pipes. - * The extremities of the main pipe are located on junctions points P1 and P2. - * The extremity of the incident pipe is located on junction point P3. - * \param theR1 Internal radius of main pipe - * \param theW1 Width of main pipe - * \param theL1 Half-length of main pipe - * \param theR2 Internal radius of incident pipe (R2 < R1) - * \param theW2 Width of incident pipe (R2+W2 < R1+W1) - * \param theL2 Half-length of incident pipe - * \param theH Height of the chamfer. - * \param theW Width of the chamfer. - * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) - * \param theP1 1st junction point of main pipe - * \param theP2 2nd junction point of main pipe - * \param theP3 Junction point of incident pipe - * \return List of GEOM_Object, containing the created shape and propagation groups. - */ - ListOfGO MakePipeTShapeChamferWithPosition (in double theR1, in double theW1, in double theL1, - in double theR2, in double theW2, in double theL2, - in double theH, in double theW, in boolean theHexMesh, - in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3); - /*! - * \brief Create a T-shape object with specified caracteristics for the main and - * the incident pipes (radius, width, half-length). - * - * A fillet is created on the junction of the pipes. - * Center of the shape is (0,0,0). The main plane of the T-shape is XOY. - * \param theR1 Internal radius of main pipe - * \param theW1 Width of main pipe - * \param theL1 Half-length of main pipe - * \param theR2 Internal radius of incident pipe (R2 < R1) - * \param theW2 Width of incident pipe (R2+W2 < R1+W1) - * \param theL2 Half-length of incident pipe - * \param theRF Radius of curvature of fillet. - * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) - * \return List of GEOM_Object, containing the created shape and propagation groups. - */ - ListOfGO MakePipeTShapeFillet (in double theR1, in double theW1, in double theL1, - in double theR2, in double theW2, in double theL2, - in double theRF, in boolean theHexMesh); - /*! - * \brief Create a T-shape object with specified caracteristics for the main and - * the incident pipes (radius, width, half-length). - * - * A fillet is created on the junction of the pipes. - * The extremities of the main pipe are located on junctions points P1 and P2. - * The extremity of the incident pipe is located on junction point P3. - * \param theR1 Internal radius of main pipe - * \param theW1 Width of main pipe - * \param theL1 Half-length of main pipe - * \param theR2 Internal radius of incident pipe (R2 < R1) - * \param theW2 Width of incident pipe (R2+W2 < R1+W1) - * \param theL2 Half-length of incident pipe - * \param theRF Radius of curvature of fillet. - * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) - * \param theP1 1st junction point of main pipe - * \param theP2 2nd junction point of main pipe - * \param theP3 Junction point of incident pipe - * \return List of GEOM_Object, containing the created shape and propagation groups. - */ - ListOfGO MakePipeTShapeFilletWithPosition (in double theR1, in double theW1, in double theL1, - in double theR2, in double theW2, in double theL2, - in double theRF, in boolean theHexMesh, - in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3); - - // T-Shape WITH Thickness reduction - - /*! - * \brief Create a T-shape object with specified caracteristics for the main and - * the incident pipes (radius, width, half-length). - * - * Center of the shape is (0,0,0). The main plane of the T-shape is XOY. - * \param theR1 Internal radius of main pipe - * \param theW1 Width of main pipe - * \param theL1 Half-length of main pipe - * \param theR2 Internal radius of incident pipe (R2 < R1) - * \param theW2 Width of incident pipe (R2+W2 < R1+W1) - * \param theL2 Half-length of incident pipe - * - * \param theRL Internal radius of left thickness reduction - * \param theWL Width of left thickness reduction - * \param theLtransL Length of left transition part - * \param theLthinL Length of left thin part - * - * \param theRR Internal radius of right thickness reduction - * \param theWR Width of right thickness reduction - * \param theLtransR Length of right transition part - * \param theLthinR Length of right thin part - * - * \param theRI Internal radius of incident thickness reduction - * \param theWI Width of incident thickness reduction - * \param theLtransI Length of incident transition part - * \param theLthinI Length of incident thin part - * - * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) - * \return List of GEOM_Object, containing the created shape and propagation groups. - */ - ListOfGO MakePipeTShapeTR (in double theR1, in double theW1, in double theL1, - in double theR2, in double theW2, in double theL2, - in double theRL, in double theWL, in double theLtransL, in double theLthinL, - in double theRR, in double theWR, in double theLtransR, in double theLthinR, - in double theRI, in double theWI, in double theLtransI, in double theLthinI, - in boolean theHexMesh); - /*! - * \brief Create a T-shape object with specified caracteristics for the main and - * the incident pipes (radius, width, half-length). - * - * The extremities of the main pipe are located on junctions points P1 and P2. - * The extremity of the incident pipe is located on junction point P3. - * \param theR1 Internal radius of main pipe - * \param theW1 Width of main pipe - * \param theL1 Half-length of main pipe - * \param theR2 Internal radius of incident pipe (R2 < R1) - * \param theW2 Width of incident pipe (R2+W2 < R1+W1) - * \param theL2 Half-length of incident pipe - * - * \param theRL Internal radius of left thickness reduction - * \param theWL Width of left thickness reduction - * \param theLtransL Length of left transition part - * \param theLthinL Length of left thin part - * - * \param theRR Internal radius of right thickness reduction - * \param theWR Width of right thickness reduction - * \param theLtransR Length of right transition part - * \param theLthinR Length of right thin part - * - * \param theRI Internal radius of incident thickness reduction - * \param theWI Width of incident thickness reduction - * \param theLtransI Length of incident transition part - * \param theLthinI Length of incident thin part - * - * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) - * \param theP1 1st junction point of main pipe - * \param theP2 2nd junction point of main pipe - * \param theP3 Junction point of incident pipe - * \return List of GEOM_Object, containing the created shape and propagation groups. - */ - ListOfGO MakePipeTShapeTRWithPosition - (in double theR1, in double theW1, in double theL1, - in double theR2, in double theW2, in double theL2, - in double theRL, in double theWL, in double theLtransL, in double theLthinL, - in double theRR, in double theWR, in double theLtransR, in double theLthinR, - in double theRI, in double theWI, in double theLtransI, in double theLthinI, - in boolean theHexMesh, - in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3); - /*! - * \brief Create a T-shape object with specified caracteristics for the main and - * the incident pipes (radius, width, half-length). A chamfer is created - * on the junction of the pipes. - * - * Center of the shape is (0,0,0). The main plane of the T-shape is XOY. - * \param theR1 Internal radius of main pipe - * \param theW1 Width of main pipe - * \param theL1 Half-length of main pipe - * \param theR2 Internal radius of incident pipe (R2 < R1) - * \param theW2 Width of incident pipe (R2+W2 < R1+W1) - * \param theL2 Half-length of incident pipe - * - * \param theRL Internal radius of left thickness reduction - * \param theWL Width of left thickness reduction - * \param theLtransL Length of left transition part - * \param theLthinL Length of left thin part - * - * \param theRR Internal radius of right thickness reduction - * \param theWR Width of right thickness reduction - * \param theLtransR Length of right transition part - * \param theLthinR Length of right thin part - * - * \param theRI Internal radius of incident thickness reduction - * \param theWI Width of incident thickness reduction - * \param theLtransI Length of incident transition part - * \param theLthinI Length of incident thin part - * - * \param theH Height of the chamfer. - * \param theW Width of the chamfer. - * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) - * \return List of GEOM_Object, containing the created shape and propagation groups. - */ - ListOfGO MakePipeTShapeTRChamfer - (in double theR1, in double theW1, in double theL1, - in double theR2, in double theW2, in double theL2, - in double theRL, in double theWL, in double theLtransL, in double theLthinL, - in double theRR, in double theWR, in double theLtransR, in double theLthinR, - in double theRI, in double theWI, in double theLtransI, in double theLthinI, - in double theH, in double theW, in boolean theHexMesh); - /*! - * \brief Create a T-shape object with specified caracteristics for the main and - * the incident pipes (radius, width, half-length). - * - * A chamfer is created on the junction of the pipes. - * The extremities of the main pipe are located on junctions points P1 and P2. - * The extremity of the incident pipe is located on junction point P3. - * \param theR1 Internal radius of main pipe - * \param theW1 Width of main pipe - * \param theL1 Half-length of main pipe - * \param theR2 Internal radius of incident pipe (R2 < R1) - * \param theW2 Width of incident pipe (R2+W2 < R1+W1) - * \param theL2 Half-length of incident pipe - * - * \param theRL Internal radius of left thickness reduction - * \param theWL Width of left thickness reduction - * \param theLtransL Length of left transition part - * \param theLthinL Length of left thin part - * - * \param theRR Internal radius of right thickness reduction - * \param theWR Width of right thickness reduction - * \param theLtransR Length of right transition part - * \param theLthinR Length of right thin part - * - * \param theRI Internal radius of incident thickness reduction - * \param theWI Width of incident thickness reduction - * \param theLtransI Length of incident transition part - * \param theLthinI Length of incident thin part - * - * \param theH Height of the chamfer. - * \param theW Width of the chamfer. - * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) - * \param theP1 1st junction point of main pipe - * \param theP2 2nd junction point of main pipe - * \param theP3 Junction point of incident pipe - * \return List of GEOM_Object, containing the created shape and propagation groups. - */ - ListOfGO MakePipeTShapeTRChamferWithPosition - (in double theR1, in double theW1, in double theL1, - in double theR2, in double theW2, in double theL2, - in double theRL, in double theWL, in double theLtransL, in double theLthinL, - in double theRR, in double theWR, in double theLtransR, in double theLthinR, - in double theRI, in double theWI, in double theLtransI, in double theLthinI, - in double theH, in double theW, in boolean theHexMesh, - in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3); - /*! - * \brief Create a T-shape object with specified caracteristics for the main and - * the incident pipes (radius, width, half-length). - * - * A fillet is created on the junction of the pipes. - * Center of the shape is (0,0,0). The main plane of the T-shape is XOY. - * \param theR1 Internal radius of main pipe - * \param theW1 Width of main pipe - * \param theL1 Half-length of main pipe - * \param theR2 Internal radius of incident pipe (R2 < R1) - * \param theW2 Width of incident pipe (R2+W2 < R1+W1) - * \param theL2 Half-length of incident pipe - * - * \param theRL Internal radius of left thickness reduction - * \param theWL Width of left thickness reduction - * \param theLtransL Length of left transition part - * \param theLthinL Length of left thin part - * - * \param theRR Internal radius of right thickness reduction - * \param theWR Width of right thickness reduction - * \param theLtransR Length of right transition part - * \param theLthinR Length of right thin part - * - * \param theRI Internal radius of incident thickness reduction - * \param theWI Width of incident thickness reduction - * \param theLtransI Length of incident transition part - * \param theLthinI Length of incident thin part - * - * \param theRF Radius of curvature of fillet. - * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) - * \return List of GEOM_Object, containing the created shape and propagation groups. - */ - ListOfGO MakePipeTShapeTRFillet - (in double theR1, in double theW1, in double theL1, - in double theR2, in double theW2, in double theL2, - in double theRL, in double theWL, in double theLtransL, in double theLthinL, - in double theRR, in double theWR, in double theLtransR, in double theLthinR, - in double theRI, in double theWI, in double theLtransI, in double theLthinI, - in double theRF, in boolean theHexMesh); - /*! - * \brief Create a T-shape object with specified caracteristics for the main and - * the incident pipes (radius, width, half-length). - * - * A fillet is created on the junction of the pipes. - * The extremities of the main pipe are located on junctions points P1 and P2. - * The extremity of the incident pipe is located on junction point P3. - * \param theR1 Internal radius of main pipe - * \param theW1 Width of main pipe - * \param theL1 Half-length of main pipe - * \param theR2 Internal radius of incident pipe (R2 < R1) - * \param theW2 Width of incident pipe (R2+W2 < R1+W1) - * \param theL2 Half-length of incident pipe - * - * \param theRL Internal radius of left thickness reduction - * \param theWL Width of left thickness reduction - * \param theLtransL Length of left transition part - * \param theLthinL Length of left thin part - * - * \param theRR Internal radius of right thickness reduction - * \param theWR Width of right thickness reduction - * \param theLtransR Length of right transition part - * \param theLthinR Length of right thin part - * - * \param theRI Internal radius of incident thickness reduction - * \param theWI Width of incident thickness reduction - * \param theLtransI Length of incident transition part - * \param theLthinI Length of incident thin part - * - * \param theRF Radius of curvature of fillet. - * \param theHexMesh Boolean indicating if shape is prepared for hex mesh (default=true) - * \param theP1 1st junction point of main pipe - * \param theP2 2nd junction point of main pipe - * \param theP3 Junction point of incident pipe - * \return List of GEOM_Object, containing the created shape and propagation groups. - */ - ListOfGO MakePipeTShapeTRFilletWithPosition - (in double theR1, in double theW1, in double theL1, - in double theR2, in double theW2, in double theL2, - in double theRL, in double theWL, in double theLtransL, in double theLthinL, - in double theRR, in double theWR, in double theLtransR, in double theLthinR, - in double theRI, in double theWI, in double theLtransI, in double theLthinI, - in double theRF, in boolean theHexMesh, - in GEOM_Object theP1, in GEOM_Object theP2, in GEOM_Object theP3); - - /*! - * This function allows to create a disk already divided into blocks. It - * can be use to create divided pipes for later meshing in hexaedra. - * \param theR Radius of the disk - * \param theRatio Relative size of the central square diagonal against the disk diameter - * \param theOrientation Plane on which the disk will be built - * \param thePattern Division pattern. It can be GEOM.SQUARE or GEOM.HEXAGON - * \return New GEOM_Object, containing the created shape. - */ - GEOM_Object MakeDividedDisk (in double theR, - in double theRatio, - in short theOrientation, - in pattern thePattern); - - /*! - * \brief Create a Disk prepared for hexa meshing with given center, normal vector and radius. - * \param thePnt disk center. - * \param theVec Vector, normal to the plane of the disk. - * \param theR Disk radius. - * \param theRatio Relative size of the central square diagonal against the disk diameter - * \param thePattern Division pattern. It can be GEOM.SQUARE or GEOM.HEXAGON - * \return New GEOM_Object, containing the created disk. + * \brief Creates a field + */ + GEOM_Field CreateField(in GEOM_Object shape, + in string name, + in field_data_type type, + in short dimension, + in string_array componentNames); + /*! + * \brief Returns number of fields on a shape */ - GEOM_Object MakeDividedDiskPntVecR ( in GEOM_Object thePnt, - in GEOM_Object theVec, - in double theR, - in double theRatio, - in pattern thePattern); + long CountFields(in GEOM_Object shape); /*! - * Builds a cylinder prepared for hexa meshes - * \param theR Radius of the cylinder - * \param theH Height of the cylinder - * \param thePattern Division pattern. It can be GEOM.SQUARE or GEOM.HEXAGON - * \return New GEOM_Object, containing the created shape. + * \brief Returns all fields on a shape */ - GEOM_Object MakeDividedCylinder (in double theR, - in double theH, - in pattern thePattern ); + ListOfFields GetFields(in GEOM_Object shape); + /*! - * - * Create a smoothing surface from a set of points - * \param thelPoints list of points - * \return New GEOM_Object, containing the created shape. + * \brief Returns a field on a shape by its name */ - GEOM_Object MakeSmoothingSurface (in ListOfGO thelPoints); + GEOM_Field GetField(in GEOM_Object shape, in string name); - /*@@ insert new functions before this line @@ do not remove this line @@*/ + /*! + * \brief Returns number of sub-shapes of given dimension + */ + long GetNbSubShapes(in GEOM_Object shape, in short fieldDim); }; // # GEOM_Gen: @@ -4465,9 +4684,9 @@ module GEOM * Returns a SObject where theObject is placed */ SALOMEDS::SObject AddInStudy (in SALOMEDS::Study theStudy, - in GEOM_Object theObject, - in string theName, - in GEOM_Object theFather); + in GEOM_BaseObject theObject, + in string theName, + in GEOM_BaseObject theFather); /*! * \brief Publish sub-shapes, standing for arguments and sub-shapes of arguments @@ -4562,8 +4781,8 @@ module GEOM in boolean theInheritFirstArg, in boolean theAddPrefix); - // # Methods to access interfaces for objects creation and transformation - + // # 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); @@ -4576,16 +4795,19 @@ module GEOM 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_IAdvancedOperations GetIAdvancedOperations (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); + + // # Objects Management - // # Objects Management - /*! * \brief Removes the object from the GEOM component * \param theObject is a GEOM_Object to be removed */ - void RemoveObject (in GEOM_Object theObject); + void RemoveObject (in GEOM_BaseObject theObject); /*! * \brief Returns an object defined by the study and its entry in the GEOM component @@ -4593,7 +4815,7 @@ module GEOM * \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_Object GetObject (in long theStudyID, in string theEntry); + GEOM_BaseObject GetObject (in long theStudyID, in string theEntry); /*! * \brief Add a sub-shape defined by indices in \a theIndices @@ -4638,6 +4860,83 @@ module GEOM ListOfGO PublishNamedShapesInStudy(in SALOMEDS::Study theStudy, //in SObject theSObject, in Object theObject); + + /*! + * \brief Creates a new folder + * + * Creates a new container (folder) for any GEOM objects. + * Folder will have name theName. + * If theFather is not NULL, the folder is placed under theFather object. + * Otherwise, the folder takes place under root 'Geometry' object. + * + * \param theName name of the folder + * \param theFather parent object + * \return SObject represented the created folder. + */ + SALOMEDS::SObject CreateFolder (in string theName, + in SALOMEDS::SObject theFather); + + /*! + * \brief Moves object to the specified folder + * + * The moved object should be first published in the study. + * \param theObject GEOM object to move + * \param theFolder target folder + */ + void MoveToFolder (in GEOM_Object theObject, + in SALOMEDS::SObject theFolder); + + /*! + * \brief Moves list of objects to the specified folder + * + * The moved objects should be first published in the study. + * \param theListOfGO list of GEOM objects to move + * \param theFolder target folder + */ + void MoveListToFolder (in ListOfGO theListOfGO, + in SALOMEDS::SObject theFolder); + + /*! + * \brief Moves objects to the specified position + * + * This function is used in the drag-n-drop functionality. + * + * \param what objects being moved + * \param where parent object where objects are moved to + * \param row position in the parent object's children list at which objects are moved + */ + void Move( in object_list what, + in SALOMEDS::SObject where, + in long row ); + + /*! + * \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); + + /*! + * \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); + }; };