X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_CartesianParameters3D.cxx;h=6b3e24ed40333b95b7fe6402b071c38486e5595d;hb=836cce91b5db7460eb99acba49080a8b0f8fd85a;hp=ea5f440cc8cca93ae7e1bffa801260ae6ffa0cda;hpb=8a9d91b414c3f26586dea735c22c7700898a0a1e;p=modules%2Fsmesh.git diff --git a/src/StdMeshers/StdMeshers_CartesianParameters3D.cxx b/src/StdMeshers/StdMeshers_CartesianParameters3D.cxx index ea5f440cc..6b3e24ed4 100644 --- a/src/StdMeshers/StdMeshers_CartesianParameters3D.cxx +++ b/src/StdMeshers/StdMeshers_CartesianParameters3D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2020 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 @@ -64,7 +64,10 @@ StdMeshers_CartesianParameters3D::StdMeshers_CartesianParameters3D(int h SMESH_Gen * gen) : SMESH_Hypothesis(hypId, gen), _sizeThreshold( 4.0 ), // default according to the customer specification - _toAddEdges( false ) + _toAddEdges( false ), + _toConsiderInternalFaces( false ), + _toUseThresholdForInternalFaces( false ), + _toCreateFaces( false ) { _name = "CartesianParameters3D"; // used by "Cartesian_3D" _param_algo_dim = 3; // 3D @@ -130,7 +133,6 @@ namespace void checkGridSpacing(std::vector& spaceFunctions, std::vector& internalPoints, const std::string& axis) - throw ( SALOME_Exception ) { if ( spaceFunctions.empty() ) throw SALOME_Exception(SMESH_Comment("Empty space function for ") << axis ); @@ -167,7 +169,6 @@ namespace //======================================================================= void StdMeshers_CartesianParameters3D::SetGrid(std::vector& coords, int axis) - throw ( SALOME_Exception ) { checkAxis( axis ); @@ -195,7 +196,6 @@ void StdMeshers_CartesianParameters3D::SetGrid(std::vector& coords, int void StdMeshers_CartesianParameters3D::SetGridSpacing(std::vector& xSpaceFuns, std::vector& xInternalPoints, const int axis) - throw ( SALOME_Exception ) { checkAxis( axis ); @@ -249,7 +249,6 @@ bool StdMeshers_CartesianParameters3D::GetFixedPoint(double p[3]) const //======================================================================= void StdMeshers_CartesianParameters3D::SetSizeThreshold(const double threshold) - throw ( SALOME_Exception ) { if ( threshold <= 1.0 ) throw SALOME_Exception(LOCALIZED("threshold must be > 1.0")); @@ -269,7 +268,6 @@ void StdMeshers_CartesianParameters3D::SetSizeThreshold(const double threshold) void StdMeshers_CartesianParameters3D::GetGridSpacing(std::vector& spaceFunctions, std::vector& internalPoints, const int axis) const - throw ( SALOME_Exception ) { if ( !IsGridBySpacing(axis) ) throw SALOME_Exception(LOCALIZED("The grid is defined by coordinates and not by spacing")); @@ -283,7 +281,6 @@ void StdMeshers_CartesianParameters3D::GetGridSpacing(std::vector& //======================================================================= bool StdMeshers_CartesianParameters3D::IsGridBySpacing(const int axis) const - throw ( SALOME_Exception ) { checkAxis(axis); return !_spaceFunctions[axis].empty(); @@ -302,7 +299,6 @@ void StdMeshers_CartesianParameters3D::ComputeCoordinates(const double x0, vector& coords, const string& axis, const double* xForced ) - throw ( SALOME_Exception ) { checkGridSpacing( theSpaceFuns, thePoints, axis ); @@ -401,7 +397,6 @@ void StdMeshers_CartesianParameters3D::GetCoordinates(std::vector& xNode std::vector& yNodes, std::vector& zNodes, const Bnd_Box& bndBox) const - throw ( SALOME_Exception ) { double x0,y0,z0, x1,y1,z1; if ( IsGridBySpacing(0) || IsGridBySpacing(1) || IsGridBySpacing(2)) @@ -652,7 +647,6 @@ ComputeOptimalAxesDirs(const TopoDS_Shape& shape, //======================================================================= void StdMeshers_CartesianParameters3D::SetAxisDirs(const double* the9DirComps) - throw ( SALOME_Exception ) { gp_Vec x( the9DirComps[0], the9DirComps[1], @@ -694,7 +688,6 @@ void StdMeshers_CartesianParameters3D::SetAxisDirs(const double* the9DirComps) //======================================================================= void StdMeshers_CartesianParameters3D::GetGrid(std::vector& coords, int axis) const - throw ( SALOME_Exception ) { if ( IsGridBySpacing(axis) ) throw SALOME_Exception(LOCALIZED("The grid is defined by spacing and not by coordinates")); @@ -739,6 +732,48 @@ bool StdMeshers_CartesianParameters3D::GetToAddEdges() const return _toAddEdges; } +//======================================================================= +//function : SetToConsiderInternalFaces +//purpose : Enables treatment of geom faces either shared by solids or internal +//======================================================================= + +void StdMeshers_CartesianParameters3D::SetToConsiderInternalFaces(bool toTreat) +{ + if ( _toConsiderInternalFaces != toTreat ) + { + _toConsiderInternalFaces = toTreat; + NotifySubMeshesHypothesisModification(); + } +} + +//======================================================================= +//function : SetToUseThresholdForInternalFaces +//purpose : Enables applying size threshold to grid cells cut by internal geom faces. +//======================================================================= + +void StdMeshers_CartesianParameters3D::SetToUseThresholdForInternalFaces(bool toUse) +{ + if ( _toUseThresholdForInternalFaces != toUse ) + { + _toUseThresholdForInternalFaces = toUse; + NotifySubMeshesHypothesisModification(); + } +} + +//======================================================================= +//function : SetToCreateFaces +//purpose : Enables creation of mesh faces. +//======================================================================= + +void StdMeshers_CartesianParameters3D::SetToCreateFaces(bool toCreate) +{ + if ( _toCreateFaces != toCreate ) + { + _toCreateFaces = toCreate; + NotifySubMeshesHypothesisModification(); + } +} + //======================================================================= //function : IsDefined //purpose : Return true if parameters are well defined @@ -786,12 +821,16 @@ std::ostream & StdMeshers_CartesianParameters3D::SaveTo(std::ostream & save) for ( int i = 0; i < 3; ++i ) save << _fixedPoint[i] << " "; + save << " " << _toConsiderInternalFaces + << " " << _toUseThresholdForInternalFaces + << " " << _toCreateFaces; + return save; } //======================================================================= //function : LoadFrom -//purpose : resore my parameters from a stream +//purpose : restore my parameters from a stream //======================================================================= std::istream & StdMeshers_CartesianParameters3D::LoadFrom(std::istream & load) @@ -844,6 +883,12 @@ std::istream & StdMeshers_CartesianParameters3D::LoadFrom(std::istream & load) for ( int i = 0; i < 3 && ok ; ++i ) ok = static_cast( load >> _fixedPoint[i]); + if ( load >> _toConsiderInternalFaces ) + { + load >> _toUseThresholdForInternalFaces; + load >> _toCreateFaces; + } + return load; }