X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FStdMeshers_I%2FStdMeshers_CartesianParameters3D_i.cxx;h=41a6b3b417cd2da7fb24da4d57d2a2c4c49d0891;hp=cd90066a0da17cdd200bc5439d411158f477d592;hb=0fc0831670e27a5611b941c52dc152fd63964515;hpb=5d68554076bbca0e1e95fb0db215a6c2b84b6c54 diff --git a/src/StdMeshers_I/StdMeshers_CartesianParameters3D_i.cxx b/src/StdMeshers_I/StdMeshers_CartesianParameters3D_i.cxx index cd90066a0..41a6b3b41 100644 --- a/src/StdMeshers_I/StdMeshers_CartesianParameters3D_i.cxx +++ b/src/StdMeshers_I/StdMeshers_CartesianParameters3D_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 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 @@ -59,14 +59,11 @@ namespace StdMeshers_CartesianParameters3D_i:: StdMeshers_CartesianParameters3D_i( PortableServer::POA_ptr thePOA, - int theStudyId, ::SMESH_Gen* theGenImpl ) : SALOME::GenericObj_i( thePOA ), SMESH_Hypothesis_i( thePOA ) { - MESSAGE( "StdMeshers_CartesianParameters3D_i::StdMeshers_CartesianParameters3D_i" ); myBaseImpl = new ::StdMeshers_CartesianParameters3D( theGenImpl->GetANewId(), - theStudyId, theGenImpl ); } @@ -80,7 +77,6 @@ StdMeshers_CartesianParameters3D_i( PortableServer::POA_ptr thePOA, StdMeshers_CartesianParameters3D_i::~StdMeshers_CartesianParameters3D_i() { - MESSAGE( "StdMeshers_CartesianParameters3D_i::~StdMeshers_CartesianParameters3D_i" ); } //============================================================================= @@ -169,8 +165,8 @@ CORBA::Double StdMeshers_CartesianParameters3D_i::GetSizeThreshold() //\brief Set grid spacing along the three axes // \param spaceFunctions - functions defining spacing values at given point on axis // \param internalPoints - points dividing a grid into parts along each direction -// Parameter t of spaceFunction f(t) is a position [0,1] withing bounding box of -// the shape to mesh or withing an interval defined by internal points +// Parameter t of spaceFunction f(t) is a position [0,1] within bounding box of +// the shape to mesh or within an interval defined by internal points //======================================================================= void StdMeshers_CartesianParameters3D_i::SetGridSpacing(const SMESH::string_array& spaceFunctions, @@ -178,8 +174,8 @@ void StdMeshers_CartesianParameters3D_i::SetGridSpacing(const SMESH::string_arra CORBA::Short axis) throw (SALOME::SALOME_Exception) { - vector funVec; - vector pointVec; + std::vector funVec; + std::vector pointVec; _array2vec( spaceFunctions, funVec, (const char*) ); _array2vec( internalPoints, pointVec, ); @@ -209,8 +205,8 @@ void StdMeshers_CartesianParameters3D_i::GetGridSpacing(SMESH::string_array_out { ASSERT( myBaseImpl ); try { - vector funVec; - vector pointVec; + std::vector funVec; + std::vector pointVec; this->GetImpl()->GetGridSpacing( funVec, pointVec, axis ); xSpaceFunctions = new SMESH::string_array(); @@ -244,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); @@ -287,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 ); @@ -339,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 @@ -394,8 +473,8 @@ StdMeshers_CartesianParameters3D_i::ComputeCoordinates(CORBA::Double const char* axisName ) throw (SALOME::SALOME_Exception) { - vector xFuns; - vector xPoints, coords; + std::vector xFuns; + std::vector xPoints, coords; _array2vec( spaceFuns, xFuns, (const char*) ); _array2vec( points, xPoints, ); @@ -419,7 +498,6 @@ StdMeshers_CartesianParameters3D_i::ComputeCoordinates(CORBA::Double ::StdMeshers_CartesianParameters3D* StdMeshers_CartesianParameters3D_i::GetImpl() { - MESSAGE( "StdMeshers_CartesianParameters3D_i::GetImpl" ); return ( ::StdMeshers_CartesianParameters3D* )myBaseImpl; }