Version: 9.16.0
SMESH_Hypothesis.hxx
Go to the documentation of this file.
1// Copyright (C) 2007-2026 CEA, EDF, OPEN CASCADE
2//
3// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5//
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, or (at your option) any later version.
10//
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.
15//
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
19//
20// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21//
22
23// SMESH SMESH : implementation of SMESH idl descriptions
24// File : SMESH_Hypothesis.hxx
25// Author : Paul RASCLE, EDF
26// Module : SMESH
27//
28#ifndef _SMESH_HYPOTHESIS_HXX_
29#define _SMESH_HYPOTHESIS_HXX_
30
31#include "SMESH_SMESH.hxx"
32
34
35class SMESH_Gen;
36class TopoDS_Shape;
37class SMESH_Mesh;
38
39enum MeshDimension // dimension of mesh
40{
45};
46
48{
49public:
50 enum Hypothesis_Status // in the order of severity
51 {
52 HYP_OK = 0,
53 HYP_MISSING, // algo misses a hypothesis
54 HYP_CONCURRENT, // several applicable hypotheses assigned to father shapes
55 HYP_BAD_PARAMETER,// hypothesis has a bad parameter value
56 HYP_HIDDEN_ALGO, // an algo is hidden by an upper dim algo generating all-dim elements
57 HYP_HIDING_ALGO, // an algo hides lower dim algos by generating all-dim elements
58 HYP_UNKNOWN_FATAL,// --- all statuses below should be considered as fatal
59 // for Add/RemoveHypothesis operations
60 HYP_INCOMPATIBLE, // hypothesis does not fit algo
61 HYP_NOTCONFORM, // not conform mesh is produced applying a hypothesis
62 HYP_ALREADY_EXIST,// several applicable hypothesis of same priority assigned
63 HYP_BAD_DIM, // bad dimension
64 HYP_BAD_SUBSHAPE, // shape is neither the main one, nor its sub-shape, nor a group
65 HYP_BAD_GEOMETRY, // shape geometry mismatches algorithm's expectation
66 HYP_NEED_SHAPE, // algorithm can work on shape only
67 HYP_INCOMPAT_HYPS // several additional hypotheses are incompatible one with other
68 };
69 static bool IsStatusFatal(Hypothesis_Status theStatus)
70 { return theStatus >= HYP_UNKNOWN_FATAL; }
71
72 SMESH_Hypothesis(int hypId, SMESH_Gen* gen);
73 virtual ~SMESH_Hypothesis();
74 virtual int GetDim() const;
75 SMESH_Gen* GetGen() const { return (SMESH_Gen*) _gen; }
76 virtual int GetShapeType() const;
77 virtual const char* GetLibName() const;
78 virtual void NotifySubMeshesHypothesisModification();
79 void SetLibName(const char* theLibName);
80
88 virtual bool DataDependOnParams() const { return false; }
89
96 virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape)=0;
97
98 enum InitWay { BY_MESH, BY_GEOM, BY_AVERAGE_LENGTH };
99 struct TDefaults
100 {
105 double _diagonal;
106 TopoDS_Shape* _shape; // future shape of the mesh being created
107
109 _way(BY_GEOM), _elemLength(0),_nbSegments(0),_quadDominated(false),_diagonal(0),_shape(0) {}
110 };
115 virtual bool SetParametersByDefaults(const TDefaults& dflts, const SMESH_Mesh* theMesh=0)=0;
116
125 virtual bool IsAuxiliary() const
126 { return GetType() == PARAM_ALGO && _param_algo_dim < 0; }
127
131 SMESH_Mesh* GetMeshByPersistentID(int id) const;
132
133protected:
136 int _param_algo_dim; // to be set at descendant hypothesis constructor
137
138private:
139 std::string _libName; // name of library of plug-in Engine
140 //std::string _parameters;
141 //std::string _lastParameters;
142};
143
144#endif
MeshDimension
Definition: SMESH_Hypothesis.hxx:40
@ MeshDim_0D
Definition: SMESH_Hypothesis.hxx:41
@ MeshDim_1D
Definition: SMESH_Hypothesis.hxx:42
@ MeshDim_2D
Definition: SMESH_Hypothesis.hxx:43
@ MeshDim_3D
Definition: SMESH_Hypothesis.hxx:44
#define SMESH_EXPORT
Definition: SMESH_SMESH.hxx:37
Definition: SMESHDS_Hypothesis.hxx:37
int GetType() const
Definition: SMESHDS_Hypothesis.cxx:84
Definition: SMESH_Gen.hxx:68
Definition: SMESH_Hypothesis.hxx:48
static bool IsStatusFatal(Hypothesis_Status theStatus)
Definition: SMESH_Hypothesis.hxx:69
Hypothesis_Status
Definition: SMESH_Hypothesis.hxx:51
@ HYP_MISSING
Definition: SMESH_Hypothesis.hxx:53
@ HYP_HIDDEN_ALGO
Definition: SMESH_Hypothesis.hxx:56
@ HYP_CONCURRENT
Definition: SMESH_Hypothesis.hxx:54
@ HYP_BAD_PARAMETER
Definition: SMESH_Hypothesis.hxx:55
@ HYP_ALREADY_EXIST
Definition: SMESH_Hypothesis.hxx:62
@ HYP_BAD_DIM
Definition: SMESH_Hypothesis.hxx:63
@ HYP_HIDING_ALGO
Definition: SMESH_Hypothesis.hxx:57
@ HYP_UNKNOWN_FATAL
Definition: SMESH_Hypothesis.hxx:58
@ HYP_NOTCONFORM
Definition: SMESH_Hypothesis.hxx:61
@ HYP_BAD_SUBSHAPE
Definition: SMESH_Hypothesis.hxx:64
@ HYP_BAD_GEOMETRY
Definition: SMESH_Hypothesis.hxx:65
@ HYP_INCOMPATIBLE
Definition: SMESH_Hypothesis.hxx:60
@ HYP_NEED_SHAPE
Definition: SMESH_Hypothesis.hxx:66
InitWay
Definition: SMESH_Hypothesis.hxx:98
int _shapeType
Definition: SMESH_Hypothesis.hxx:135
SMESH_Gen * _gen
Definition: SMESH_Hypothesis.hxx:134
virtual bool SetParametersByDefaults(const TDefaults &dflts, const SMESH_Mesh *theMesh=0)=0
Initialize my parameter values by default parameters.
std::string _libName
Definition: SMESH_Hypothesis.hxx:139
virtual bool DataDependOnParams() const
The returned value is used by NotifySubMeshesHypothesisModification() to decide to call subMesh->Algo...
Definition: SMESH_Hypothesis.hxx:88
virtual bool IsAuxiliary() const
Return true if me is an auxiliary hypothesis.
Definition: SMESH_Hypothesis.hxx:125
virtual bool SetParametersByMesh(const SMESH_Mesh *theMesh, const TopoDS_Shape &theShape)=0
Initialize my parameter values by the mesh built on the geometry.
SMESH_Gen * GetGen() const
Definition: SMESH_Hypothesis.hxx:75
int _param_algo_dim
Definition: SMESH_Hypothesis.hxx:136
Definition: SMESH_Mesh.hxx:80
@ HYP_INCOMPAT_HYPS
Definition: SMESH_Mesh.idl:224
@ HYP_UNKNOWN_FATAL
Definition: SMESH_Mesh.idl:215
@ HYP_OK
Definition: SMESH_Mesh.idl:209
Definition: SMESH_Hypothesis.hxx:100
double _elemLength
Definition: SMESH_Hypothesis.hxx:102
bool _quadDominated
Definition: SMESH_Hypothesis.hxx:104
TDefaults()
Definition: SMESH_Hypothesis.hxx:108
int _nbSegments
Definition: SMESH_Hypothesis.hxx:103
double _diagonal
Definition: SMESH_Hypothesis.hxx:105
InitWay _way
Definition: SMESH_Hypothesis.hxx:101
TopoDS_Shape * _shape
Definition: SMESH_Hypothesis.hxx:106