// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
// File : SMESHGUI.cxx
// Author : Nicolas REJNERI
#include "SMESHGUI_ConvToQuadOp.h"
#include "SMESHGUI_MeshOp.h"
#include "SMESHGUI_Displayer.h"
+#include "SMESHGUI_MakeNodeAtPointDlg.h"
+#include "SMESHGUI_BuildCompoundDlg.h"
#include "SMESHGUI_Utils.h"
#include "SMESHGUI_GEOMGenUtils.h"
#include "SALOMEconfig.h"
#include CORBA_CLIENT_HEADER(SALOMEDS_Attributes)
+#include CORBA_SERVER_HEADER(SMESH_MeshEditor)
// QT Includes
#define INCLUDE_MENUITEM_DEF
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
if ( resMgr )
toCreateGroups = resMgr->booleanValue( "SMESH", "auto_groups", false );
-
+
if ( theCommandID != 122 && theCommandID != 125 )
aFilename = SUIT_FileDlg::getFileName(SMESHGUI::desktop(), "", aFilter, aTitle, false);
else {
SUIT_OverrideCursor wc;
try {
+ bool Renumber = false ;
+ // PAL 14172 : Check of we have to renumber or not from the preferences before export
+ if (resMgr)
+ Renumber= resMgr->booleanValue("SMESH","renumbering");
+ if (Renumber){
+ SMESH::SMESH_MeshEditor_var aMeshEditor = aMesh->GetMeshEditor();
+ aMeshEditor->RenumberNodes();
+ aMeshEditor->RenumberElements();
+ if ( SMESHGUI::automaticUpdate() )
+ SMESH::UpdateView();
+ }
switch ( theCommandID ) {
case 125:
case 122:
//=============================================================================
SMESHGUI::SMESHGUI() :
SalomeApp_Module( "SMESH" )
-{
+{
if ( CORBA::is_nil( myComponentSMESH ) )
{
CORBA::Boolean anIsEmbeddedMode;
}
}
}
-
- // PAL13338 -->
- if ( ( theCommandID==301 || theCommandID==302 ) && !checkLock(aStudy) && !automaticUpdate() )
+
+ // PAL13338 + PAL15161 -->
+ if ( ( theCommandID==301 || theCommandID==302 ) && !checkLock(aStudy) /*&& !automaticUpdate()*/ )
SMESH::UpdateView();
- // PAL13338 <--
+ // PAL13338 + PAL15161 <--
if (anAction == SMESH::eErase) {
SALOME_ListIO l1;
case 701: // COMPUTE MESH
{
- if(checkLock(aStudy)) break;
+ if (checkLock(aStudy)) break;
LightApp_SelectionMgr *Sel = selectionMgr();
SALOME_ListIO selected; Sel->selectedObjects( selected );
- if ( vtkwnd ) {
- int nbSel = selected.Extent();
- if (nbSel != 1){
- SUIT_MessageBox::warn1(desktop(),
- tr("SMESH_WRN_WARNING"),
- tr("SMESH_WRN_NO_AVAILABLE_DATA"),
- tr("SMESH_BUT_OK"));
- break;
- }
+ int nbSel = selected.Extent();
+ if (nbSel != 1) {
+ SUIT_MessageBox::warn1(desktop(),
+ tr("SMESH_WRN_WARNING"),
+ tr("SMESH_WRN_NO_AVAILABLE_DATA"),
+ tr("SMESH_BUT_OK"));
+ break;
+ }
- SMESH::SMESH_Mesh_var aMesh;
- SMESH::SMESH_subMesh_var aSubMesh;
- Handle(SALOME_InteractiveObject) IObject = selected.First();
- if (IObject->hasEntry()) {
- _PTR(SObject) aMeshSObj = aStudy->FindObjectID(IObject->getEntry());
- GEOM::GEOM_Object_var aShapeObject = SMESH::GetShapeOnMeshOrSubMesh( aMeshSObj );
- if ( aShapeObject->_is_nil() ) {
- // imported mesh
- break;
- }
- if( aMeshSObj ) {
- aMesh = SMESH::SObjectToInterface<SMESH::SMESH_Mesh>(aMeshSObj);
- aSubMesh = SMESH::SObjectToInterface<SMESH::SMESH_subMesh>(aMeshSObj);
- if ( !aSubMesh->_is_nil() )
- aMesh = aSubMesh->GetFather();
-
- if (!aMesh->_is_nil()) {
-// if(!GetSMESHGen()->IsReadyToCompute(aMesh,aShapeObject)) {
-// SUIT_MessageBox::warn1(desktop(),
-// tr("SMESH_WRN_WARNING"),
-// tr("SMESH_WRN_MISSING_PARAMETERS"),
-// tr("SMESH_BUT_OK"));
-// break;
-// }
- SMESH::algo_error_array_var errors = GetSMESHGen()->GetAlgoState(aMesh,aShapeObject);
- if ( errors->length() > 0 ) {
+ SMESH::SMESH_Mesh_var aMesh;
+ SMESH::SMESH_subMesh_var aSubMesh;
+ Handle(SALOME_InteractiveObject) IObject = selected.First();
+ if (IObject->hasEntry()) {
+ _PTR(SObject) aMeshSObj = aStudy->FindObjectID(IObject->getEntry());
+ GEOM::GEOM_Object_var aShapeObject = SMESH::GetShapeOnMeshOrSubMesh( aMeshSObj );
+ if ( aShapeObject->_is_nil() ) {
+ // imported mesh
+ break;
+ }
+ if ( aMeshSObj ) {
+ aMesh = SMESH::SObjectToInterface<SMESH::SMESH_Mesh>(aMeshSObj);
+ aSubMesh = SMESH::SObjectToInterface<SMESH::SMESH_subMesh>(aMeshSObj);
+ if ( !aSubMesh->_is_nil() )
+ aMesh = aSubMesh->GetFather();
+
+ if (!aMesh->_is_nil()) {
+ SMESH::algo_error_array_var errors = GetSMESHGen()->GetAlgoState(aMesh,aShapeObject);
+ if ( errors->length() > 0 ) {
+ SUIT_MessageBox::warn1(desktop(),
+ tr("SMESH_WRN_WARNING"),
+ SMESH::GetMessageOnAlgoStateErrors( errors.in() ),
+ tr("SMESH_BUT_OK"));
+ break;
+ }
+
+ try {
+ if (GetSMESHGen()->Compute(aMesh, aShapeObject))
+ SMESH::ModifiedMesh(aMeshSObj, true);
+ else
SUIT_MessageBox::warn1(desktop(),
tr("SMESH_WRN_WARNING"),
- SMESH::GetMessageOnAlgoStateErrors( errors.in() ),
+ tr("SMESH_WRN_COMPUTE_FAILED"),
tr("SMESH_BUT_OK"));
- break;
- }
- try{
- if (GetSMESHGen()->Compute(aMesh,aShapeObject))
- SMESH::ModifiedMesh(aMeshSObj,true);
- else
- SUIT_MessageBox::warn1(desktop(),
- tr("SMESH_WRN_WARNING"),
- tr("SMESH_WRN_COMPUTE_FAILED"),
- tr("SMESH_BUT_OK"));
- }
- catch(const SALOME::SALOME_Exception & S_ex){
- SalomeApp_Tools::QtCatchCorbaException(S_ex);
+ }
+ catch(const SALOME::SALOME_Exception & S_ex){
+ SalomeApp_Tools::QtCatchCorbaException(S_ex);
+ }
+
+ updateObjBrowser();
+
+ if (automaticUpdate()) {
+ SVTK_ViewWindow* aVTKView = SMESH::GetViewWindow(this, /*create*/true);
+ if (aVTKView) {
+ CORBA::Long anId = aStudy->StudyId();
+ TVisualObjPtr aVisualObj = SMESH::GetVisualObj(anId, IObject->getEntry());
+ if (aVisualObj) {
+ aVisualObj->Update();
+ SMESH_Actor* anActor = SMESH::FindActorByEntry(IObject->getEntry());
+ if (!anActor) {
+ anActor = SMESH::CreateActor(aStudy, IObject->getEntry());
+ if (anActor) {
+ SMESH::DisplayActor(aVTKView, anActor); //apo
+ SMESH::FitAll();
+ }
+ }
+ SMESH::RepaintCurrentView();
+ Sel->setSelectedObjects( selected );
+ }
}
}
- }
- }
- CORBA::Long anId = aStudy->StudyId();
- TVisualObjPtr aVisualObj = SMESH::GetVisualObj(anId,IObject->getEntry());
- if ( automaticUpdate() && aVisualObj){
- aVisualObj->Update();
- SMESH_Actor* anActor = SMESH::FindActorByEntry(IObject->getEntry());
- if(!anActor){
- anActor = SMESH::CreateActor(aStudy,IObject->getEntry());
- if(anActor){
- SMESH::DisplayActor(view,anActor); //apo
- SMESH::FitAll();
- }
- }
- SMESH::RepaintCurrentView();
- }
- }
- else{
- SUIT_MessageBox::warn1(desktop(),
- tr("SMESH_WRN_WARNING"),
- tr("SMESH_WRN_VIEWER_VTK"),
- tr("SMESH_BUT_OK"));
+ }
+ }
}
- updateObjBrowser();
- Sel->setSelectedObjects( selected );
- break;
}
+ break;
case 702: // Create mesh
startOperation( 702 );
case 704: // Edit mesh/sub-mesh
startOperation( 704 );
break;
+ case 710: // Build compound mesh
+ {
+ if (checkLock(aStudy)) break;
+ EmitSignalDeactivateDialog();
+ new SMESHGUI_BuildCompoundDlg( this,
+ tr("SMESH_BUILD_COMPOUND_TITLE"),
+ tr("ICON_DLG_BUILD_COMPOUND"),
+ 1 );
+ }
+ break;
case 407: // DIAGONAL INVERSION
case 408: // Delete diagonal
{
int type;
switch (theCommandID) {
- case 4034:
+ case 4034:
type = QUAD_EDGE; break;
- case 4035:
+ case 4035:
type = QUAD_TRIANGLE; break;
- case 4036:
+ case 4036:
type = QUAD_QUADRANGLE; break;
- case 4037:
+ case 4037:
type = QUAD_TETRAHEDRON; break;
- case 4038:
- type = QUAD_PYRAMID; break;
- case 4039:
- type = QUAD_PENTAHEDRON; break;
+ case 4038:
+ type = QUAD_PYRAMID; break;
+ case 4039:
+ type = QUAD_PENTAHEDRON; break;
case 4040:
type = QUAD_HEXAHEDRON;
break;
break;
}
+ case 4067: // MAKE MESH PASS THROUGH POINT
+ startOperation( 4067 );
+ break;
+
case 5105: // Library of selection filters
{
static QValueList<int> aTypes;
createSMESHAction( 702, "CREATE_MESH", "ICON_DLG_INIT_MESH" );
createSMESHAction( 703, "CREATE_SUBMESH", "ICON_DLG_ADD_SUBMESH" );
createSMESHAction( 704, "EDIT_MESHSUBMESH","ICON_DLG_EDIT_MESH" );
+ createSMESHAction( 710, "BUILD_COMPOUND", "ICON_BUILD_COMPOUND" );
createSMESHAction( 801, "CREATE_GROUP", "ICON_SMESH_TREE_GROUP" );
createSMESHAction( 802, "CONSTRUCT_GROUP", "ICON_CONSTRUCT_GROUP" );
createSMESHAction( 803, "EDIT_GROUP", "ICON_EDIT_GROUP" );
createSMESHAction( 4064, "SEW", "ICON_SMESH_SEWING_FREEBORDERS" );
createSMESHAction( 4065, "MERGE", "ICON_SMESH_MERGE_NODES" );
createSMESHAction( 4066, "MERGE_ELEMENTS", "ICON_DLG_MERGE_ELEMENTS" );
+ createSMESHAction( 4067, "MESH_THROU_POINT","ICON_DLG_MESH_THROU_POINT" );
createSMESHAction( 406, "MOVE", "ICON_DLG_MOVE_NODE" );
createSMESHAction( 407, "INV", "ICON_DLG_MESH_DIAGONAL" );
createSMESHAction( 408, "UNION2", "ICON_UNION2TRI" );
createMenu( 702, meshId, -1 );
createMenu( 703, meshId, -1 );
createMenu( 704, meshId, -1 );
+ createMenu( 710, meshId, -1 );
createMenu( separator(), meshId, -1 );
createMenu( 701, meshId, -1 );
createMenu( separator(), meshId, -1 );
createMenu( 4066, transfId, -1 );
createMenu( 406, modifyId, -1 );
+ createMenu( 4067,modifyId, -1 );
createMenu( 407, modifyId, -1 );
createMenu( 408, modifyId, -1 );
createMenu( 409, modifyId, -1 );
createTool( 702, meshTb );
createTool( 703, meshTb );
createTool( 704, meshTb );
+ createTool( 710, meshTb );
createTool( separator(), meshTb );
createTool( 701, meshTb );
createTool( separator(), meshTb );
createTool( separator(), addRemTb );
createTool( 406, modifyTb );
+ createTool( 4067,modifyTb );
createTool( 407, modifyTb );
createTool( 408, modifyTb );
createTool( 409, modifyTb );
int exportgroup = addPreference( tr( "PREF_GROUP_EXPORT" ), genTab );
addPreference( tr( "PREF_AUTO_GROUPS" ), exportgroup, LightApp_Preferences::Bool, "SMESH", "auto_groups" );
-
+ int renumber=addPreference( tr( "PREF_RENUMBER" ), exportgroup, LightApp_Preferences::Bool, "SMESH", "renumbering" );
+
int meshTab = addPreference( tr( "PREF_TAB_MESH" ) );
int nodeGroup = addPreference( tr( "PREF_GROUP_NODES" ), meshTab );
float aTol = 1.00000009999999;
std::string aWarning;
SUIT_ResourceMgr* aResourceMgr = SMESH::GetResourceMgr(this);
- if( name=="selection_object_color" || name=="selection_element_color" ||
+ if( name=="selection_object_color" || name=="selection_element_color" ||
name=="selection_width" || name=="highlight_color" || name=="highlight_width" ||
name=="selection_precision_node" || name=="selection_precision_element" )
SMESH::UpdateSelectionProp( this );
sbX1 = aResourceMgr->doubleValue("SMESH", "scalar_bar_vertical_x", sbX1);
sbW = aResourceMgr->doubleValue("SMESH", "scalar_bar_vertical_width", sbW);
if(sbX1+sbW > aTol){
- aWarning = "Origin and Size Vertical: X+Width > 1\n";
+ aWarning = "Origin and Size Vertical: X+Width > 1\n";
sbX1=0.01;
sbW=0.05;
aResourceMgr->setValue("SMESH", "scalar_bar_vertical_x", sbX1);
aResourceMgr->setValue("SMESH", "scalar_bar_horizontal_height",sbH);
}
}
-
+
if(aWarning.size() != 0){
aWarning += "The default values are applied instead.";
SUIT_MessageBox::warn1(SMESHGUI::desktop(),
case 417: //convert to quadratic
op = new SMESHGUI_ConvToQuadOp();
break;
+ case 4067: // make mesh pass through point
+ op = new SMESHGUI_MakeNodeAtPointOp();
+ break;
default:
break;
}