1 // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
\r
3 // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
\r
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
\r
6 // This library is free software; you can redistribute it and/or
\r
7 // modify it under the terms of the GNU Lesser General Public
\r
8 // License as published by the Free Software Foundation; either
\r
9 // version 2.1 of the License.
\r
11 // This library is distributed in the hope that it will be useful,
\r
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
\r
14 // Lesser General Public License for more details.
\r
16 // You should have received a copy of the GNU Lesser General Public
\r
17 // License along with this library; if not, write to the Free Software
\r
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
\r
20 // See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
\r
24 // File : SMESH_Filter_i.hxx
\r
25 // Author : Alexey Petrov, OCC
\r
28 #ifndef _SMESH_FILTER_I_HXX_
\r
29 #define _SMESH_FILTER_I_HXX_
\r
31 #include <SALOMEconfig.h>
\r
32 #include CORBA_SERVER_HEADER(SMESH_Filter)
\r
33 #include "SALOME_GenericObj_i.hh"
\r
38 class TColgp_SequenceOfXYZ;
\r
47 Class : NumericalFunctor_i
\r
48 Description : Base class for numerical functors
\r
50 PortableServer::POA_ptr thePOA
\r
54 class NumericalFunctor_i: public virtual POA_SMESH::NumericalFunctor,
\r
55 public virtual SALOME::GenericObj_i
\r
58 NumericalFunctor_i();
\r
59 void SetMesh( SMESH_Mesh_ptr theMesh );
\r
60 virtual int GetType() const = 0;
\r
63 bool getPoints( const int theId,
\r
64 TColgp_SequenceOfXYZ& theRes ) const;
\r
66 SMESHDS_Mesh* myMesh;
\r
70 Class : SMESH_MinimumAngleFunct
\r
71 Description : Functor for calculation of minimum angle
\r
74 class MinimumAngle_i: public virtual POA_SMESH::MinimumAngle,
\r
75 public virtual NumericalFunctor_i
\r
78 CORBA::Double GetValue( CORBA::Long theElementId );
\r
79 virtual int GetType() const;
\r
83 Class : AspectRatio_i
\r
84 Description : Functor for calculating aspect ratio
\r
87 class AspectRatio_i: public virtual POA_SMESH::AspectRatio,
\r
88 public virtual NumericalFunctor_i
\r
91 CORBA::Double GetValue(CORBA::Long theElementId);
\r
92 virtual int GetType() const;
\r
97 Description : Functor for calculating warping
\r
100 class Warping_i: public virtual POA_SMESH::Warping,
\r
101 public virtual NumericalFunctor_i
\r
104 CORBA::Double GetValue(CORBA::Long theElementId);
\r
105 virtual int GetType() const;
\r
108 double ComputeA( const gp_XYZ&, const gp_XYZ&,
\r
109 const gp_XYZ&, const gp_XYZ& ) const;
\r
114 Description : Functor for calculating taper
\r
117 class Taper_i: public virtual POA_SMESH::Taper,
\r
118 public virtual NumericalFunctor_i
\r
121 CORBA::Double GetValue( CORBA::Long theElementId );
\r
122 virtual int GetType() const;
\r
127 Description : Functor for calculating skew in degrees
\r
130 class Skew_i: public virtual POA_SMESH::Skew,
\r
131 public virtual NumericalFunctor_i
\r
134 CORBA::Double GetValue( CORBA::Long theElementId );
\r
135 virtual int GetType() const;
\r
140 Description : Functor for calculating area
\r
143 class Area_i: public virtual POA_SMESH::Area,
\r
144 public virtual NumericalFunctor_i
\r
147 CORBA::Double GetValue( CORBA::Long theElementId );
\r
148 virtual int GetType() const;
\r
153 Description : Functor for calculating length of edge
\r
156 class Length_i: public virtual POA_SMESH::Length,
\r
157 public virtual NumericalFunctor_i
\r
160 CORBA::Double GetValue( CORBA::Long theElementId );
\r
161 virtual int GetType() const;
\r
165 Class : MultiConnection_i
\r
166 Description : Functor for calculating number of faces conneted to the edge
\r
169 class MultiConnection_i: public virtual POA_SMESH::MultiConnection,
\r
170 public virtual NumericalFunctor_i
\r
173 CORBA::Double GetValue( CORBA::Long theElementId );
\r
174 virtual int GetType() const;
\r
183 Class : Predicate_i
\r
184 Description : Base class for all predicates
\r
187 class Predicate_i: public virtual POA_SMESH::Predicate,
\r
188 public virtual SALOME::GenericObj_i
\r
192 virtual int GetType() const = 0;
\r
197 Class : FreeBorders_i
\r
198 Description : Predicate for free borders
\r
201 class FreeBorders_i: public virtual POA_SMESH::FreeBorders,
\r
202 public virtual Predicate_i
\r
206 void SetMesh( SMESH_Mesh_ptr theMesh );
\r
207 CORBA::Boolean IsSatisfy( CORBA::Long theElementId );
\r
208 virtual int GetType() const;
\r
211 SMESHDS_Mesh* myMesh;
\r
215 Class : Comparator_i
\r
216 Description : Base class for comparators
\r
219 class Comparator_i: public virtual POA_SMESH::Comparator,
\r
220 public virtual Predicate_i
\r
224 virtual ~Comparator_i();
\r
226 void SetMesh( SMESH_Mesh_ptr theMesh );
\r
227 void SetMargin( CORBA::Double );
\r
228 void SetNumFunctor( NumericalFunctor_ptr );
\r
230 virtual int GetType() const;
\r
233 CORBA::Double myMargin;
\r
234 NumericalFunctor_i* myFunctor;
\r
239 Description : Comparator "<"
\r
242 class LessThan_i: public virtual POA_SMESH::LessThan,
\r
243 public virtual Comparator_i
\r
246 CORBA::Boolean IsSatisfy( CORBA::Long theElementId );
\r
251 Description : Comparator ">"
\r
253 class MoreThan_i: public virtual POA_SMESH::MoreThan,
\r
254 public virtual Comparator_i
\r
257 CORBA::Boolean IsSatisfy( CORBA::Long theElementId );
\r
262 Description : Comparator "="
\r
264 class EqualTo_i: public virtual POA_SMESH::EqualTo,
\r
265 public virtual Comparator_i
\r
270 CORBA::Boolean IsSatisfy( CORBA::Long theElementId );
\r
272 void SetTolerance( CORBA::Double );
\r
275 CORBA::Double myToler;
\r
280 Description : Base class for logical predicate
\r
283 class Logical_i: public virtual POA_SMESH::Logical,
\r
284 public virtual Predicate_i
\r
290 Class : LogicalNOT_i
\r
291 Description : Logical NOT predicate
\r
294 class LogicalNOT_i: public virtual POA_SMESH::LogicalNOT,
\r
295 public virtual Logical_i
\r
299 virtual ~LogicalNOT_i();
\r
301 CORBA::Boolean IsSatisfy( CORBA::Long );
\r
303 void SetMesh( SMESH_Mesh_ptr );
\r
304 void SetPredicate( Predicate_ptr );
\r
306 virtual int GetType() const;
\r
309 Predicate_i* myPredicate;
\r
314 Class : LogicalBinary_i
\r
315 Description : Base class for binary logical predicate
\r
318 class LogicalBinary_i: public virtual POA_SMESH::LogicalBinary,
\r
319 public virtual Logical_i
\r
323 virtual ~LogicalBinary_i();
\r
325 void SetMesh( SMESH_Mesh_ptr );
\r
327 void SetPredicate1( Predicate_ptr );
\r
328 void SetPredicate2( Predicate_ptr );
\r
330 virtual int GetType() const;
\r
333 Predicate_i* myPredicate1;
\r
334 Predicate_i* myPredicate2;
\r
338 Class : LogicalAND_i
\r
339 Description : Logical AND
\r
342 class LogicalAND_i: public virtual POA_SMESH::LogicalAND,
\r
343 public virtual LogicalBinary_i
\r
346 CORBA::Boolean IsSatisfy( CORBA::Long theElementId );
\r
350 Class : LogicalOR_i
\r
351 Description : Logical OR
\r
354 class LogicalOR_i: public virtual POA_SMESH::LogicalOR,
\r
355 public virtual LogicalBinary_i
\r
358 CORBA::Boolean IsSatisfy( CORBA::Long theElementId );
\r
366 class Filter_i: public virtual POA_SMESH::Filter,
\r
367 public virtual SALOME::GenericObj_i
\r
371 virtual ~Filter_i();
\r
372 void SetPredicate(Predicate_ptr );
\r
373 long_array* GetElementsId(SMESH_Mesh_ptr );
\r
374 void SetMesh( SMESH_Mesh_ptr );
\r
377 Predicate_i* myPredicate;
\r
385 class FilterManager_i: public virtual POA_SMESH::FilterManager,
\r
386 public virtual SALOME::GenericObj_i
\r
390 MinimumAngle_ptr CreateMinimumAngle();
\r
391 AspectRatio_ptr CreateAspectRatio();
\r
392 Warping_ptr CreateWarping();
\r
393 Taper_ptr CreateTaper();
\r
394 Skew_ptr CreateSkew();
\r
395 Area_ptr CreateArea();
\r
396 Length_ptr CreateLength();
\r
397 MultiConnection_ptr CreateMultiConnection();
\r
399 FreeBorders_ptr CreateFreeBorders();
\r
401 LessThan_ptr CreateLessThan();
\r
402 MoreThan_ptr CreateMoreThan();
\r
403 EqualTo_ptr CreateEqualTo();
\r
405 LogicalNOT_ptr CreateLogicalNOT();
\r
406 LogicalAND_ptr CreateLogicalAND();
\r
407 LogicalOR_ptr CreateLogicalOR();
\r
409 Filter_ptr CreateFilter();
\r