Salome HOME
fix bug 12361. In SetName(): there may be no study
[modules/smesh.git] / idl / SMESH_Filter.idl
index d1f0c3d..4376a66 100644 (file)
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS \r
-// \r
-//  This library is free software; you can redistribute it and/or \r
-//  modify it under the terms of the GNU Lesser General Public \r
-//  License as published by the Free Software Foundation; either \r
-//  version 2.1 of the License. \r
-// \r
-//  This library is distributed in the hope that it will be useful, \r
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of \r
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU \r
-//  Lesser General Public License for more details. \r
-// \r
-//  You should have received a copy of the GNU Lesser General Public \r
-//  License along with this library; if not, write to the Free Software \r
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA \r
-// \r
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org \r
-//\r
-//\r
-//\r
-//  File   : SMESH_Filter.idl\r
-//  Author : Alexey Petrov, OCC\r
-\r
-#ifndef _SMESH_FILTER_IDL_\r
-#define _SMESH_FILTER_IDL_\r
-\r
-#include "SALOME_Exception.idl"\r
-#include "SALOME_GenericObj.idl"\r
-#include "SMESH_Mesh.idl"\r
-\r
-\r
-module GEOM\r
-{\r
-  interface GEOM_Object;\r
-};\r
-\r
-\r
-module SMESH\r
-{\r
-\r
-  /*!\r
-  * Enumeration of functor types\r
-  */\r
-  enum FunctorType\r
-  {\r
-    FT_AspectRatio,\r
-    FT_Warping,   \r
-    FT_MinimumAngle,\r
-    FT_Taper,       \r
-    FT_Skew,         \r
-    FT_Area,          \r
-    FT_FreeBorders,\r
-    FT_FreeEdges,\r
-    FT_MultiConnection,\r
-    FT_Length,\r
-    FT_BelongToGeom,\r
-    FT_BelongToPlane,\r
-    FT_BelongToCylinder,\r
-    FT_RangeOfIds,\r
-    FT_LessThan,\r
-    FT_MoreThan,\r
-    FT_EqualTo,\r
-    FT_LogicalNOT,\r
-    FT_LogicalAND,\r
-    FT_LogicalOR,\r
-    FT_Undefined\r
-  };\r
-\r
-  /*!\r
-  * Base interface for all functors ( i.e. numerical functors and predicates )\r
-  */\r
-  interface Functor: SALOME::GenericObj\r
-  {\r
-    void            SetMesh( in SMESH_Mesh theMesh );\r
-    FunctorType     GetFunctorType();\r
-    ElementType     GetElementType();\r
-  };\r
-\r
-\r
-\r
-  /*!\r
-  * Numerical functors are intended for calculating value by Id of mesh entity\r
-  */\r
-  interface NumericalFunctor: Functor\r
-  {\r
-    double GetValue( in long theElementId );\r
-\r
-    /*!\r
-    * Set precision for calculation. It is a position after point which is\r
-    * used to functor value after calculation.\r
-    */\r
-    void   SetPrecision( in long thePrecision );\r
-    long   GetPrecision();\r
-  };\r
-  interface MinimumAngle    : NumericalFunctor{};\r
-  interface AspectRatio     : NumericalFunctor{};\r
-  interface Warping         : NumericalFunctor{};\r
-  interface Taper           : NumericalFunctor{};\r
-  interface Skew            : NumericalFunctor{};\r
-  interface Area            : NumericalFunctor{};\r
-  interface Length          : NumericalFunctor{};\r
-  interface MultiConnection : NumericalFunctor{};\r
-\r
-  /*!\r
-  * Predicates are intended for verification of criteria,\r
-  *            must return bool value by mesh id\r
-  */\r
-  interface Predicate: Functor\r
-  {\r
-    boolean IsSatisfy( in long thEntityId );\r
-  };\r
-\r
-  /*!\r
-  * Logical functor (predicate) "Belong To Geometry".\r
-  * Verify whether mesh element or node belong to pointed Geom Object\r
-  */\r
-  interface BelongToGeom: Predicate\r
-  {\r
-    void SetGeom( in GEOM::GEOM_Object theGeom );\r
-    void SetElementType( in ElementType theType );\r
-\r
-    void   SetShapeName( in string theName );\r
-    string GetShapeName();    \r
-  };\r
-\r
-  /*!\r
-  * Logical functor (predicate) "Belong To Surface".\r
-  * Base interface for "belong to plane" and "belong to cylinder interfaces"\r
-  */\r
-  interface BelongToSurface: Predicate\r
-  {\r
-    void   SetTolerance( in double theToler );\r
-    double GetTolerance();\r
-    void   SetShapeName( in string theName, in ElementType theType );\r
-    string GetShapeName();\r
-  };\r
-\r
-\r
-  /*!\r
-  * Logical functor (predicate) "Belong To Plane".\r
-  * Verify whether mesh element lie in pointed Geom planar object\r
-  */\r
-  interface BelongToPlane: BelongToSurface\r
-  {\r
-    void   SetPlane( in GEOM::GEOM_Object theGeom, in ElementType theType );\r
-  };\r
-\r
-  /*!\r
-  * Logical functor (predicate) "Belong To Culinder".\r
-  * Verify whether mesh element lie in pointed Geom cylindrical object\r
-  */\r
-  interface BelongToCylinder: BelongToSurface\r
-  {\r
-    void   SetCylinder( in GEOM::GEOM_Object theGeom, in ElementType theType );\r
-  };\r
-\r
-  /*!\r
-  * Logical functor (predicate) "Free borders".\r
-  * Verify whether 1D mesh element is free ( i.e. connected to one face only )\r
-  */\r
-  interface FreeBorders: Predicate{};\r
-\r
-  /*!\r
-  * Logical functor (predicate) "Free edges".\r
-  * Verify whether 2D mesh element has free edges( i.e. edges connected to one face only )\r
-  */\r
-  interface FreeEdges: Predicate\r
-\r
-  {\r
-    struct Border\r
-    {\r
-      long myElemId;\r
-      long myPnt1, myPnt2;\r
-    };\r
-    typedef sequence<Border> Borders;\r
-    Borders GetBorders();\r
-  };\r
-\r
-\r
-  /*!\r
-  * Abstract logical functor (predicate) "RangeOfIds".\r
-  * Verify whether an Entity Id belongs to defined sequence of id's\r
-  */\r
-  interface RangeOfIds: Predicate\r
-  {\r
-    void            SetRange( in long_array theIds );\r
-    boolean         SetRangeStr( in string theRange );\r
-    string          GetRangeStr();\r
-\r
-    void            SetElementType( in ElementType theType );\r
-  };\r
-\r
-  /*!\r
-  * Comparator. Predicate for compare value calculated\r
-  *             by numerical functor with threshold value\r
-  */\r
-  interface Comparator: Predicate\r
-  {\r
-    void    SetMargin( in double theValue );\r
-    void    SetNumFunctor( in NumericalFunctor theFunct );\r
-    double  GetMargin();\r
-  };\r
-  interface LessThan: Comparator{};\r
-  interface MoreThan: Comparator{};\r
-  interface EqualTo : Comparator\r
-  {\r
-    void    SetTolerance( in double theToler );\r
-    double  GetTolerance();\r
-  };\r
-\r
-  /*!\r
-  * Logical predicates are intended for compose predicates using boolean operations\r
-  */\r
-  interface Logical: Predicate{};\r
-\r
-  interface LogicalNOT: Logical\r
-  {\r
-    void SetPredicate(in Predicate thePredicate);\r
-  };\r
-\r
-  interface LogicalBinary: Logical\r
-{\r
-    void SetPredicate1( in Predicate thePredicate );\r
-    void SetPredicate2( in Predicate thePredicate );\r
-  };\r
-\r
-  interface LogicalAND: LogicalBinary{};\r
-  interface LogicalOR : LogicalBinary{};\r
-\r
-  /*!\r
-  *  Filter\r
-  */\r
-  interface Filter: SALOME::GenericObj\r
-  {\r
-    /*!\r
-    * Structure containing information about one criterion\r
-    *   Type          - FT_Taper, FT_Skew ...\r
-    *   Compare       - FT_LessThan, FT_MoreThan, FT_EqualTo\r
-    *   Threshold     - threshold value\r
-    *   UnaryOp       - unary logical operation: FT_LogicalNOT or FT_Undefined\r
-    *   BinaryOp      - binary logical operation FT_LogicalAND, FT_LogicalOR or\r
-    *                   (FT_Undefined must be for the last criterion)\r
-    *   ThresholdStr  - Threshold value defined as string. Used for:\r
-    *                   1. Diaposon of identifiers. Example: "1,2,3,5-10,12,27-29"\r
-    *                   2. BelongToGeom predicate for storing name of shape\r
-    *   Tolerance     - Tolerance is used for comparators (EqualTo comparision) and for\r
-    *                   "Belong to plane" and "Belong to cylinder" predicates\r
-    *   TypeOfElement - type of element SMESH::NODE, SMESH::FACE (used by BelongToGeom predicate only)\r
-    *   Precision     - Precision of numerical functors\r
-    */\r
-    struct Criterion\r
-    {\r
-      long        Type;\r
-      long        Compare;\r
-      double      Threshold;\r
-      string      ThresholdStr;\r
-      long        UnaryOp;\r
-      long        BinaryOp;\r
-      double      Tolerance;\r
-      ElementType TypeOfElement;\r
-      long        Precision;\r
-    };\r
-\r
-    typedef sequence<Criterion> Criteria;\r
-\r
-    void          SetPredicate( in Predicate thePredicate );\r
-    long_array    GetElementsId( in SMESH_Mesh theMesh );\r
-    ElementType   GetElementType();\r
-    Predicate     GetPredicate();\r
-\r
-    boolean       GetCriteria( out Criteria theCriteria );\r
-    boolean       SetCriteria( in Criteria theCriteria );\r
-  };\r
-\r
-\r
-  /*!\r
-  *  Interface for working with library of filters\r
-  */\r
-  interface FilterLibrary : SALOME::GenericObj\r
-  {\r
-    /*!\r
-    *  Copy filter from library by name (new filter is created)\r
-    */\r
-    Filter        Copy( in string theFilterName );\r
-\r
-    /*!\r
-    * Methods for editing library\r
-    */\r
-    boolean       Add     ( in string theFilterName, in Filter theFilter );\r
-    boolean       AddEmpty( in string theFilterName, in ElementType theType ); // add empty filter\r
-    boolean       Delete  ( in string theFilterName );\r
-    boolean       Replace ( in string theFilterName, in string theNewName, in Filter theFilter );\r
-\r
-    /*!\r
-    *  Save library on disk\r
-    */\r
-    boolean       Save();\r
-    boolean       SaveAs( in string aFileName );\r
-\r
-    /*!\r
-    * Query methods\r
-    */\r
-    boolean       IsPresent( in string aFilterName );\r
-    long          NbFilters( in ElementType aType );\r
-    string_array  GetNames( in ElementType aType );\r
-    string_array  GetAllNames();\r
-    void          SetFileName( in string aFilterName );\r
-    string        GetFileName();\r
-  };\r
-\r
-\r
-  /*!\r
-  * Interface of Filter manager\r
-  */\r
-  interface FilterManager: SALOME::GenericObj\r
-  {\r
-    /*!\r
-    *  Create numerical functors\r
-    */\r
-    MinimumAngle      CreateMinimumAngle();\r
-    AspectRatio       CreateAspectRatio();\r
-    Warping           CreateWarping();\r
-    Taper             CreateTaper();\r
-    Skew              CreateSkew();\r
-    Area              CreateArea();\r
-    Length            CreateLength();\r
-    MultiConnection   CreateMultiConnection();\r
-\r
-    /*!\r
-    *  Create logical functors ( predicates )\r
-    */\r
-    BelongToGeom      CreateBelongToGeom();\r
-    BelongToPlane     CreateBelongToPlane();\r
-    BelongToCylinder  CreateBelongToCylinder();\r
-\r
-    FreeBorders       CreateFreeBorders();\r
-    FreeEdges         CreateFreeEdges();\r
-\r
-    RangeOfIds        CreateRangeOfIds();\r
-\r
-    /*!\r
-    *  Create comparators ( predicates )\r
-    */\r
-    LessThan          CreateLessThan();\r
-    MoreThan          CreateMoreThan();\r
-    EqualTo           CreateEqualTo();\r
-\r
-    /*!\r
-    *  Create boolean operations ( predicates )\r
-    */\r
-    LogicalNOT        CreateLogicalNOT();\r
-    LogicalAND        CreateLogicalAND();\r
-    LogicalOR         CreateLogicalOR();\r
-\r
-    /*!\r
-    *  Create filter\r
-    */\r
-    Filter            CreateFilter();\r
-\r
-    /*!\r
-    *  Load filter library. If libary does not exist it is created\r
-    */\r
-    FilterLibrary     LoadLibrary( in string aFileName );\r
-\r
-    /*!\r
-    *  Create new library\r
-    */\r
-    FilterLibrary     CreateLibrary();\r
-\r
-    /*!\r
-    *  Delete library\r
-    */\r
-    boolean           DeleteLibrary( in string aFileName );\r
-  };\r
-};\r
-\r
-\r
-#endif\r
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  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. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SMESH_Filter.idl
+//  Author : Alexey Petrov, OCC
+
+#ifndef _SMESH_FILTER_IDL_
+#define _SMESH_FILTER_IDL_
+
+#include "SALOME_Exception.idl"
+#include "SALOME_GenericObj.idl"
+#include "GEOM_Gen.idl"
+#include "SMESH_Mesh.idl"
+
+module SMESH
+{
+
+  /*!
+  * Enumeration of functor types
+  */
+  enum FunctorType
+  {
+    FT_AspectRatio,
+    FT_AspectRatio3D,
+    FT_Warping,   
+    FT_MinimumAngle,
+    FT_Taper,       
+    FT_Skew,         
+    FT_Area,          
+    FT_Volume3D,          
+    FT_FreeBorders,
+    FT_FreeEdges,
+    FT_MultiConnection,
+    FT_MultiConnection2D,
+    FT_Length,
+    FT_Length2D,
+    FT_BelongToGeom,
+    FT_BelongToPlane,
+    FT_BelongToCylinder,
+    FT_LyingOnGeom,
+    FT_RangeOfIds,
+    FT_BadOrientedVolume,
+    FT_LessThan,
+    FT_MoreThan,
+    FT_EqualTo,
+    FT_LogicalNOT,
+    FT_LogicalAND,
+    FT_LogicalOR,
+    FT_Undefined
+  };
+
+  /*!
+  * Base interface for all functors ( i.e. numerical functors and predicates )
+  */
+  interface Functor: SALOME::GenericObj
+  {
+    void            SetMesh( in SMESH_Mesh theMesh );
+    FunctorType     GetFunctorType();
+    ElementType     GetElementType();
+  };
+
+
+
+  /*!
+  * Numerical functors are intended for calculating value by Id of mesh entity
+  */
+  interface NumericalFunctor: Functor
+  {
+    double GetValue( in long theElementId );
+
+    /*!
+    * Set precision for calculation. It is a position after point which is
+    * used to functor value after calculation.
+    */
+    void   SetPrecision( in long thePrecision );
+    long   GetPrecision();
+  };
+  interface MinimumAngle    : NumericalFunctor{};
+  interface AspectRatio     : NumericalFunctor{};
+  interface AspectRatio3D   : NumericalFunctor{};
+  interface Warping         : NumericalFunctor{};
+  interface Taper           : NumericalFunctor{};
+  interface Skew            : NumericalFunctor{};
+  interface Area            : NumericalFunctor{};
+  interface Volume3D        : NumericalFunctor{};
+  interface Length          : NumericalFunctor{};
+  interface Length2D        : NumericalFunctor
+  {
+    struct Value
+    {
+      double myLength;
+      long myPnt1, myPnt2;
+    };
+    typedef sequence<Value> Values;
+    Values GetValues();
+  };
+  interface MultiConnection   : NumericalFunctor{};
+  interface MultiConnection2D : NumericalFunctor
+  {
+    struct Value
+    {
+      long myNbConnects;
+      long myPnt1, myPnt2;
+    };
+    
+    typedef sequence<Value> Values;
+    Values GetValues();
+  };
+
+  /*!
+  * Predicates are intended for verification of criteria,
+  *            must return bool value by mesh id
+  */
+  interface Predicate: Functor
+  {
+    boolean IsSatisfy( in long thEntityId );
+  };
+
+  /*!
+  * Logical functor (predicate) "Bad Oriented Volume".
+  * Verify whether a mesh volume is incorrectly oriented from
+  * the point of view of MED convention
+  */
+  interface BadOrientedVolume: Predicate {};
+
+  /*!
+  * Logical functor (predicate) "Belong To Geometry".
+  * Verify whether mesh element or node belong to pointed Geom Object
+  */
+  interface BelongToGeom: Predicate
+  {
+    void SetGeom( in GEOM::GEOM_Object theGeom );
+    void SetElementType( in ElementType theType );
+
+    void   SetShapeName( in string theName );
+    void   SetShape( in string theID, in string theName );
+    string GetShapeName();
+    string GetShapeID();
+  };
+
+  /*!
+  * Logical functor (predicate) "Belong To Surface".
+  * Base interface for "belong to plane" and "belong to cylinder interfaces"
+  */
+  interface BelongToSurface: Predicate
+  {
+    void   SetTolerance( in double theToler );
+    double GetTolerance();
+    void   SetShapeName( in string theName, in ElementType theType );
+    void   SetShape( in string theID, in string theName, in ElementType theType );
+    string GetShapeName();
+    string GetShapeID();
+  };
+
+
+  /*!
+  * Logical functor (predicate) "Belong To Plane".
+  * Verify whether mesh element lie in pointed Geom planar object
+  */
+  interface BelongToPlane: BelongToSurface
+  {
+    void   SetPlane( in GEOM::GEOM_Object theGeom, in ElementType theType );
+  };
+
+  /*!
+  * Logical functor (predicate) "Belong To Culinder".
+  * Verify whether mesh element lie in pointed Geom cylindrical object
+  */
+  interface BelongToCylinder: BelongToSurface
+  {
+    void   SetCylinder( in GEOM::GEOM_Object theGeom, in ElementType theType );
+  };
+
+  /*!
+  * Logical functor (predicate) "Lying On Geometry".
+  * Verify whether mesh element or node lying or partially lying on the pointed Geom Object
+  */
+  interface LyingOnGeom: Predicate
+  {
+    void SetGeom( in GEOM::GEOM_Object theGeom );
+    void SetElementType( in ElementType theType );
+
+    void   SetShapeName( in string theName );
+    void   SetShape( in string theID, in string theName );
+    string GetShapeName();    
+    string GetShapeID(); 
+  };
+  /*!
+  * Logical functor (predicate) "Free borders".
+  * Verify whether 1D mesh element is free ( i.e. connected to one face only )
+  */
+  interface FreeBorders: Predicate{};
+
+  /*!
+  * Logical functor (predicate) "Free edges".
+  * Verify whether 2D mesh element has free edges( i.e. edges connected to one face only )
+  */
+  interface FreeEdges: Predicate
+
+  {
+    struct Border
+    {
+      long myElemId;
+      long myPnt1, myPnt2;
+    };
+    typedef sequence<Border> Borders;
+    Borders GetBorders();
+  };
+
+
+  /*!
+  * Abstract logical functor (predicate) "RangeOfIds".
+  * Verify whether an Entity Id belongs to defined sequence of id's
+  */
+  interface RangeOfIds: Predicate
+  {
+    void            SetRange( in long_array theIds );
+    boolean         SetRangeStr( in string theRange );
+    string          GetRangeStr();
+
+    void            SetElementType( in ElementType theType );
+  };
+
+  /*!
+  * Comparator. Predicate for compare value calculated
+  *             by numerical functor with threshold value
+  */
+  interface Comparator: Predicate
+  {
+    void    SetMargin( in double theValue );
+    void    SetNumFunctor( in NumericalFunctor theFunct );
+    double  GetMargin();
+  };
+  interface LessThan: Comparator{};
+  interface MoreThan: Comparator{};
+  interface EqualTo : Comparator
+  {
+    void    SetTolerance( in double theToler );
+    double  GetTolerance();
+  };
+
+  /*!
+  * Logical predicates are intended for compose predicates using boolean operations
+  */
+  interface Logical: Predicate{};
+
+  interface LogicalNOT: Logical
+  {
+    void SetPredicate(in Predicate thePredicate);
+  };
+
+  interface LogicalBinary: Logical
+{
+    void SetPredicate1( in Predicate thePredicate );
+    void SetPredicate2( in Predicate thePredicate );
+  };
+
+  interface LogicalAND: LogicalBinary{};
+  interface LogicalOR : LogicalBinary{};
+
+  /*!
+  *  Filter
+  */
+  interface Filter: SALOME::GenericObj, SMESH_IDSource
+  {
+    /*!
+    * Structure containing information about one criterion
+    *   Type          - FT_Taper, FT_Skew ...
+    *   Compare       - FT_LessThan, FT_MoreThan, FT_EqualTo
+    *   Threshold     - threshold value
+    *   UnaryOp       - unary logical operation: FT_LogicalNOT or FT_Undefined
+    *   BinaryOp      - binary logical operation FT_LogicalAND, FT_LogicalOR or
+    *                   (FT_Undefined must be for the last criterion)
+    *   ThresholdStr  - Threshold value defined as string. Used for:
+    *                   1. Diaposon of identifiers. Example: "1,2,3,5-10,12,27-29"
+    *                   2. BelongToGeom predicate for storing name of shape
+    *   ThresholdID   - One more threshold value defined as string. Used for:
+    *                   1. BelongToGeom predicate for storing id of shape
+    *   Tolerance     - Tolerance is used for comparators (EqualTo comparision) and for
+    *                   "Belong to plane" and "Belong to cylinder" predicates
+    *   TypeOfElement - type of element SMESH::NODE, SMESH::FACE (used by BelongToGeom predicate only)
+    *   Precision     - Precision of numerical functors
+    */
+    struct Criterion
+    {
+      long        Type;
+      long        Compare;
+      double      Threshold;
+      string      ThresholdStr;
+      string      ThresholdID;
+      long        UnaryOp;
+      long        BinaryOp;
+      double      Tolerance;
+      ElementType TypeOfElement;
+      long        Precision;
+    };
+
+    typedef sequence<Criterion> Criteria;
+
+    void          SetPredicate( in Predicate thePredicate );
+    void          SetMesh( in SMESH_Mesh theMesh );
+
+    long_array    GetElementsId( in SMESH_Mesh theMesh );
+    ElementType   GetElementType();
+    Predicate     GetPredicate();
+
+    boolean       GetCriteria( out Criteria theCriteria );
+    boolean       SetCriteria( in Criteria theCriteria );
+  };
+
+
+  /*!
+  *  Interface for working with library of filters
+  */
+  interface FilterLibrary : SALOME::GenericObj
+  {
+    /*!
+    *  Copy filter from library by name (new filter is created)
+    */
+    Filter        Copy( in string theFilterName );
+
+    /*!
+    * Methods for editing library
+    */
+    boolean       Add     ( in string theFilterName, in Filter theFilter );
+    boolean       AddEmpty( in string theFilterName, in ElementType theType ); // add empty filter
+    boolean       Delete  ( in string theFilterName );
+    boolean       Replace ( in string theFilterName, in string theNewName, in Filter theFilter );
+
+    /*!
+    *  Save library on disk
+    */
+    boolean       Save();
+    boolean       SaveAs( in string aFileName );
+
+    /*!
+    * Query methods
+    */
+    boolean       IsPresent( in string aFilterName );
+    long          NbFilters( in ElementType aType );
+    string_array  GetNames( in ElementType aType );
+    string_array  GetAllNames();
+    void          SetFileName( in string aFilterName );
+    string        GetFileName();
+  };
+
+
+  /*!
+  * Interface of Filter manager
+  */
+  interface FilterManager: SALOME::GenericObj
+  {
+    /*!
+    *  Create numerical functors
+    */
+    MinimumAngle      CreateMinimumAngle();
+    AspectRatio       CreateAspectRatio();
+    AspectRatio3D     CreateAspectRatio3D();
+    Warping           CreateWarping();
+    Taper             CreateTaper();
+    Skew              CreateSkew();
+    Area              CreateArea();
+    Volume3D          CreateVolume3D();
+    Length            CreateLength();
+    Length2D          CreateLength2D();
+    MultiConnection   CreateMultiConnection();
+    MultiConnection2D CreateMultiConnection2D();
+
+    /*!
+    *  Create logical functors ( predicates )
+    */
+    BelongToGeom      CreateBelongToGeom();
+    BelongToPlane     CreateBelongToPlane();
+    BelongToCylinder  CreateBelongToCylinder();
+
+    LyingOnGeom       CreateLyingOnGeom();
+
+    FreeBorders       CreateFreeBorders();
+    FreeEdges         CreateFreeEdges();
+
+    RangeOfIds        CreateRangeOfIds();
+
+    BadOrientedVolume CreateBadOrientedVolume();
+
+    /*!
+    *  Create comparators ( predicates )
+    */
+    LessThan          CreateLessThan();
+    MoreThan          CreateMoreThan();
+    EqualTo           CreateEqualTo();
+
+    /*!
+    *  Create boolean operations ( predicates )
+    */
+    LogicalNOT        CreateLogicalNOT();
+    LogicalAND        CreateLogicalAND();
+    LogicalOR         CreateLogicalOR();
+
+    /*!
+    *  Create filter
+    */
+    Filter            CreateFilter();
+
+    /*!
+    *  Load filter library. If libary does not exist it is created
+    */
+    FilterLibrary     LoadLibrary( in string aFileName );
+
+    /*!
+    *  Create new library
+    */
+    FilterLibrary     CreateLibrary();
+
+    /*!
+    *  Delete library
+    */
+    boolean           DeleteLibrary( in string aFileName );
+  };
+};
+
+
+#endif