+
+//=================================================================================
+// function : onDisplaySimulation
+// purpose : Show/Hide preview
+//=================================================================================
+void SMESHGUI_ExtrusionDlg::onDisplaySimulation( bool toDisplayPreview ) {
+ if (myPreviewCheckBox->isChecked() && toDisplayPreview) {
+ if (myNbOkElements && isValid() && isValuesValid()) {
+ //Get input vector
+ SMESH::DirStruct aVector;
+ getExtrusionVector(aVector);
+
+ //Get Number of the steps
+ long aNbSteps = (long)SpinBox_NbSteps->value();
+
+ try {
+ SUIT_OverrideCursor aWaitCursor;
+ SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditPreviewer();
+ if( CheckBoxMesh->isChecked() ) {
+ switch (GetConstructorId()) {
+ case 0:
+ {
+ aMeshEditor->ExtrusionSweepObject0D(mySelectedObject, aVector, aNbSteps);
+ break;
+ }
+ case 1:
+ {
+ aMeshEditor->ExtrusionSweepObject1D(mySelectedObject, aVector, aNbSteps);
+ break;
+ }
+ case 2:
+ {
+ aMeshEditor->ExtrusionSweepObject2D(mySelectedObject, aVector, aNbSteps);
+ break;
+ }
+ }
+ }
+ else
+ if(GetConstructorId() == 0)
+ aMeshEditor->ExtrusionSweep0D(myElementsId.inout(), aVector, aNbSteps);
+ else
+ aMeshEditor->ExtrusionSweep(myElementsId.inout(), aVector, aNbSteps);
+
+ SMESH::MeshPreviewStruct_var aMeshPreviewStruct = aMeshEditor->GetPreviewData();
+ mySimulation->SetData(aMeshPreviewStruct._retn());
+ } catch (...) {
+ hidePreview();
+ }
+ } else {
+ hidePreview();
+ }
+ } else {
+ hidePreview();
+ }
+}
+
+//=================================================================================
+// function : getExtrusionVector()
+// purpose : get direction of the extrusion
+//=================================================================================
+void SMESHGUI_ExtrusionDlg::getExtrusionVector(SMESH::DirStruct& aVector) {
+ if ( RadioButton3->isChecked() ) {
+ aVector.PS.x = SpinBox_Dx->GetValue();
+ aVector.PS.y = SpinBox_Dy->GetValue();
+ aVector.PS.z = SpinBox_Dz->GetValue();
+ } else if ( RadioButton4->isChecked() ) {
+ gp_XYZ aNormale(SpinBox_Vx->GetValue(),
+ SpinBox_Vy->GetValue(),
+ SpinBox_Vz->GetValue());
+
+
+ aNormale /= aNormale.Modulus();
+ double aVDist = (double)SpinBox_VDist->value();
+
+ aVector.PS.x = aNormale.X()*aVDist;
+ aVector.PS.y = aNormale.Y()*aVDist;
+ aVector.PS.z = aNormale.Z()*aVDist;
+ }
+}