+
+ // Clear python line, created by ExtrusionSweep()
+ SMESH_Gen_i* aSMESHGen = SMESH_Gen_i::GetSMESHGen();
+ aSMESHGen->RemoveLastFromPythonScript(aSMESHGen->GetCurrentStudyID());
+
+ // Update Python script
+ TPythonDump() << this << ".ExtrusionSweepObject( "
+ << theObject << ", stepVector, " << theNbOfSteps << " )";
+}
+
+//=======================================================================
+//function : ExtrusionSweepObject1D
+//purpose :
+//=======================================================================
+
+void SMESH_MeshEditor_i::ExtrusionSweepObject1D(SMESH::SMESH_IDSource_ptr theObject,
+ const SMESH::DirStruct & theStepVector,
+ CORBA::Long theNbOfSteps)
+{
+ myLastCreatedElems = new SMESH::long_array();
+ myLastCreatedNodes = new SMESH::long_array();
+
+ SMESHDS_Mesh* aMesh = GetMeshDS();
+
+ SMESH::long_array_var allElementsId = theObject->GetIDs();
+
+ map<int,const SMDS_MeshElement*> elements;
+ ToMap(allElementsId, aMesh, elements);
+
+ const SMESH::PointStruct * P = &theStepVector.PS;
+ gp_Vec stepVec( P->x, P->y, P->z );
+
+ ::SMESH_MeshEditor anEditor( _myMesh );
+ //anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps);
+ TElemOfElemListMap aHystory;
+ anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps, aHystory);
+
+ UpdateLastResult(anEditor);
+
+ // Update Python script
+ TPythonDump() << "stepVector = " << theStepVector;
+ TPythonDump() << this << ".ExtrusionSweepObject1D( "
+ << theObject << ", stepVector, " << theNbOfSteps << " )";
+}
+
+//=======================================================================
+//function : ExtrusionSweepObject2D
+//purpose :
+//=======================================================================
+
+void SMESH_MeshEditor_i::ExtrusionSweepObject2D(SMESH::SMESH_IDSource_ptr theObject,
+ const SMESH::DirStruct & theStepVector,
+ CORBA::Long theNbOfSteps)
+{
+ myLastCreatedElems = new SMESH::long_array();
+ myLastCreatedNodes = new SMESH::long_array();
+
+ SMESHDS_Mesh* aMesh = GetMeshDS();
+
+ SMESH::long_array_var allElementsId = theObject->GetIDs();
+
+ map<int,const SMDS_MeshElement*> elements;
+ ToMap(allElementsId, aMesh, elements);
+
+ const SMESH::PointStruct * P = &theStepVector.PS;
+ gp_Vec stepVec( P->x, P->y, P->z );
+
+ ::SMESH_MeshEditor anEditor( _myMesh );
+ //anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps);
+ TElemOfElemListMap aHystory;
+ anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps, aHystory);
+
+ UpdateLastResult(anEditor);
+
+ // Update Python script
+ TPythonDump() << "stepVector = " << theStepVector;
+ TPythonDump() << this << ".ExtrusionSweepObject2D( "
+ << theObject << ", stepVector, " << theNbOfSteps << " )";
+}
+
+
+//=======================================================================
+//function : AdvancedExtrusion
+//purpose :
+//=======================================================================
+
+void SMESH_MeshEditor_i::AdvancedExtrusion(const SMESH::long_array & theIDsOfElements,
+ const SMESH::DirStruct & theStepVector,
+ CORBA::Long theNbOfSteps,
+ CORBA::Long theExtrFlags,
+ CORBA::Double theSewTolerance)
+{
+ myLastCreatedElems = new SMESH::long_array();
+ myLastCreatedNodes = new SMESH::long_array();
+
+ 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 );
+
+ ::SMESH_MeshEditor anEditor( _myMesh );
+ TElemOfElemListMap aHystory;
+ anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps, aHystory,
+ theExtrFlags, theSewTolerance);
+
+ UpdateLastResult(anEditor);
+
+ // Update Python script
+ TPythonDump() << "stepVector = " << theStepVector;
+ TPythonDump() << this << ".AdvancedExtrusion("
+ << theIDsOfElements
+ << ", stepVector, "
+ << theNbOfSteps << ","
+ << theExtrFlags << ", "
+ << theSewTolerance << " )";
+}
+
+
+#define RETCASE(enm) case ::SMESH_MeshEditor::enm: return SMESH::SMESH_MeshEditor::enm;
+
+static SMESH::SMESH_MeshEditor::Extrusion_Error convExtrError( const::SMESH_MeshEditor::Extrusion_Error e )
+{
+ switch ( e ) {
+ RETCASE( EXTR_OK );
+ RETCASE( EXTR_NO_ELEMENTS );
+ RETCASE( EXTR_PATH_NOT_EDGE );
+ RETCASE( EXTR_BAD_PATH_SHAPE );
+ RETCASE( EXTR_BAD_STARTING_NODE );
+ RETCASE( EXTR_BAD_ANGLES_NUMBER );
+ RETCASE( EXTR_CANT_GET_TANGENT );
+ }
+ return SMESH::SMESH_MeshEditor::EXTR_OK;