// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
//
//
#include "SMESH_Gen_i.hxx"
#include "SMESH_Filter_i.hxx"
#include "SMESH_PythonDump.hxx"
-#include "CASCatch.hxx"
#include "utilities.h"
#include <gp_Ax2.hxx>
#include <gp_Vec.hxx>
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+#define NO_CAS_CATCH
+#endif
+
+#include <Standard_Failure.hxx>
+
+#ifdef NO_CAS_CATCH
+#include <Standard_ErrorHandler.hxx>
+#else
+#include "CASCatch.hxx"
+#endif
+
#include <sstream>
typedef map<const SMDS_MeshElement*,
//purpose : auxilary function for conversion long_array to std::map<>
// which is used in some methods
//=======================================================================
-static void ToMap(const SMESH::long_array & IDs,
- const SMESHDS_Mesh* aMesh,
- std::map<int,const SMDS_MeshElement*>& aMap)
+static void ToMap(const SMESH::long_array & IDs,
+ const SMESHDS_Mesh* aMesh,
+ std::map<int,const SMDS_MeshElement*>& aMap,
+ const SMDSAbs_ElementType aType = SMDSAbs_All )
{
for (int i=0; i<IDs.length(); i++) {
CORBA::Long ind = IDs[i];
std::map<int,const SMDS_MeshElement*>::iterator It = aMap.find(ind);
if(It==aMap.end()) {
const SMDS_MeshElement * elem = aMesh->FindElement(ind);
- aMap.insert( make_pair(ind,elem) );
+ if ( elem && ( aType == SMDSAbs_All || elem->GetType() == aType ))
+ aMap.insert( make_pair( elem->GetID(), elem ));
}
}
}
SMESHDS_Mesh* aMesh = GetMeshDS();
map<int,const SMDS_MeshElement*> faces;
- ToMap(IDsOfElements, aMesh, faces);
+ ToMap(IDsOfElements, aMesh, faces, SMDSAbs_Face);
SMESH::NumericalFunctor_i* aNumericalFunctor =
dynamic_cast<SMESH::NumericalFunctor_i*>( SMESH_Gen_i::GetServant( Criterion ).in() );
SMESHDS_Mesh* aMesh = GetMeshDS();
map<int,const SMDS_MeshElement*> faces;
- ToMap(IDsOfElements, aMesh, faces);
+ ToMap(IDsOfElements, aMesh, faces, SMDSAbs_Face);
SMESH::NumericalFunctor_i* aNumericalFunctor =
dynamic_cast<SMESH::NumericalFunctor_i*>( SMESH_Gen_i::GetServant( Criterion ).in() );
SMESHDS_Mesh* aMesh = GetMeshDS();
map<int,const SMDS_MeshElement*> faces;
- ToMap(IDsOfElements, aMesh, faces);
+ ToMap(IDsOfElements, aMesh, faces, SMDSAbs_Face);
// Update Python script
TPythonDump() << "isDone = " << this << ".SplitQuad( "
SMESHDS_Mesh* aMesh = GetMeshDS();
map<int,const SMDS_MeshElement*> elements;
- ToMap(IDsOfElements, aMesh, elements);
+ ToMap(IDsOfElements, aMesh, elements, SMDSAbs_Face);
set<const SMDS_MeshNode*> fixedNodes;
for (int i = 0; i < IDsOfFixedNodes.length(); i++) {
myLastCreatedElems = new SMESH::long_array();
myLastCreatedNodes = new SMESH::long_array();
- CASCatch_TRY {
+#ifdef NO_CAS_CATCH
+ try {
+ OCC_CATCH_SIGNALS;
+#else
+ CASCatch_TRY {
+#endif
SMESHDS_Mesh* aMesh = GetMeshDS();
-
+
map<int,const SMDS_MeshElement*> elements;
ToMap(theIDsOfElements, aMesh, elements);
const SMESH::PointStruct * P = &theStepVector.PS;
gp_Vec stepVec( P->x, P->y, P->z );
-
+
TElemOfElemListMap aHystory;
::SMESH_MeshEditor anEditor( _myMesh );
anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps, aHystory);
// Update Python script
TPythonDump() << "stepVector = " << theStepVector;
TPythonDump() << this << ".ExtrusionSweep( "
- << theIDsOfElements << ", stepVector, " << theNbOfSteps << " )";
+ << theIDsOfElements << ", stepVector, " << theNbOfSteps << " )";
- }
- CASCatch_CATCH(Standard_Failure) {
+#ifdef NO_CAS_CATCH
+ } catch(Standard_Failure) {
+#else
+ } CASCatch_CATCH(Standard_Failure) {
+#endif
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
INFOS( "SMESH_MeshEditor_i::ExtrusionSweep fails - "<< aFail->GetMessageString() );
}