+
+//=================================================================================
+// function : onDisplaySimulation
+// purpose : Show/Hide preview
+//=================================================================================
+void SMESHGUI_SymmetryDlg::onDisplaySimulation( bool toDisplayPreview ) {
+ if (myPreviewCheckBox->isChecked() && toDisplayPreview) {
+ if ( myNbOkElements && isValid() && IsMirrorOk() ) {
+ QStringList aListElementsId = myElementsId.split(" ", QString::SkipEmptyParts);
+ SMESH::long_array_var anElementsId = new SMESH::long_array;
+
+ anElementsId->length(aListElementsId.count());
+ for (int i = 0; i < aListElementsId.count(); i++)
+ anElementsId[i] = aListElementsId[i].toInt();
+
+ SMESH::AxisStruct aMirror;
+ SMESH::SMESH_MeshEditor::MirrorType aMirrorType;
+
+ getMirror(aMirror,aMirrorType);
+
+ try {
+ bool copy = ( ActionGroup->checkedId() == COPY_ELEMS_BUTTON ||
+ ActionGroup->checkedId() == MAKE_MESH_BUTTON );
+ SUIT_OverrideCursor aWaitCursor;
+ SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditPreviewer();
+ if(CheckBoxMesh->isChecked())
+ aMeshEditor->MirrorObject(mySelectedObject, aMirror, aMirrorType, copy );
+ else
+ aMeshEditor->Mirror(anElementsId, aMirror, aMirrorType, copy );
+
+ SMESH::MeshPreviewStruct_var aMeshPreviewStruct = aMeshEditor->GetPreviewData();
+ mySimulation->SetData(aMeshPreviewStruct._retn());
+ } catch (...) {
+ hidePreview();
+ }
+ } else {
+ hidePreview();
+ }
+ } else {
+ hidePreview();
+ }
+}
+
+//=================================================================================
+// function : getMirror
+// purpose : return mirror parameters
+//=================================================================================
+void SMESHGUI_SymmetryDlg::getMirror(SMESH::AxisStruct& theMirror, SMESH::SMESH_MeshEditor::MirrorType& theMirrorType) {
+ theMirror.x = SpinBox_X->GetValue();
+ theMirror.y = SpinBox_Y->GetValue();
+ theMirror.z = SpinBox_Z->GetValue();
+ if (GetConstructorId() == 0) {
+ theMirror.vx = theMirror.vy = theMirror.vz = 0;
+ } else {
+ theMirror.vx = SpinBox_DX->GetValue();
+ theMirror.vy = SpinBox_DY->GetValue();
+ theMirror.vz = SpinBox_DZ->GetValue();
+ }
+ if (GetConstructorId() == 0)
+ theMirrorType = SMESH::SMESH_MeshEditor::POINT;
+ if (GetConstructorId() == 1)
+ theMirrorType = SMESH::SMESH_MeshEditor::AXIS;
+ if (GetConstructorId() == 2)
+ theMirrorType = SMESH::SMESH_MeshEditor::PLANE;
+}