#include <SalomeApp_Study.h>
#include <SalomeApp_Application.h>
#include <SalomeApp_CheckFileDlg.h>
+#include <SalomeApp_DataObject.h>
#include <LightApp_DataOwner.h>
#include <LightApp_Preferences.h>
// Qt includes
// #define INCLUDE_MENUITEM_DEF // VSR commented ????????
+#include <QApplication>
#include <QMenu>
#include <QTextStream>
{
// warn the user about presence of not supported elements
SMESH::long_array_var nbElems = aMeshOrGroup->GetMeshInfo();
- int nbPyramids = nbElems[ SMESH::Entity_Pyramid ] + nbElems[ SMESH::Entity_Quad_Pyramid ];
- if ( nbPyramids > 0 ) {
+ int nbNotSupported = ( nbElems[ SMESH::Entity_Pyramid ] +
+ nbElems[ SMESH::Entity_Quad_Pyramid ] +
+ nbElems[ SMESH::Entity_Hexagonal_Prism ] +
+ nbElems[ SMESH::Entity_Polygon ] +
+ nbElems[ SMESH::Entity_Polyhedra ] );
+ if ( nbNotSupported > 0 ) {
int aRet = SUIT_MessageBox::warning
(SMESHGUI::desktop(),
QObject::tr("SMESH_WRN_WARNING"),
type = QObject::tr( "OVER_CONSTRAINED_VOLUME" );
else if ( dynamic_cast< SMESH::Controls::OverConstrainedFace* >( f.get() ) )
type = QObject::tr( "OVER_CONSTRAINED_FACE" );
+ else if ( dynamic_cast< SMESH::Controls::CoincidentNodes* >( f.get() ) )
+ type = QObject::tr( "EQUAL_NODE" );
+ else if ( dynamic_cast< SMESH::Controls::CoincidentElements1D* >( f.get() ) )
+ type = QObject::tr( "EQUAL_EDGE" );
+ else if ( dynamic_cast< SMESH::Controls::CoincidentElements2D* >( f.get() ) )
+ type = QObject::tr( "EQUAL_FACE" );
+ else if ( dynamic_cast< SMESH::Controls::CoincidentElements3D* >( f.get() ) )
+ type = QObject::tr( "EQUAL_VOLUME" );
return type;
}
Handle(SALOME_InteractiveObject) anIO = selected.First();
if(!anIO.IsNull()){
SMESH_Actor::eControl aControl = SMESH_Actor::eNone;
- if(SMESH_Actor *anActor = SMESH::FindActorByEntry(anIO->getEntry())){
+ if(SMESH_Actor *anActor = SMESH::FindActorByEntry(anIO->getEntry())) {
switch ( theCommandID ){
case 6001:
aControl = SMESH_Actor::eLength;
case 6027:
aControl = SMESH_Actor::eOverConstrainedFace;
break;
+ case 6028:
+ aControl = SMESH_Actor::eCoincidentNodes;
+ break;
+ case 6029:
+ aControl = SMESH_Actor::eCoincidentElems1D;
+ break;
+ case 6030:
+ aControl = SMESH_Actor:: eCoincidentElems2D;
+ break;
+ case 6031:
+ aControl = SMESH_Actor::eCoincidentElems3D;
+ break;
}
+
anActor->SetControlMode(aControl);
anActor->GetScalarBarActor()->SetTitle( functorToString( anActor->GetFunctor() ).toLatin1().constData() );
SMESH::RepaintCurrentView();
myComponentSMESH->SetBoundaryBoxSegmentation( nbSeg );
nbSeg = aResourceMgr->integerValue( "SMESH", "nb_segments_per_edge", 15 );
myComponentSMESH->SetDefaultNbSegments( nbSeg );
+
+ const char* options[] = { "historical_python_dump", "forget_mesh_on_hyp_modif" };
+ for ( size_t i = 0; i < sizeof(options)/sizeof(char*); ++i )
+ if ( aResourceMgr->hasValue( "SMESH", options[i] ))
+ {
+ QString val = aResourceMgr->stringValue( "SMESH", options[i] );
+ myComponentSMESH->SetOption( options[i], val.toLatin1().constData() );
+ }
}
myActiveDialogBox = 0;
case 1134: // Clipping
case 1133: // Tranparency
- case 1132: // Colors / Size
+ case 1132: // Display preferences (colors, shrink size, line width, ...)
// Display Mode
case 215: // Nodes
}
case 4009: // ELEM0D
- case 4010: // GEOM::EDGE
+ case 4010: // EDGE
case 4021: // TRIANGLE
case 4022: // QUAD
case 4023: // POLYGON
case 4031: // TETRA
case 4032: // HEXA
+ case 4133: // PENTA
+ case 4134: // PYRAMID
+ case 4135: // OCTA12
{
if(checkLock(aStudy)) break;
if ( vtkwnd ) {
EmitSignalDeactivateDialog();
- SMDSAbs_ElementType type = SMDSAbs_Edge;
- int nbNodes = 2;
+ SMDSAbs_EntityType type = SMDSEntity_Edge;
switch (theCommandID) {
- case 4009: // ELEM0D
- type = SMDSAbs_0DElement; nbNodes = 1; break;
- case 4021: // TRIANGLE
- type = SMDSAbs_Face; nbNodes = 3; break;
- case 4022: // QUAD
- type = SMDSAbs_Face; nbNodes = 4; break;
- case 4031: // TETRA
- type = SMDSAbs_Volume; nbNodes = 4; break;
- case 4023: // POLYGON
- type = SMDSAbs_Face; nbNodes = 5; break; // 5 - identificator for POLYGON
- case 4032: // HEXA
- type = SMDSAbs_Volume; nbNodes = 8; break;
- case 4033: // POLYHEDRE
- type = SMDSAbs_Volume; nbNodes = 9; break; // 9 - identificator for POLYHEDRE
+ case 4009:
+ type = SMDSEntity_0D; break;
+ case 4021:
+ type = SMDSEntity_Triangle; break;
+ case 4022:
+ type = SMDSEntity_Quadrangle; break;
+ case 4031:
+ type = SMDSEntity_Tetra; break;
+ case 4023:
+ type = SMDSEntity_Polygon; break;
+ case 4032:
+ type = SMDSEntity_Hexa; break;
+ case 4133:
+ type = SMDSEntity_Penta; break;
+ case 4134:
+ type = SMDSEntity_Pyramid; break;
+ case 4135:
+ type = SMDSEntity_Hexagonal_Prism; break;
default:;
}
- ( new SMESHGUI_AddMeshElementDlg( this, type, nbNodes ) )->show();
+ ( new SMESHGUI_AddMeshElementDlg( this, type ) )->show();
}
else {
SUIT_MessageBox::warning(desktop(),
case 4034: // QUADRATIC EDGE
case 4035: // QUADRATIC TRIANGLE
case 4036: // QUADRATIC QUADRANGLE
+ case 4136: // BIQUADRATIC QUADRANGLE
case 4037: // QUADRATIC TETRAHEDRON
case 4038: // QUADRATIC PYRAMID
case 4039: // QUADRATIC PENTAHEDRON
case 4040: // QUADRATIC HEXAHEDRON
+ case 4140: // TRIQUADRATIC HEXAHEDRON
{
if(checkLock(aStudy)) break;
if ( vtkwnd ) {
EmitSignalDeactivateDialog();
- int type;
+ SMDSAbs_EntityType type;
switch (theCommandID) {
case 4034:
- type = QUAD_EDGE; break;
+ type = SMDSEntity_Quad_Edge; break;
case 4035:
- type = QUAD_TRIANGLE; break;
+ type = SMDSEntity_Quad_Triangle; break;
case 4036:
- type = QUAD_QUADRANGLE; break;
+ type = SMDSEntity_Quad_Quadrangle; break;
+ case 4136:
+ type = SMDSEntity_BiQuad_Quadrangle; break;
case 4037:
- type = QUAD_TETRAHEDRON; break;
+ type = SMDSEntity_Quad_Tetra; break;
case 4038:
- type = QUAD_PYRAMID; break;
+ type = SMDSEntity_Quad_Pyramid; break;
case 4039:
- type = QUAD_PENTAHEDRON; break;
+ type = SMDSEntity_Quad_Penta; break;
case 4040:
- type = QUAD_HEXAHEDRON;
+ type = SMDSEntity_Quad_Hexa;
+ case 4140:
+ type = SMDSEntity_TriQuad_Hexa;
break;
default:;
}
}
catch (const SALOME::SALOME_Exception& S_ex) {
SalomeApp_Tools::QtCatchCorbaException(S_ex);
- }
+ }
catch (...) {
}
}
case 6025:
case 6026:
case 6027:
+ case 6028:
+ case 6029:
+ case 6030:
+ case 6031:
if ( vtkwnd ) {
LightApp_SelectionMgr* mgr = selectionMgr();
// function : createSMESHAction
// purpose :
//=======================================================================
-void SMESHGUI::createSMESHAction( const int id, const QString& po_id, const QString& icon_id,
+void SMESHGUI::createSMESHAction( const int id, const QString& po_id, const QString& icon_id,
const int key, const bool toggle, const QString& shortcutAction )
{
QIcon icon;
menu = tr( QString( "MEN_%1" ).arg( po_id ).toLatin1().data() ),
status_bar = tr( QString( "STB_%1" ).arg( po_id ).toLatin1().data() );
- createAction( id, tooltip, icon, menu, status_bar, key, parent,
+ createAction( id, tooltip, icon, menu, status_bar, key, parent,
toggle, this, SLOT( OnGUIEvent() ), shortcutAction );
}
createSMESHAction( 6001, "LENGTH", "ICON_LENGTH", 0, true );
createSMESHAction( 6002, "FREE_EDGE", "ICON_FREE_EDGE", 0, true );
createSMESHAction( 6021, "FREE_FACES", "ICON_FREE_FACES", 0, true );
- createSMESHAction( 6022, "MAX_ELEMENT_LENGTH_2D", "ICON_MAX_ELEMENT_LENGTH_2D", 0, true );
- createSMESHAction( 6023, "MAX_ELEMENT_LENGTH_3D", "ICON_MAX_ELEMENT_LENGTH_3D", 0, true );
- createSMESHAction( 6024, "BARE_BORDER_VOLUME","ICON_BARE_BORDER_VOLUME", 0, true );
- createSMESHAction( 6025, "BARE_BORDER_FACE","ICON_BARE_BORDER_FACE", 0, true );
+ createSMESHAction( 6022, "MAX_ELEMENT_LENGTH_2D", "ICON_MAX_ELEMENT_LENGTH_2D", 0, true );
+ createSMESHAction( 6023, "MAX_ELEMENT_LENGTH_3D", "ICON_MAX_ELEMENT_LENGTH_3D", 0, true );
+ createSMESHAction( 6024, "BARE_BORDER_VOLUME", "ICON_BARE_BORDER_VOLUME", 0, true );
+ createSMESHAction( 6025, "BARE_BORDER_FACE", "ICON_BARE_BORDER_FACE", 0, true );
createSMESHAction( 6026, "OVER_CONSTRAINED_VOLUME","ICON_OVER_CONSTRAINED_VOLUME", 0, true );
- createSMESHAction( 6027, "OVER_CONSTRAINED_FACE","ICON_OVER_CONSTRAINED_FACE", 0, true );
+ createSMESHAction( 6027, "OVER_CONSTRAINED_FACE", "ICON_OVER_CONSTRAINED_FACE", 0, true );
+ createSMESHAction( 6028, "EQUAL_NODE", "ICON_EQUAL_NODE", 0, true );
+ createSMESHAction( 6029, "EQUAL_EDGE", "ICON_EQUAL_EDGE", 0, true );
+ createSMESHAction( 6030, "EQUAL_FACE", "ICON_EQUAL_FACE", 0, true );
+ createSMESHAction( 6031, "EQUAL_VOLUME", "ICON_EQUAL_VOLUME", 0, true );
createSMESHAction( 6003, "FREE_BORDER", "ICON_FREE_EDGE_2D", 0, true );
createSMESHAction( 6004, "CONNECTION", "ICON_CONNECTION", 0, true );
createSMESHAction( 6005, "FREE_NODE", "ICON_FREE_NODE", 0, true );
createSMESHAction( 4023, "POLYGON", "ICON_DLG_POLYGON" );
createSMESHAction( 4031, "TETRA", "ICON_DLG_TETRAS" );
createSMESHAction( 4032, "HEXA", "ICON_DLG_HEXAS" );
- createSMESHAction( 4041, "REMOVE_NODES", "ICON_DLG_REM_NODE" );
- createSMESHAction( 4042, "REMOVE_ELEMENTS", "ICON_DLG_REM_ELEMENT" );
- createSMESHAction( 4044, "REMOVE_ORPHAN_NODES", "ICON_DLG_REM_ORPHAN_NODES" );
+ createSMESHAction( 4133, "PENTA", "ICON_DLG_PENTA" );
+ createSMESHAction( 4134, "PYRAMID", "ICON_DLG_PYRAMID" );
+ createSMESHAction( 4135, "OCTA", "ICON_DLG_OCTA" );
+ createSMESHAction( 4033, "POLYHEDRON", "ICON_DLG_POLYHEDRON" );
+ createSMESHAction( 4034, "QUADRATIC_EDGE", "ICON_DLG_QUADRATIC_EDGE" );
+ createSMESHAction( 4035, "QUADRATIC_TRIANGLE", "ICON_DLG_QUADRATIC_TRIANGLE" );
+ createSMESHAction( 4036, "QUADRATIC_QUADRANGLE", "ICON_DLG_QUADRATIC_QUADRANGLE" );
+ createSMESHAction( 4136, "BIQUADRATIC_QUADRANGLE", "ICON_DLG_BIQUADRATIC_QUADRANGLE" );
+ createSMESHAction( 4037, "QUADRATIC_TETRAHEDRON", "ICON_DLG_QUADRATIC_TETRAHEDRON" );
+ createSMESHAction( 4038, "QUADRATIC_PYRAMID", "ICON_DLG_QUADRATIC_PYRAMID" );
+ createSMESHAction( 4039, "QUADRATIC_PENTAHEDRON", "ICON_DLG_QUADRATIC_PENTAHEDRON" );
+ createSMESHAction( 4040, "QUADRATIC_HEXAHEDRON", "ICON_DLG_QUADRATIC_HEXAHEDRON" );
+ createSMESHAction( 4140, "TRIQUADRATIC_HEXAHEDRON", "ICON_DLG_TRIQUADRATIC_HEXAHEDRON" );
+ createSMESHAction( 4041, "REMOVE_NODES", "ICON_DLG_REM_NODE" );
+ createSMESHAction( 4042, "REMOVE_ELEMENTS", "ICON_DLG_REM_ELEMENT" );
+ createSMESHAction( 4044, "REMOVE_ORPHAN_NODES", "ICON_DLG_REM_ORPHAN_NODES" );
createSMESHAction( 4043, "CLEAR_MESH" , "ICON_CLEAR_MESH" );
createSMESHAction( 4051, "RENUM_NODES", "ICON_DLG_RENUMBERING_NODES" );
createSMESHAction( 4052, "RENUM_ELEMENTS", "ICON_DLG_RENUMBERING_ELEMENTS" );
createSMESHAction( 300, "ERASE" );
createSMESHAction( 301, "DISPLAY" );
createSMESHAction( 302, "DISPLAY_ONLY" );
- createSMESHAction( 4033, "POLYHEDRON", "ICON_DLG_POLYHEDRON" );
- createSMESHAction( 4034, "QUADRATIC_EDGE", "ICON_DLG_QUADRATIC_EDGE" );
- createSMESHAction( 4035, "QUADRATIC_TRIANGLE", "ICON_DLG_QUADRATIC_TRIANGLE" );
- createSMESHAction( 4036, "QUADRATIC_QUADRANGLE", "ICON_DLG_QUADRATIC_QUADRANGLE" );
- createSMESHAction( 4037, "QUADRATIC_TETRAHEDRON", "ICON_DLG_QUADRATIC_TETRAHEDRON" );
- createSMESHAction( 4038, "QUADRATIC_PYRAMID", "ICON_DLG_QUADRATIC_PYRAMID" );
- createSMESHAction( 4039, "QUADRATIC_PENTAHEDRON", "ICON_DLG_QUADRATIC_PENTAHEDRON" );
- createSMESHAction( 4040, "QUADRATIC_HEXAHEDRON", "ICON_DLG_QUADRATIC_HEXAHEDRON" );
// ----- create menu --------------
int fileId = createMenu( tr( "MEN_FILE" ), -1, 1 ),
createMenu( separator(), meshId, -1 );
createMenu( 6005, nodeId, -1 );
+ createMenu( 6028, nodeId, -1 );
createMenu( 6002, edgeId, -1 );
createMenu( 6003, edgeId, -1 );
createMenu( 6001, edgeId, -1 );
createMenu( 6004, edgeId, -1 );
+ createMenu( 6029, edgeId, -1 );
createMenu( 6021, faceId, -1 );
createMenu( 6025, faceId, -1 );
createMenu( 6027, faceId, -1 );
createMenu( 6015, faceId, -1 );
createMenu( 6016, faceId, -1 );
createMenu( 6022, faceId, -1 );
+ createMenu( 6030, faceId, -1 );
createMenu( 6017, volumeId, -1 );
createMenu( 6009, volumeId, -1 );
createMenu( 6023, volumeId, -1 );
createMenu( 6024, volumeId, -1 );
createMenu( 6026, volumeId, -1 );
+ createMenu( 6031, volumeId, -1 );
createMenu( 4000, addId, -1 );
createMenu( 4009, addId, -1 );
createMenu( 4023, addId, -1 );
createMenu( 4031, addId, -1 );
createMenu( 4032, addId, -1 );
+ createMenu( 4133, addId, -1 );
+ createMenu( 4134, addId, -1 );
+ createMenu( 4135, addId, -1 );
createMenu( 4033, addId, -1 );
createMenu( separator(), addId, -1 );
createMenu( 4034, addId, -1 );
createMenu( 4035, addId, -1 );
createMenu( 4036, addId, -1 );
+ createMenu( 4136, addId, -1 );
createMenu( 4037, addId, -1 );
createMenu( 4038, addId, -1 );
createMenu( 4039, addId, -1 );
createMenu( 4040, addId, -1 );
+ createMenu( 4140, addId, -1 );
createMenu( 4041, removeId, -1 );
createMenu( 4042, removeId, -1 );
createTool( separator(), meshTb );
createTool( 6005, ctrlTb );
+ createTool( 6028, ctrlTb );
createTool( separator(), ctrlTb );
createTool( 6002, ctrlTb );
createTool( 6003, ctrlTb );
createTool( 6001, ctrlTb );
createTool( 6004, ctrlTb );
+ createTool( 6029, ctrlTb );
createTool( separator(), ctrlTb );
createTool( 6021, ctrlTb );
createTool( 6025, ctrlTb );
createTool( 6015, ctrlTb );
createTool( 6016, ctrlTb );
createTool( 6022, ctrlTb );
+ createTool( 6030, ctrlTb );
createTool( separator(), ctrlTb );
createTool( 6017, ctrlTb );
createTool( 6009, ctrlTb );
createTool( 6023, ctrlTb );
createTool( 6024, ctrlTb );
createTool( 6026, ctrlTb );
+ createTool( 6031, ctrlTb );
createTool( separator(), ctrlTb );
createTool( 4000, addRemTb );
createTool( 4023, addRemTb );
createTool( 4031, addRemTb );
createTool( 4032, addRemTb );
+ createTool( 4133, addRemTb );
+ createTool( 4134, addRemTb );
+ createTool( 4135, addRemTb );
createTool( 4033, addRemTb );
createTool( separator(), addRemTb );
createTool( 4034, addRemTb );
createTool( 4035, addRemTb );
createTool( 4036, addRemTb );
+ createTool( 4136, addRemTb );
createTool( 4037, addRemTb );
createTool( 4038, addRemTb );
createTool( 4039, addRemTb );
createTool( 4040, addRemTb );
+ createTool( 4140, addRemTb );
createTool( separator(), addRemTb );
createTool( 4041, addRemTb );
createTool( 4042, addRemTb );
popupMgr()->insert( separator(), -1, 0 );
createPopupItem( 417, OB, mesh + " " + subMesh ); // convert to quadratic
createPopupItem( 418, OB, mesh + " " + group, // create 2D mesh from 3D
- "&& dim>=2");
+ "&& dim>=2");
popupMgr()->insert( separator(), -1, 0 );
QString only_one_non_empty = QString( " && %1=1 && numberOfNodes>0" ).arg( dc );
popupMgr()->setRule( action( 6005 ), aMeshInVtkHasNodes, QtxPopupMgr::VisibleRule );
popupMgr()->setRule( action( 6005 ), "controlMode = 'eFreeNodes'", QtxPopupMgr::ToggleRule );
+ popupMgr()->insert ( action( 6028 ), aSubId, -1 ); // EQUAL_NODE
+ popupMgr()->setRule( action( 6028 ), aMeshInVtkHasNodes, QtxPopupMgr::VisibleRule );
+ popupMgr()->setRule( action( 6028 ), "controlMode = 'eCoincidentNodes'", QtxPopupMgr::ToggleRule);
+
aSubId = popupMgr()->insert( tr( "MEN_EDGE_CTRL" ), anId, -1 ); // EDGE CONTROLS
popupMgr()->insert( action( 6002 ), aSubId, -1 ); // FREE_EDGE
popupMgr()->insert( action( 6004 ), aSubId, -1 ); // CONNECTION
popupMgr()->setRule( action( 6004 ), aMeshInVtkHasEdges, QtxPopupMgr::VisibleRule );
popupMgr()->setRule( action( 6004 ), "controlMode = 'eMultiConnection'", QtxPopupMgr::ToggleRule );
+ popupMgr()->insert ( action( 6029 ), aSubId, -1 ); // EQUAL_EDGE
+ popupMgr()->setRule( action( 6029 ), aMeshInVtkHasEdges, QtxPopupMgr::VisibleRule );
+ popupMgr()->setRule( action( 6029 ), "controlMode = 'eCoincidentElems1D'", QtxPopupMgr::ToggleRule);
aSubId = popupMgr()->insert( tr( "MEN_FACE_CTRL" ), anId, -1 ); // FACE CONTROLS
popupMgr()->insert ( action( 6027 ), aSubId, -1 ); // OVER_CONSTRAINED_FACE
popupMgr()->setRule( action( 6027 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
popupMgr()->setRule( action( 6027 ), "controlMode = 'eOverConstrainedFace'", QtxPopupMgr::ToggleRule );
+ popupMgr()->insert ( action( 6030 ), aSubId, -1 ); // EQUAL_FACE
+ popupMgr()->setRule( action( 6030 ), aMeshInVtkHasFaces, QtxPopupMgr::VisibleRule );
+ popupMgr()->setRule( action( 6030 ), "controlMode = 'eCoincidentElems2D'", QtxPopupMgr::ToggleRule );
aSubId = popupMgr()->insert( tr( "MEN_VOLUME_CTRL" ), anId, -1 ); // VOLUME CONTROLS
popupMgr()->setRule( action( 6026 ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
popupMgr()->setRule( action( 6026 ), "controlMode = 'eOverConstrainedVolume'", QtxPopupMgr::ToggleRule );
+ popupMgr()->insert ( action( 6031 ), aSubId, -1 ); // EQUAL_VOLUME
+ popupMgr()->setRule( action( 6031 ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
+ popupMgr()->setRule( action( 6031 ), "controlMode = 'eCoincidentElems3D'", QtxPopupMgr::ToggleRule );
+
popupMgr()->insert( separator(), anId, -1 );
popupMgr()->insert( action( 201 ), anId, -1 ); // SCALAR_BAR_PROP
GetSMESHGen()->SetCurrentStudy( _CAST(Study,aStudy)->GetStudy() );
updateObjBrowser(); // objects can be removed
}
-
+
// get all view currently opened in the study and connect their signals to
// the corresponding slots of the class.
SUIT_Desktop* aDesk = study->application()->desktop();
{
if ( dynamic_cast<SVTK_ViewManager*>( mgr ) ) {
SMESH::UpdateSelectionProp( this );
-
+
QVector<SUIT_ViewWindow*> aViews = mgr->getViews();
for(int i = 0; i < aViews.count() ; i++){
SUIT_ViewWindow *sf = aViews[i];
int prec = addPreference( tr( "PREF_PRECISION_VALUE" ), qaGroup, LightApp_Preferences::IntSpin, "SMESH", "controls_precision" );
setPreferenceProperty( prec, "min", 0 );
setPreferenceProperty( prec, "max", 16 );
+ int doubleNodesTol = addPreference( tr( "PREF_EQUAL_NODES_TOL" ), qaGroup, LightApp_Preferences::DblSpin, "SMESH", "equal_nodes_tolerance" );
+ setPreferenceProperty( doubleNodesTol, "precision", 10 );
+ setPreferenceProperty( doubleNodesTol, "min", 0.0000000001 );
+ setPreferenceProperty( doubleNodesTol, "max", 1000000.0 );
+ setPreferenceProperty( doubleNodesTol, "step", 0.0000001 );
int dispgroup = addPreference( tr( "PREF_DISPLAY_MODE" ), genTab );
setPreferenceProperty( dispgroup, "columns", 2 );
setPreferenceProperty( nbSeg, "min", 1 );
setPreferenceProperty( nbSeg, "max", 10000000 );
+ int loadGroup = addPreference( tr( "SMESH_PREF_MESH_LOADING" ), genTab );
+ addPreference( tr( "PREF_FORGET_MESH_AT_HYP_MODIF" ), loadGroup, LightApp_Preferences::Bool,
+ "SMESH", "forget_mesh_on_hyp_modif" );
+
+
// Quantities with individual precision settings
int precGroup = addPreference( tr( "SMESH_PREF_GROUP_PRECISION" ), genTab );
setPreferenceProperty( precGroup, "columns", 2 );
setPreferenceProperty( chunkSize, "min", 0 );
setPreferenceProperty( chunkSize, "max", 1000 );
setPreferenceProperty( chunkSize, "step", 50 );
-
+
+ int pyDumpGroup = addPreference( tr( "PREF_PYTHON_DUMP" ), genTab );
+ addPreference( tr( "PREF_HISTORICAL_PYTHON_DUMP" ), pyDumpGroup, LightApp_Preferences::Bool, "SMESH", "historical_python_dump" );
+
// Mesh tab ------------------------------------------------------------------------
int meshTab = addPreference( tr( "PREF_TAB_MESH" ) );
int nodeGroup = addPreference( tr( "PREF_GROUP_NODES" ), meshTab );
int ColorId = addPreference( tr( "PREF_FILL" ), elemGroup, LightApp_Preferences::BiColor, "SMESH", "fill_color" );
addPreference( tr( "PREF_COLOR_0D" ), elemGroup, LightApp_Preferences::Color, "SMESH", "elem0d_color" );
-
+
addPreference( tr( "PREF_OUTLINE" ), elemGroup, LightApp_Preferences::Color, "SMESH", "outline_color" );
addPreference( tr( "PREF_WIREFRAME" ), elemGroup, LightApp_Preferences::Color, "SMESH", "wireframe_color" );
-
+
setPreferenceProperty( ColorId, "text", tr("PREF_BACKFACE") );
int grpGroup = addPreference( tr( "PREF_GROUP_GROUPS" ), meshTab );
addPreference( tr( "PREF_OBJECT_COLOR" ), selGroup, LightApp_Preferences::Color, "SMESH", "selection_object_color" );
addPreference( tr( "PREF_ELEMENT_COLOR" ), selGroup, LightApp_Preferences::Color, "SMESH", "selection_element_color" );
- int selW = addPreference( tr( "PREF_WIDTH" ), selGroup, LightApp_Preferences::IntSpin, "SMESH", "selection_width" );
-
- setPreferenceProperty( selW, "min", 1 );
- setPreferenceProperty( selW, "max", 5 );
int preGroup = addPreference( tr( "PREF_GROUP_PRESELECTION" ), selTab );
setPreferenceProperty( preGroup, "columns", 2 );
addPreference( tr( "PREF_HIGHLIGHT_COLOR" ), preGroup, LightApp_Preferences::Color, "SMESH", "highlight_color" );
- int preW = addPreference( tr( "PREF_WIDTH" ), preGroup, LightApp_Preferences::IntSpin, "SMESH", "highlight_width" );
-
- setPreferenceProperty( preW, "min", 1 );
- setPreferenceProperty( preW, "max", 5 );
int precSelGroup = addPreference( tr( "PREF_GROUP_PRECISION" ), selTab );
setPreferenceProperty( precSelGroup, "columns", 2 );
setPreferenceProperty( hh, "min", 0.0 );
setPreferenceProperty( hh, "max", 1.0 );
setPreferenceProperty( hh, "step", 0.1 );
-
+
int distributionGr = addPreference( tr( "SMESH_DISTRIBUTION_SCALARBAR" ), sbarTab, LightApp_Preferences::Auto, "SMESH", "distribution_visibility" );
int coloringType = addPreference( tr( "SMESH_DISTRIBUTION_COLORING_TYPE" ), distributionGr, LightApp_Preferences::Selector, "SMESH", "distribution_coloring_type" );
setPreferenceProperty( distributionGr, "columns", 3 );
QStringList types;
- types.append( tr( "SMESH_MONOCOLOR" ) );
+ types.append( tr( "SMESH_MONOCOLOR" ) );
types.append( tr( "SMESH_MULTICOLOR" ) );
indices.clear(); indices.append( 0 ); indices.append( 1 );
setPreferenceProperty( coloringType, "strings", types );
std::string aWarning;
SUIT_ResourceMgr* aResourceMgr = SMESH::GetResourceMgr(this);
if( name=="selection_object_color" || name=="selection_element_color" ||
- name=="selection_width" || name=="highlight_color" || name=="highlight_width" ||
+ name=="highlight_color" ||
name=="selection_precision_node" || name=="selection_precision_element" ||
name=="selection_precision_object")
SMESH::UpdateSelectionProp( this );
int nbSeg = aResourceMgr->integerValue( "SMESH", "nb_segments_per_edge", 15 );
myComponentSMESH->SetDefaultNbSegments( nbSeg );
}
+ else if ( name == "historical_python_dump" ||
+ name == "forget_mesh_on_hyp_modif") {
+ QString val = aResourceMgr->stringValue( "SMESH", name );
+ myComponentSMESH->SetOption( name.toLatin1().constData(), val.toLatin1().constData() );
+ }
if(aWarning.size() != 0){
aWarning += "The default values are applied instead.";
// Colors (surface:edge:)
vtkFloatingPointType r, g, b;
int delta;
-
+
aSmeshActor->GetSufaceColor(r, g, b, delta);
QString colorStr ("surface");
colorStr += gDigitsSep; colorStr += QString::number(r);
colorStr += gDigitsSep; colorStr += "backsurface";
colorStr += gDigitsSep; colorStr += QString::number(delta);
-
+
aSmeshActor->GetEdgeColor(r, g, b);
colorStr += gDigitsSep; colorStr += "edge";
for ( ; anIter2 != anActorList.end(); anIter2++ ) {
if( aSmeshActor == *anIter2 ) {
ip->setParameter( entry, param + QString::number( ++aPlaneId ).toLatin1().constData(),
- QString::number( anId ).toLatin1().constData() );
+ QString::number( anId ).toLatin1().constData() );
break;
}
}
continue;
TPlaneDataList& aPlaneDataList = aPlaneDataMap[ aViewId ];
- aPlaneDataList.push_back( aPlaneData );
+ aPlaneDataList.push_back( aPlaneData );
}
}
"surface:r:g:b:backsurface:r:g:b:edge:r:g:b:node:r:g:b or surface:r:g:b:backsurface:delta:edge:r:g:b:node:r:g:b:outline:r:g:b");
}
else {
- int delta = 0;
+ int delta = 0;
float er,eg,eb;
float nr,ng,nb;
vtkFloatingPointType otr,otg,otb;
//Old case backsurface color is independent
if( colors.count() == 16 ) {
QColor ffc;
- SMESH::GetColor( "SMESH", "fill_color", ffc, delta, "0,170,255|-100" ) ;
+ SMESH::GetColor( "SMESH", "fill_color", ffc, delta, "0,170,255|-100" ) ;
er = colors[9].toFloat();
eg = colors[10].toFloat();
eb = colors[11].toFloat();
-
+
nr = colors[13].toFloat();
ng = colors[14].toFloat();
nb = colors[15].toFloat();
er = colors[7].toFloat();
eg = colors[8].toFloat();
eb = colors[9].toFloat();
-
+
nr = colors[11].toFloat();
ng = colors[12].toFloat();
nb = colors[13].toFloat();
#ifndef DISABLE_PLOT2DVIEWER
//Crear all Plot2d Viewers if need.
SMESH::ClearPlot2Viewers(pview);
-#endif
+#endif
+}
+
+void SMESHGUI::message( const QString& msg )
+{
+ // dispatch message
+ QStringList data = msg.split("/");
+ if ( data.count() > 0 ) {
+ if ( data.first() == "mesh_loading" ) {
+ // get mesh entry
+ QString entry = data.count() > 1 ? data[1] : QString();
+ if ( entry.isEmpty() )
+ return;
+ // get study
+ _PTR(Study) study = dynamic_cast<SalomeApp_Study*>( application()->activeStudy() )->studyDS();
+ // get mesh name
+ _PTR(SObject) obj = study->FindObjectID( entry.toLatin1().constData() );
+ QString name;
+ if ( obj )
+ name = obj->GetName().c_str();
+ if ( name.isEmpty() )
+ return;
+
+ if ( data.last() == "stop" )
+ application()->putInfo( tr( "MESH_LOADING_MSG_FINISHED" ).arg( name ) );
+ else
+ application()->putInfo( tr( "MESH_LOADING_MSG" ).arg( name ) );
+ QApplication::processEvents();
+ }
+ }
}
/*!
void SMESHGUI::connectView( const SUIT_ViewWindow* pview ) {
if(!pview)
return;
-
+
SUIT_ViewManager* viewMgr = pview->getViewManager();
if ( viewMgr ) {
disconnect( viewMgr, SIGNAL( deleteView( SUIT_ViewWindow* ) ),
this, SLOT( onViewClosed( SUIT_ViewWindow* ) ) );
-
+
connect( viewMgr, SIGNAL( deleteView( SUIT_ViewWindow* ) ),
this, SLOT( onViewClosed( SUIT_ViewWindow* ) ) );
}
}
-
+
/*!
\brief Return \c true if object can be renamed
*/
if( !anApp )
return false;
- _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); //Document OCAF de l'etude active
- if( !aStudy )
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( anApp->activeStudy() );
+ if( !appStudy )
return false;
- bool appRes = SalomeApp_Module::renameAllowed(entry);
- if( !appRes )
- return false;
+ SalomeApp_DataObject* obj = dynamic_cast<SalomeApp_DataObject*>(appStudy->findObjectByEntry(entry));
+ if(!obj)
+ return false;
+
+ if(appStudy->isComponent(entry) || obj->isReference())
+ return false;
+
// check type to prevent renaming of inappropriate objects
- int aType = SMESHGUI_Selection::type(qPrintable(entry), aStudy);
+ int aType = SMESHGUI_Selection::type(qPrintable(entry), SMESH::GetActiveStudyDocument());
if (aType == MESH || aType == GROUP ||
aType == SUBMESH || aType == SUBMESH_COMPOUND ||
aType == SUBMESH_SOLID || aType == SUBMESH_FACE ||
\brief Return \c true if rename operation finished successfully, \c false otherwise.
*/
bool SMESHGUI::renameObject( const QString& entry, const QString& name) {
-
+
SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>( application() );
if( !anApp )
return false;
-
- _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); //Document OCAF de l'etude active
- if( !aStudy )
- return false;
+
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( anApp->activeStudy() );
- bool appRes = SalomeApp_Module::renameObject(entry,name);
- if( !appRes )
+ if(!appStudy)
+ return false;
+
+ _PTR(Study) aStudy = appStudy->studyDS();
+
+ if(!aStudy)
return false;
+ bool aLocked = (_PTR(AttributeStudyProperties)(appStudy->studyDS()->GetProperties()))->IsLocked();
+ if ( aLocked ) {
+ SUIT_MessageBox::warning ( anApp->desktop(), QObject::tr("WRN_WARNING"), QObject::tr("WRN_STUDY_LOCKED") );
+ return false;
+ }
+
+
_PTR(SObject) obj = aStudy->FindObjectID( qPrintable(entry) );
_PTR(GenericAttribute) anAttr;
_PTR(AttributeName) aName;
if ( obj->FindAttribute(anAttr, "AttributeName") ) {
aName = anAttr;
// check type to prevent renaming of inappropriate objects
- int aType = SMESHGUI_Selection::type( qPrintable(entry), aStudy );
+ int aType = SMESHGUI_Selection::type( qPrintable(entry), SMESH::GetActiveStudyDocument() );
if (aType == MESH || aType == GROUP ||
aType == SUBMESH || aType == SUBMESH_COMPOUND ||
aType == SUBMESH_SOLID || aType == SUBMESH_FACE ||
aType == HYPOTHESIS || aType == ALGORITHM) {
if ( !name.isEmpty() ) {
SMESHGUI::GetSMESHGen()->SetName(obj->GetIOR().c_str(), qPrintable(name) );
-
+
// update name of group object and its actor
- Handle(SALOME_InteractiveObject) IObject =
+ Handle(SALOME_InteractiveObject) IObject =
new SALOME_InteractiveObject ( qPrintable(entry), "SMESH", qPrintable(name) );
-
+
SMESH::SMESH_GroupBase_var aGroupObject = SMESH::IObjectToInterface<SMESH::SMESH_GroupBase>(IObject);
if( !aGroupObject->_is_nil() ) {
aGroupObject->SetName( qPrintable(name) );
}
return true;
}
- }
+ }
}
}
return false;