1 // Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 #ifndef _SMESH_CONTROLSDEF_HXX_
24 #define _SMESH_CONTROLSDEF_HXX_
30 #include <boost/shared_ptr.hpp>
33 #include <GeomAPI_ProjectPointOnSurf.hxx>
34 #include <GeomAPI_ProjectPointOnCurve.hxx>
35 #include <TColStd_SequenceOfInteger.hxx>
36 #include <TColStd_MapOfInteger.hxx>
37 #include <TCollection_AsciiString.hxx>
39 #include <TopoDS_Face.hxx>
40 #include <TopTools_MapOfShape.hxx>
41 #include <BRepClass3d_SolidClassifier.hxx>
42 #include <Quantity_Color.hxx>
44 #include "SMDSAbs_ElementType.hxx"
45 #include "SMDS_MeshNode.hxx"
47 #include "SMESH_Controls.hxx"
50 #if defined SMESHCONTROLS_EXPORTS || defined SMESHControls_EXPORTS
51 #define SMESHCONTROLS_EXPORT __declspec( dllexport )
53 #define SMESHCONTROLS_EXPORT __declspec( dllimport )
56 #define SMESHCONTROLS_EXPORT
59 class SMDS_MeshElement;
65 class SMESHDS_SubMesh;
72 class SMESHCONTROLS_EXPORT TSequenceOfXYZ
74 typedef std::vector<gp_XYZ>::size_type size_type;
79 TSequenceOfXYZ(size_type n);
81 TSequenceOfXYZ(size_type n, const gp_XYZ& t);
83 TSequenceOfXYZ(const TSequenceOfXYZ& theSequenceOfXYZ);
85 template <class InputIterator>
86 TSequenceOfXYZ(InputIterator theBegin, InputIterator theEnd);
90 TSequenceOfXYZ& operator=(const TSequenceOfXYZ& theSequenceOfXYZ);
92 gp_XYZ& operator()(size_type n);
94 const gp_XYZ& operator()(size_type n) const;
98 void reserve(size_type n);
100 void push_back(const gp_XYZ& v);
102 size_type size() const;
105 std::vector<gp_XYZ> myArray;
110 Description : Root of all Functors
112 class SMESHCONTROLS_EXPORT Functor
116 virtual void SetMesh( const SMDS_Mesh* theMesh ) = 0;
117 virtual SMDSAbs_ElementType GetType() const = 0;
121 Class : NumericalFunctor
122 Description : Root of all Functors returning numeric value
124 class SMESHCONTROLS_EXPORT NumericalFunctor: public virtual Functor{
127 virtual void SetMesh( const SMDS_Mesh* theMesh );
128 virtual double GetValue( long theElementId );
129 virtual double GetValue(const TSequenceOfXYZ& thePoints) { return -1.0;};
130 void GetHistogram(int nbIntervals,
131 std::vector<int>& nbEvents,
132 std::vector<double>& funValues);
133 virtual SMDSAbs_ElementType GetType() const = 0;
134 virtual double GetBadRate( double Value, int nbNodes ) const = 0;
135 long GetPrecision() const;
136 void SetPrecision( const long thePrecision );
138 bool GetPoints(const int theId,
139 TSequenceOfXYZ& theRes) const;
140 static bool GetPoints(const SMDS_MeshElement* theElem,
141 TSequenceOfXYZ& theRes);
143 const SMDS_Mesh* myMesh;
144 const SMDS_MeshElement* myCurrElement;
151 Description : Functor calculating volume of 3D mesh element
153 class SMESHCONTROLS_EXPORT Volume: public virtual NumericalFunctor{
155 virtual double GetValue( long theElementId );
156 //virtual double GetValue( const TSequenceOfXYZ& thePoints );
157 virtual double GetBadRate( double Value, int nbNodes ) const;
158 virtual SMDSAbs_ElementType GetType() const;
163 Class : MaxElementLength2D
164 Description : Functor calculating maximum length of 2D element
166 class SMESHCONTROLS_EXPORT MaxElementLength2D: public virtual NumericalFunctor{
168 virtual double GetValue( long theElementId );
169 virtual double GetBadRate( double Value, int nbNodes ) const;
170 virtual SMDSAbs_ElementType GetType() const;
175 Class : MaxElementLength3D
176 Description : Functor calculating maximum length of 3D element
178 class SMESHCONTROLS_EXPORT MaxElementLength3D: public virtual NumericalFunctor{
180 virtual double GetValue( long theElementId );
181 virtual double GetBadRate( double Value, int nbNodes ) const;
182 virtual SMDSAbs_ElementType GetType() const;
187 Class : SMESH_MinimumAngle
188 Description : Functor for calculation of minimum angle
190 class SMESHCONTROLS_EXPORT MinimumAngle: public virtual NumericalFunctor{
192 virtual double GetValue( const TSequenceOfXYZ& thePoints );
193 virtual double GetBadRate( double Value, int nbNodes ) const;
194 virtual SMDSAbs_ElementType GetType() const;
200 Description : Functor for calculating aspect ratio
202 class SMESHCONTROLS_EXPORT AspectRatio: public virtual NumericalFunctor{
204 virtual double GetValue( const TSequenceOfXYZ& thePoints );
205 virtual double GetBadRate( double Value, int nbNodes ) const;
206 virtual SMDSAbs_ElementType GetType() const;
211 Class : AspectRatio3D
212 Description : Functor for calculating aspect ratio of 3D elems.
214 class SMESHCONTROLS_EXPORT AspectRatio3D: public virtual NumericalFunctor{
216 virtual double GetValue( const TSequenceOfXYZ& thePoints );
217 virtual double GetBadRate( double Value, int nbNodes ) const;
218 virtual SMDSAbs_ElementType GetType() const;
224 Description : Functor for calculating warping
226 class SMESHCONTROLS_EXPORT Warping: public virtual NumericalFunctor{
228 virtual double GetValue( const TSequenceOfXYZ& thePoints );
229 virtual double GetBadRate( double Value, int nbNodes ) const;
230 virtual SMDSAbs_ElementType GetType() const;
233 double ComputeA( const gp_XYZ&, const gp_XYZ&, const gp_XYZ&, const gp_XYZ& ) const;
239 Description : Functor for calculating taper
241 class SMESHCONTROLS_EXPORT Taper: public virtual NumericalFunctor{
243 virtual double GetValue( const TSequenceOfXYZ& thePoints );
244 virtual double GetBadRate( double Value, int nbNodes ) const;
245 virtual SMDSAbs_ElementType GetType() const;
251 Description : Functor for calculating skew in degrees
253 class SMESHCONTROLS_EXPORT Skew: public virtual NumericalFunctor{
255 virtual double GetValue( const TSequenceOfXYZ& thePoints );
256 virtual double GetBadRate( double Value, int nbNodes ) const;
257 virtual SMDSAbs_ElementType GetType() const;
263 Description : Functor for calculating area
265 class SMESHCONTROLS_EXPORT Area: public virtual NumericalFunctor{
267 virtual double GetValue( const TSequenceOfXYZ& thePoints );
268 virtual double GetBadRate( double Value, int nbNodes ) const;
269 virtual SMDSAbs_ElementType GetType() const;
275 Description : Functor for calculating length of edge
277 class SMESHCONTROLS_EXPORT Length: public virtual NumericalFunctor{
279 virtual double GetValue( const TSequenceOfXYZ& thePoints );
280 virtual double GetBadRate( double Value, int nbNodes ) const;
281 virtual SMDSAbs_ElementType GetType() const;
286 Description : Functor for calculating length of edge
288 class SMESHCONTROLS_EXPORT Length2D: public virtual NumericalFunctor{
290 virtual double GetValue( long theElementId );
291 virtual double GetBadRate( double Value, int nbNodes ) const;
292 virtual SMDSAbs_ElementType GetType() const;
296 Value(double theLength, long thePntId1, long thePntId2);
297 bool operator<(const Value& x) const;
299 typedef std::set<Value> TValues;
300 void GetValues(TValues& theValues);
302 typedef boost::shared_ptr<Length2D> Length2DPtr;
305 Class : MultiConnection
306 Description : Functor for calculating number of faces conneted to the edge
308 class SMESHCONTROLS_EXPORT MultiConnection: public virtual NumericalFunctor{
310 virtual double GetValue( long theElementId );
311 virtual double GetValue( const TSequenceOfXYZ& thePoints );
312 virtual double GetBadRate( double Value, int nbNodes ) const;
313 virtual SMDSAbs_ElementType GetType() const;
317 Class : MultiConnection2D
318 Description : Functor for calculating number of faces conneted to the edge
320 class SMESHCONTROLS_EXPORT MultiConnection2D: public virtual NumericalFunctor{
322 virtual double GetValue( long theElementId );
323 virtual double GetValue( const TSequenceOfXYZ& thePoints );
324 virtual double GetBadRate( double Value, int nbNodes ) const;
325 virtual SMDSAbs_ElementType GetType() const;
328 Value(long thePntId1, long thePntId2);
329 bool operator<(const Value& x) const;
331 typedef std::map<Value,int> MValues;
333 void GetValues(MValues& theValues);
335 typedef boost::shared_ptr<MultiConnection2D> MultiConnection2DPtr;
341 Description : Base class for all predicates
343 class SMESHCONTROLS_EXPORT Predicate: public virtual Functor{
345 virtual bool IsSatisfy( long theElementId ) = 0;
346 virtual SMDSAbs_ElementType GetType() const = 0;
352 Description : Predicate for free borders
354 class SMESHCONTROLS_EXPORT FreeBorders: public virtual Predicate{
357 virtual void SetMesh( const SMDS_Mesh* theMesh );
358 virtual bool IsSatisfy( long theElementId );
359 virtual SMDSAbs_ElementType GetType() const;
362 const SMDS_Mesh* myMesh;
367 Class : BadOrientedVolume
368 Description : Predicate bad oriented volumes
370 class SMESHCONTROLS_EXPORT BadOrientedVolume: public virtual Predicate{
373 virtual void SetMesh( const SMDS_Mesh* theMesh );
374 virtual bool IsSatisfy( long theElementId );
375 virtual SMDSAbs_ElementType GetType() const;
378 const SMDS_Mesh* myMesh;
384 class SMESHCONTROLS_EXPORT BareBorderVolume: public Predicate
387 BareBorderVolume():myMesh(0) {}
388 virtual void SetMesh( const SMDS_Mesh* theMesh ) { myMesh = theMesh; }
389 virtual SMDSAbs_ElementType GetType() const { return SMDSAbs_Volume; }
390 virtual bool IsSatisfy( long theElementId );
392 const SMDS_Mesh* myMesh;
394 typedef boost::shared_ptr<BareBorderVolume> BareBorderVolumePtr;
399 class SMESHCONTROLS_EXPORT BareBorderFace: public Predicate
402 BareBorderFace():myMesh(0) {}
403 virtual void SetMesh( const SMDS_Mesh* theMesh ) { myMesh = theMesh; }
404 virtual SMDSAbs_ElementType GetType() const { return SMDSAbs_Face; }
405 virtual bool IsSatisfy( long theElementId );
407 const SMDS_Mesh* myMesh;
408 std::vector< const SMDS_MeshNode* > myLinkNodes;
410 typedef boost::shared_ptr<BareBorderFace> BareBorderFacePtr;
414 Description : Predicate for free Edges
416 class SMESHCONTROLS_EXPORT FreeEdges: public virtual Predicate{
419 virtual void SetMesh( const SMDS_Mesh* theMesh );
420 virtual bool IsSatisfy( long theElementId );
421 virtual SMDSAbs_ElementType GetType() const;
422 static bool IsFreeEdge( const SMDS_MeshNode** theNodes, const int theFaceId );
423 typedef long TElemId;
427 Border(long theElemId, long thePntId1, long thePntId2);
428 bool operator<(const Border& x) const;
430 typedef std::set<Border> TBorders;
431 void GetBoreders(TBorders& theBorders);
434 const SMDS_Mesh* myMesh;
436 typedef boost::shared_ptr<FreeEdges> FreeEdgesPtr;
441 Description : Predicate for free nodes
443 class SMESHCONTROLS_EXPORT FreeNodes: public virtual Predicate{
446 virtual void SetMesh( const SMDS_Mesh* theMesh );
447 virtual bool IsSatisfy( long theNodeId );
448 virtual SMDSAbs_ElementType GetType() const;
451 const SMDS_Mesh* myMesh;
457 Description : Predicate for Range of Ids.
458 Range may be specified with two ways.
459 1. Using AddToRange method
460 2. With SetRangeStr method. Parameter of this method is a string
461 like as "1,2,3,50-60,63,67,70-"
463 class SMESHCONTROLS_EXPORT RangeOfIds: public virtual Predicate
467 virtual void SetMesh( const SMDS_Mesh* theMesh );
468 virtual bool IsSatisfy( long theNodeId );
469 virtual SMDSAbs_ElementType GetType() const;
470 virtual void SetType( SMDSAbs_ElementType theType );
472 bool AddToRange( long theEntityId );
473 void GetRangeStr( TCollection_AsciiString& );
474 bool SetRangeStr( const TCollection_AsciiString& );
477 const SMDS_Mesh* myMesh;
479 TColStd_SequenceOfInteger myMin;
480 TColStd_SequenceOfInteger myMax;
481 TColStd_MapOfInteger myIds;
483 SMDSAbs_ElementType myType;
486 typedef boost::shared_ptr<RangeOfIds> RangeOfIdsPtr;
491 Description : Base class for comparators
493 class SMESHCONTROLS_EXPORT Comparator: public virtual Predicate{
496 virtual ~Comparator();
497 virtual void SetMesh( const SMDS_Mesh* theMesh );
498 virtual void SetMargin(double theValue);
499 virtual void SetNumFunctor(NumericalFunctorPtr theFunct);
500 virtual bool IsSatisfy( long theElementId ) = 0;
501 virtual SMDSAbs_ElementType GetType() const;
506 NumericalFunctorPtr myFunctor;
508 typedef boost::shared_ptr<Comparator> ComparatorPtr;
513 Description : Comparator "<"
515 class SMESHCONTROLS_EXPORT LessThan: public virtual Comparator{
517 virtual bool IsSatisfy( long theElementId );
523 Description : Comparator ">"
525 class SMESHCONTROLS_EXPORT MoreThan: public virtual Comparator{
527 virtual bool IsSatisfy( long theElementId );
533 Description : Comparator "="
535 class SMESHCONTROLS_EXPORT EqualTo: public virtual Comparator{
538 virtual bool IsSatisfy( long theElementId );
539 virtual void SetTolerance( double theTol );
540 virtual double GetTolerance();
545 typedef boost::shared_ptr<EqualTo> EqualToPtr;
550 Description : Logical NOT predicate
552 class SMESHCONTROLS_EXPORT LogicalNOT: public virtual Predicate{
555 virtual ~LogicalNOT();
556 virtual bool IsSatisfy( long theElementId );
557 virtual void SetMesh( const SMDS_Mesh* theMesh );
558 virtual void SetPredicate(PredicatePtr thePred);
559 virtual SMDSAbs_ElementType GetType() const;
562 PredicatePtr myPredicate;
564 typedef boost::shared_ptr<LogicalNOT> LogicalNOTPtr;
568 Class : LogicalBinary
569 Description : Base class for binary logical predicate
571 class SMESHCONTROLS_EXPORT LogicalBinary: public virtual Predicate{
574 virtual ~LogicalBinary();
575 virtual void SetMesh( const SMDS_Mesh* theMesh );
576 virtual void SetPredicate1(PredicatePtr thePred);
577 virtual void SetPredicate2(PredicatePtr thePred);
578 virtual SMDSAbs_ElementType GetType() const;
581 PredicatePtr myPredicate1;
582 PredicatePtr myPredicate2;
584 typedef boost::shared_ptr<LogicalBinary> LogicalBinaryPtr;
589 Description : Logical AND
591 class SMESHCONTROLS_EXPORT LogicalAND: public virtual LogicalBinary{
593 virtual bool IsSatisfy( long theElementId );
599 Description : Logical OR
601 class SMESHCONTROLS_EXPORT LogicalOR: public virtual LogicalBinary{
603 virtual bool IsSatisfy( long theElementId );
609 Description : Predicate for manifold part of mesh
611 class SMESHCONTROLS_EXPORT ManifoldPart: public virtual Predicate{
614 /* internal class for algorithm uses */
618 Link( SMDS_MeshNode* theNode1,
619 SMDS_MeshNode* theNode2 );
622 bool IsEqual( const ManifoldPart::Link& theLink ) const;
623 bool operator<(const ManifoldPart::Link& x) const;
625 SMDS_MeshNode* myNode1;
626 SMDS_MeshNode* myNode2;
629 bool IsEqual( const ManifoldPart::Link& theLink1,
630 const ManifoldPart::Link& theLink2 );
632 typedef std::set<ManifoldPart::Link> TMapOfLink;
633 typedef std::vector<SMDS_MeshFace*> TVectorOfFacePtr;
634 typedef std::vector<ManifoldPart::Link> TVectorOfLink;
635 typedef std::map<SMDS_MeshFace*,int> TDataMapFacePtrInt;
636 typedef std::map<ManifoldPart::Link,SMDS_MeshFace*> TDataMapOfLinkFacePtr;
640 virtual void SetMesh( const SMDS_Mesh* theMesh );
641 // inoke when all parameters already set
642 virtual bool IsSatisfy( long theElementId );
643 virtual SMDSAbs_ElementType GetType() const;
645 void SetAngleTolerance( const double theAngToler );
646 double GetAngleTolerance() const;
647 void SetIsOnlyManifold( const bool theIsOnly );
648 void SetStartElem( const long theStartElemId );
652 bool findConnected( const TDataMapFacePtrInt& theAllFacePtrInt,
653 SMDS_MeshFace* theStartFace,
654 TMapOfLink& theNonManifold,
655 TColStd_MapOfInteger& theResFaces );
656 bool isInPlane( const SMDS_MeshFace* theFace1,
657 const SMDS_MeshFace* theFace2 );
658 void expandBoundary( TMapOfLink& theMapOfBoundary,
659 TVectorOfLink& theSeqOfBoundary,
660 TDataMapOfLinkFacePtr& theDMapLinkFacePtr,
661 TMapOfLink& theNonManifold,
662 SMDS_MeshFace* theNextFace ) const;
664 void getFacesByLink( const Link& theLink,
665 TVectorOfFacePtr& theFaces ) const;
668 const SMDS_Mesh* myMesh;
669 TColStd_MapOfInteger myMapIds;
670 TColStd_MapOfInteger myMapBadGeomIds;
671 TVectorOfFacePtr myAllFacePtr;
672 TDataMapFacePtrInt myAllFacePtrIntDMap;
674 bool myIsOnlyManifold;
678 typedef boost::shared_ptr<ManifoldPart> ManifoldPartPtr;
682 Class : ElementsOnSurface
683 Description : Predicate elements that lying on indicated surface
686 class SMESHCONTROLS_EXPORT ElementsOnSurface : public virtual Predicate {
689 ~ElementsOnSurface();
690 virtual void SetMesh( const SMDS_Mesh* theMesh );
691 virtual bool IsSatisfy( long theElementId );
692 virtual SMDSAbs_ElementType GetType() const;
694 void SetTolerance( const double theToler );
695 double GetTolerance() const;
696 void SetSurface( const TopoDS_Shape& theShape,
697 const SMDSAbs_ElementType theType );
698 void SetUseBoundaries( bool theUse );
699 bool GetUseBoundaries() const { return myUseBoundaries; }
703 void process( const SMDS_MeshElement* theElem );
704 bool isOnSurface( const SMDS_MeshNode* theNode );
707 const SMDS_Mesh* myMesh;
708 TColStd_MapOfInteger myIds;
709 SMDSAbs_ElementType myType;
710 //Handle(Geom_Surface) mySurf;
713 bool myUseBoundaries;
714 GeomAPI_ProjectPointOnSurf myProjector;
717 typedef boost::shared_ptr<ElementsOnSurface> ElementsOnSurfacePtr;
721 Class : ElementsOnShape
722 Description : Predicate elements that lying on indicated shape
725 class SMESHCONTROLS_EXPORT ElementsOnShape : public virtual Predicate
731 virtual void SetMesh (const SMDS_Mesh* theMesh);
732 virtual bool IsSatisfy (long theElementId);
733 virtual SMDSAbs_ElementType GetType() const;
735 void SetTolerance (const double theToler);
736 double GetTolerance() const;
737 void SetAllNodes (bool theAllNodes);
738 bool GetAllNodes() const { return myAllNodesFlag; }
739 void SetShape (const TopoDS_Shape& theShape,
740 const SMDSAbs_ElementType theType);
743 void addShape (const TopoDS_Shape& theShape);
745 void process (const SMDS_MeshElement* theElem);
748 const SMDS_Mesh* myMesh;
749 TColStd_MapOfInteger myIds;
750 SMDSAbs_ElementType myType;
751 TopoDS_Shape myShape;
755 TopTools_MapOfShape myShapesMap;
756 TopAbs_ShapeEnum myCurShapeType; // type of current sub-shape
757 BRepClass3d_SolidClassifier myCurSC; // current SOLID
758 GeomAPI_ProjectPointOnSurf myCurProjFace; // current FACE
759 TopoDS_Face myCurFace; // current FACE
760 GeomAPI_ProjectPointOnCurve myCurProjEdge; // current EDGE
761 gp_Pnt myCurPnt; // current VERTEX
764 typedef boost::shared_ptr<ElementsOnShape> ElementsOnShapePtr;
769 Description : Predicate for free faces
771 class SMESHCONTROLS_EXPORT FreeFaces: public virtual Predicate{
774 virtual void SetMesh( const SMDS_Mesh* theMesh );
775 virtual bool IsSatisfy( long theElementId );
776 virtual SMDSAbs_ElementType GetType() const;
779 const SMDS_Mesh* myMesh;
783 Class : LinearOrQuadratic
784 Description : Predicate for free faces
786 class SMESHCONTROLS_EXPORT LinearOrQuadratic: public virtual Predicate{
789 virtual void SetMesh( const SMDS_Mesh* theMesh );
790 virtual bool IsSatisfy( long theElementId );
791 void SetType( SMDSAbs_ElementType theType );
792 virtual SMDSAbs_ElementType GetType() const;
795 const SMDS_Mesh* myMesh;
796 SMDSAbs_ElementType myType;
798 typedef boost::shared_ptr<LinearOrQuadratic> LinearOrQuadraticPtr;
802 Description : Functor for check color of group to whic mesh element belongs to
804 class SMESHCONTROLS_EXPORT GroupColor: public virtual Predicate{
807 virtual void SetMesh( const SMDS_Mesh* theMesh );
808 virtual bool IsSatisfy( long theElementId );
809 void SetType( SMDSAbs_ElementType theType );
810 virtual SMDSAbs_ElementType GetType() const;
811 void SetColorStr( const TCollection_AsciiString& );
812 void GetColorStr( TCollection_AsciiString& ) const;
815 typedef std::set< long > TIDs;
817 Quantity_Color myColor;
818 SMDSAbs_ElementType myType;
821 typedef boost::shared_ptr<GroupColor> GroupColorPtr;
825 Description : Predicate to check element geometry type
827 class SMESHCONTROLS_EXPORT ElemGeomType: public virtual Predicate{
830 virtual void SetMesh( const SMDS_Mesh* theMesh );
831 virtual bool IsSatisfy( long theElementId );
832 void SetType( SMDSAbs_ElementType theType );
833 virtual SMDSAbs_ElementType GetType() const;
834 void SetGeomType( SMDSAbs_GeometryType theType );
835 virtual SMDSAbs_GeometryType GetGeomType() const;
838 const SMDS_Mesh* myMesh;
839 SMDSAbs_ElementType myType;
840 SMDSAbs_GeometryType myGeomType;
842 typedef boost::shared_ptr<ElemGeomType> ElemGeomTypePtr;
847 class SMESHCONTROLS_EXPORT Filter{
851 virtual void SetPredicate(PredicatePtr thePred);
853 typedef std::vector<long> TIdSequence;
857 GetElementsId( const SMDS_Mesh* theMesh,
858 TIdSequence& theSequence );
862 GetElementsId( const SMDS_Mesh* theMesh,
863 PredicatePtr thePredicate,
864 TIdSequence& theSequence );
867 PredicatePtr myPredicate;