Salome HOME
Copyright update 2021
[modules/smesh.git] / src / StdMeshers_I / StdMeshers_CartesianParameters3D_i.cxx
index ec36baf67f39d58c8aeaa5d5195f27895d923d1e..e8259c6822548d2ab5211d6a3096e660e35309ad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2019  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021  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
@@ -87,7 +87,7 @@ StdMeshers_CartesianParameters3D_i::~StdMeshers_CartesianParameters3D_i()
 
 void StdMeshers_CartesianParameters3D_i::SetGrid(const SMESH::double_array& coords,
                                                  CORBA::Short               axis)
-  throw (SALOME::SALOME_Exception)
+  
 {
   std::vector<double> coordVec;//, yCoords, zCoords;
   _array2vec( coords, coordVec, );
@@ -111,7 +111,7 @@ void StdMeshers_CartesianParameters3D_i::SetGrid(const SMESH::double_array& coor
 //=============================================================================
 
 SMESH::double_array* StdMeshers_CartesianParameters3D_i::GetGrid(CORBA::Short axis)
-  throw (SALOME::SALOME_Exception)
+  
 {
   std::vector<double> coordVec;
   ASSERT( myBaseImpl );
@@ -135,7 +135,7 @@ SMESH::double_array* StdMeshers_CartesianParameters3D_i::GetGrid(CORBA::Short ax
 //=============================================================================
 
 void StdMeshers_CartesianParameters3D_i::SetSizeThreshold(CORBA::Double threshold)
-  throw (SALOME::SALOME_Exception)
+  
 {
   ASSERT( myBaseImpl );
   try {
@@ -172,7 +172,7 @@ CORBA::Double StdMeshers_CartesianParameters3D_i::GetSizeThreshold()
 void StdMeshers_CartesianParameters3D_i::SetGridSpacing(const SMESH::string_array& spaceFunctions,
                                                         const SMESH::double_array& internalPoints,
                                                         CORBA::Short               axis)
-  throw (SALOME::SALOME_Exception)
+  
 {
   std::vector<std::string> funVec;
   std::vector<double>      pointVec;
@@ -201,7 +201,7 @@ void StdMeshers_CartesianParameters3D_i::SetGridSpacing(const SMESH::string_arra
 void StdMeshers_CartesianParameters3D_i::GetGridSpacing(SMESH::string_array_out xSpaceFunctions,
                                                         SMESH::double_array_out xInternalPoints,
                                                         CORBA::Short            axis)
-  throw (SALOME::SALOME_Exception)
+  
 {
   ASSERT( myBaseImpl );
   try {
@@ -228,7 +228,7 @@ void StdMeshers_CartesianParameters3D_i::GetGridSpacing(SMESH::string_array_out
 void StdMeshers_CartesianParameters3D_i::SetAxesDirs(const SMESH::DirStruct& xDir,
                                                      const SMESH::DirStruct& yDir,
                                                      const SMESH::DirStruct& zDir)
-  throw (SALOME::SALOME_Exception)
+  
 {
   double coords[9];
   coords[0] = xDir.PS.x;
@@ -240,6 +240,14 @@ void StdMeshers_CartesianParameters3D_i::SetAxesDirs(const SMESH::DirStruct& xDi
   coords[6] = zDir.PS.x;
   coords[7] = zDir.PS.y;
   coords[8] = zDir.PS.z;
+
+  const double* oldCoords = GetImpl()->GetAxisDirs();
+  bool isSame = true;
+  for ( int i = 0; i < 9 &&  isSame; ++i )
+    isSame = ( oldCoords[i] == coords[i] );
+  if ( isSame )
+    return;
+
   try {
     this->GetImpl()->SetAxisDirs(coords);
 
@@ -283,6 +291,11 @@ void StdMeshers_CartesianParameters3D_i::GetAxesDirs(SMESH::DirStruct& xDir,
 void StdMeshers_CartesianParameters3D_i::SetFixedPoint(const SMESH::PointStruct& ps,
                                                        CORBA::Boolean            toUnset)
 {
+  SMESH::PointStruct oldPS;
+  GetFixedPoint( oldPS );
+  if ( oldPS.x == ps.x && oldPS.y == ps.y && oldPS.z == ps.z )
+    return;
+
   double p[3] = { ps.x, ps.y, ps.z };
   GetImpl()->SetFixedPoint( p, toUnset );
 
@@ -335,6 +348,76 @@ CORBA::Boolean StdMeshers_CartesianParameters3D_i::GetToAddEdges()
   return GetImpl()->GetToAddEdges();
 }
 
+//=======================================================================
+//function : SetToConsiderInternalFaces
+//purpose  : Enables treatment of geom faces, either shared by solids or internal.
+//=======================================================================
+
+void  StdMeshers_CartesianParameters3D_i::SetToConsiderInternalFaces(CORBA::Boolean toTreat)
+{
+  if ( GetToConsiderInternalFaces() == toTreat )
+    return;
+  GetImpl()->SetToConsiderInternalFaces( toTreat );
+  SMESH::TPythonDump() << _this() << ".SetToConsiderInternalFaces( " << toTreat << " )";
+}
+
+//=======================================================================
+//function : GetToConsiderInternalFaces
+//purpose  : Return true if treatment of internal geom faces is enabled
+//=======================================================================
+
+CORBA::Boolean  StdMeshers_CartesianParameters3D_i::GetToConsiderInternalFaces()
+{
+  return GetImpl()->GetToConsiderInternalFaces();
+}
+
+//=======================================================================
+//function : SetToUseThresholdForInternalFaces
+//purpose  : Enables applying size threshold to grid cells cut by internal geom faces.
+//=======================================================================
+
+void  StdMeshers_CartesianParameters3D_i::SetToUseThresholdForInternalFaces(CORBA::Boolean toUse)
+{
+  if ( GetToUseThresholdForInternalFaces() == toUse )
+    return;
+  GetImpl()->SetToUseThresholdForInternalFaces( toUse );
+  SMESH::TPythonDump() << _this() << ".SetToUseThresholdForInternalFaces( " << toUse << " )";
+}
+
+//=======================================================================
+//function : GetToUseThresholdForInternalFaces
+//purpose  : Return true if applying size threshold to grid cells cut by
+//           internal geom faces is enabled
+//=======================================================================
+
+CORBA::Boolean StdMeshers_CartesianParameters3D_i::GetToUseThresholdForInternalFaces()
+{
+  return GetImpl()->GetToUseThresholdForInternalFaces();
+}
+
+//=======================================================================
+//function : SetToCreateFaces
+//purpose  : Enables creation of mesh faces.
+//=======================================================================
+
+void  StdMeshers_CartesianParameters3D_i::SetToCreateFaces(CORBA::Boolean toCreate)
+{
+  if ( GetToCreateFaces() == toCreate )
+    return;
+  GetImpl()->SetToCreateFaces( toCreate );
+  SMESH::TPythonDump() << _this() << ".SetToCreateFaces( " << toCreate << " )";
+}
+
+//=======================================================================
+//function : GetToCreateFaces
+//purpose  : Check if creation of mesh faces enabled
+//=======================================================================
+
+CORBA::Boolean StdMeshers_CartesianParameters3D_i::GetToCreateFaces()
+{
+  return GetImpl()->GetToCreateFaces();
+}
+
 //=======================================================================
 //function : IsGridBySpacing
 //purpose  : Return true if the grid is defined by spacing functions and
@@ -357,7 +440,7 @@ ComputeOptimalAxesDirs(GEOM::GEOM_Object_ptr go,
                        SMESH::DirStruct&     xDir,
                        SMESH::DirStruct&     yDir,
                        SMESH::DirStruct&     zDir)
-  throw (SALOME::SALOME_Exception)
+  
 {
   TopoDS_Shape shape = SMESH_Gen_i::GetSMESHGen()->GeomObjectToShape( go );
   if ( shape.IsNull() )
@@ -388,7 +471,7 @@ StdMeshers_CartesianParameters3D_i::ComputeCoordinates(CORBA::Double
                                                        const SMESH::string_array& spaceFuns,
                                                        const SMESH::double_array& points,
                                                        const char*                axisName )
-  throw (SALOME::SALOME_Exception)
+  
 {
   std::vector<std::string> xFuns;
   std::vector<double>      xPoints, coords;