mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-26 09:20:34 +05:00
0021343: EDF 1930 SMESH: Huge memory occupation when assigning an hypothesis to a big model
This commit is contained in:
parent
38b9ea6198
commit
e062bbd055
@ -80,6 +80,7 @@
|
|||||||
<parameter name="quadratic_mode" value="0"/>
|
<parameter name="quadratic_mode" value="0"/>
|
||||||
<parameter name="max_angle" value="2"/>
|
<parameter name="max_angle" value="2"/>
|
||||||
<parameter name="documentation" value="smesh_help"/>
|
<parameter name="documentation" value="smesh_help"/>
|
||||||
|
<parameter name="preview_actor_chunk_size" value="100" />
|
||||||
<!-- Input field precisions -->
|
<!-- Input field precisions -->
|
||||||
<parameter name="def_precision" value="3" />
|
<parameter name="def_precision" value="3" />
|
||||||
<parameter name="length_precision" value="-6" />
|
<parameter name="length_precision" value="-6" />
|
||||||
|
@ -4396,6 +4396,13 @@ void SMESHGUI::createPreferences()
|
|||||||
setPreferenceProperty( precs[ii], "precision", 2 );
|
setPreferenceProperty( precs[ii], "precision", 2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int previewGroup = addPreference( tr( "SMESH_PREF_GROUP_PREVIEW" ), genTab );
|
||||||
|
setPreferenceProperty( previewGroup, "columns", 2 );
|
||||||
|
int chunkSize = addPreference( tr( "PREF_PREVIEW_CHUNK_SIZE" ), previewGroup, LightApp_Preferences::IntSpin, "SMESH", "preview_actor_chunk_size" );
|
||||||
|
setPreferenceProperty( chunkSize, "min", 0 );
|
||||||
|
setPreferenceProperty( chunkSize, "max", 1000 );
|
||||||
|
setPreferenceProperty( chunkSize, "step", 50 );
|
||||||
|
|
||||||
// Mesh tab ------------------------------------------------------------------------
|
// Mesh tab ------------------------------------------------------------------------
|
||||||
int meshTab = addPreference( tr( "PREF_TAB_MESH" ) );
|
int meshTab = addPreference( tr( "PREF_TAB_MESH" ) );
|
||||||
int nodeGroup = addPreference( tr( "PREF_GROUP_NODES" ), meshTab );
|
int nodeGroup = addPreference( tr( "PREF_GROUP_NODES" ), meshTab );
|
||||||
|
@ -3612,6 +3612,10 @@ Please, create VTK viewer and try again</translation>
|
|||||||
<source>SMESH_PREF_GROUP_PRECISION</source>
|
<source>SMESH_PREF_GROUP_PRECISION</source>
|
||||||
<translation>Input fields precision</translation>
|
<translation>Input fields precision</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SMESH_PREF_GROUP_PREVIEW</source>
|
||||||
|
<translation>Preview</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>PREF_GROUP_ELEMENTS</source>
|
<source>PREF_GROUP_ELEMENTS</source>
|
||||||
<translation>Elements</translation>
|
<translation>Elements</translation>
|
||||||
@ -3736,6 +3740,10 @@ Please, create VTK viewer and try again</translation>
|
|||||||
<source>PREF_WIDTH</source>
|
<source>PREF_WIDTH</source>
|
||||||
<translation>Width</translation>
|
<translation>Width</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>PREF_PREVIEW_CHUNK_SIZE</source>
|
||||||
|
<translation>Sub-shapes preview chunk size</translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>SMESHGUI_AddQuadraticElementDlg</name>
|
<name>SMESHGUI_AddQuadraticElementDlg</name>
|
||||||
@ -6058,4 +6066,11 @@ as they are of improper type:
|
|||||||
<translation>elements</translation>
|
<translation>elements</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>StdMeshersGUI_SubShapeSelectorWdg</name>
|
||||||
|
<message>
|
||||||
|
<source>X_FROM_Y_ITEMS_SHOWN</source>
|
||||||
|
<translation>%1-%2 from %3 items shown</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
@ -93,20 +93,28 @@ StdMeshersGUI_SubShapeSelectorWdg
|
|||||||
edgesLayout->setMargin( MARGIN );
|
edgesLayout->setMargin( MARGIN );
|
||||||
edgesLayout->setSpacing( SPACING );
|
edgesLayout->setSpacing( SPACING );
|
||||||
|
|
||||||
myListWidget = new QListWidget( this );
|
myListWidget = new QListWidget( this );
|
||||||
myAddButton = new QPushButton( tr( "SMESH_BUT_ADD" ), this );
|
myAddButton = new QPushButton( tr( "SMESH_BUT_ADD" ), this );
|
||||||
myRemoveButton = new QPushButton( tr( "SMESH_BUT_REMOVE" ), this );
|
myRemoveButton = new QPushButton( tr( "SMESH_BUT_REMOVE" ), this );
|
||||||
|
myInfoLabel = new QLabel( this );
|
||||||
|
myPrevButton = new QPushButton( "<<", this );
|
||||||
|
myNextButton = new QPushButton( ">>", this );
|
||||||
myListWidget->setSelectionMode( QListWidget::ExtendedSelection );
|
myListWidget->setSelectionMode( QListWidget::ExtendedSelection );
|
||||||
|
|
||||||
edgesLayout->addWidget(myListWidget, 0, 0, 3, 3);
|
edgesLayout->addWidget(myListWidget, 0, 0, 3, 3);
|
||||||
edgesLayout->addWidget(myAddButton, 0, 4);
|
edgesLayout->addWidget(myAddButton, 0, 3);
|
||||||
edgesLayout->addWidget(myRemoveButton, 1, 4);
|
edgesLayout->addWidget(myRemoveButton, 1, 3);
|
||||||
|
edgesLayout->addWidget(myInfoLabel, 3, 0, 1, 3);
|
||||||
|
edgesLayout->addWidget(myPrevButton, 4, 0);
|
||||||
|
edgesLayout->addWidget(myNextButton, 4, 2);
|
||||||
|
|
||||||
//edgesLayout->setRowStretch(2, 5);
|
edgesLayout->setRowStretch(2, 5);
|
||||||
edgesLayout->setColumnStretch(2, 5);
|
edgesLayout->setColumnStretch(1, 5);
|
||||||
|
|
||||||
setLayout( edgesLayout );
|
myListWidget->setMinimumWidth(300);
|
||||||
setMinimumWidth( 300 );
|
myInfoLabel->setMinimumWidth(300);
|
||||||
|
myInfoLabel->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
|
||||||
|
myInfoLabel->setAlignment(Qt::AlignCenter);
|
||||||
|
|
||||||
mySubShType = aSubShType;
|
mySubShType = aSubShType;
|
||||||
|
|
||||||
@ -171,6 +179,8 @@ void StdMeshersGUI_SubShapeSelectorWdg::init()
|
|||||||
|
|
||||||
connect( myAddButton, SIGNAL(clicked()), SLOT(onAdd()));
|
connect( myAddButton, SIGNAL(clicked()), SLOT(onAdd()));
|
||||||
connect( myRemoveButton, SIGNAL(clicked()), SLOT(onRemove()));
|
connect( myRemoveButton, SIGNAL(clicked()), SLOT(onRemove()));
|
||||||
|
connect( myPrevButton, SIGNAL(clicked()), SLOT(onPrevious()));
|
||||||
|
connect( myNextButton, SIGNAL(clicked()), SLOT(onNext()));
|
||||||
|
|
||||||
connect( mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
|
connect( mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
|
||||||
connect( myListWidget, SIGNAL(itemSelectionChanged()), this, SLOT(onListSelectionChanged()));
|
connect( myListWidget, SIGNAL(itemSelectionChanged()), this, SLOT(onListSelectionChanged()));
|
||||||
@ -296,6 +306,7 @@ void StdMeshersGUI_SubShapeSelectorWdg::SelectionIntoArgument()
|
|||||||
myAddButton->setEnabled( ( myListWidget->count() < myMaxSize || myMaxSize == -1 ) && mySelectedIDs.size() > 0 && ( mySelectedIDs.size() <= myMaxSize || myMaxSize == -1 ) );
|
myAddButton->setEnabled( ( myListWidget->count() < myMaxSize || myMaxSize == -1 ) && mySelectedIDs.size() > 0 && ( mySelectedIDs.size() <= myMaxSize || myMaxSize == -1 ) );
|
||||||
|
|
||||||
//Connect Selected Ids in viewer and dialog's Ids list
|
//Connect Selected Ids in viewer and dialog's Ids list
|
||||||
|
bool signalsBlocked = myListWidget->blockSignals( true );
|
||||||
myListWidget->clearSelection();
|
myListWidget->clearSelection();
|
||||||
if ( mySelectedIDs.size() > 0 ) {
|
if ( mySelectedIDs.size() > 0 ) {
|
||||||
for (int i = 0; i < mySelectedIDs.size(); i++) {
|
for (int i = 0; i < mySelectedIDs.size(); i++) {
|
||||||
@ -306,6 +317,7 @@ void StdMeshersGUI_SubShapeSelectorWdg::SelectionIntoArgument()
|
|||||||
item->setSelected(true);
|
item->setSelected(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
myListWidget->blockSignals( signalsBlocked );
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -360,6 +372,28 @@ void StdMeshersGUI_SubShapeSelectorWdg::onRemove()
|
|||||||
myAddButton->setEnabled( true );
|
myAddButton->setEnabled( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StdMeshersGUI_SubShapeSelectorWdg::onPrevious()
|
||||||
|
{
|
||||||
|
if ( myPreviewActor ) {
|
||||||
|
myPreviewActor->previous();
|
||||||
|
myListWidget->clearSelection();
|
||||||
|
updateButtons();
|
||||||
|
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
||||||
|
aViewWindow->Repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StdMeshersGUI_SubShapeSelectorWdg::onNext()
|
||||||
|
{
|
||||||
|
if ( myPreviewActor ) {
|
||||||
|
myPreviewActor->next();
|
||||||
|
myListWidget->clearSelection();
|
||||||
|
updateButtons();
|
||||||
|
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
||||||
|
aViewWindow->Repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
// function : onListSelectionChanged()
|
// function : onListSelectionChanged()
|
||||||
// purpose : Called when selection in element list is changed
|
// purpose : Called when selection in element list is changed
|
||||||
@ -404,6 +438,9 @@ void StdMeshersGUI_SubShapeSelectorWdg::updateState()
|
|||||||
bool state = false;
|
bool state = false;
|
||||||
if ( !myGeomShape.IsNull() )
|
if ( !myGeomShape.IsNull() )
|
||||||
state = true;
|
state = true;
|
||||||
|
myInfoLabel->setVisible( false );
|
||||||
|
myPrevButton->setVisible( false );
|
||||||
|
myNextButton->setVisible( false );
|
||||||
|
|
||||||
myListWidget->setEnabled( state );
|
myListWidget->setEnabled( state );
|
||||||
myAddButton->setEnabled( mySelectedIDs.size() > 0 );
|
myAddButton->setEnabled( mySelectedIDs.size() > 0 );
|
||||||
@ -419,6 +456,7 @@ void StdMeshersGUI_SubShapeSelectorWdg::updateState()
|
|||||||
myPreviewActor->AddToRender( myRenderer );
|
myPreviewActor->AddToRender( myRenderer );
|
||||||
aViewWindow->Repaint();
|
aViewWindow->Repaint();
|
||||||
}
|
}
|
||||||
|
updateButtons();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -552,3 +590,21 @@ QList<int> StdMeshersGUI_SubShapeSelectorWdg::GetCorrectedListOfIDs( bool fromSu
|
|||||||
|
|
||||||
return aList;
|
return aList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StdMeshersGUI_SubShapeSelectorWdg::updateButtons()
|
||||||
|
{
|
||||||
|
if ( myPreviewActor ) {
|
||||||
|
int total = myPreviewActor->count();
|
||||||
|
int chunk = myPreviewActor->currentChunk();
|
||||||
|
int chunkSize = myPreviewActor->chunkSize();
|
||||||
|
int imin = chunk*chunkSize+1;
|
||||||
|
int imax = std::min((chunk+1)*chunkSize, total);
|
||||||
|
bool vis = imax > 0 && total > chunkSize;
|
||||||
|
myInfoLabel->setVisible( vis );
|
||||||
|
myPrevButton->setVisible( vis );
|
||||||
|
myNextButton->setVisible( vis );
|
||||||
|
myInfoLabel->setText( tr( "X_FROM_Y_ITEMS_SHOWN" ).arg(imin).arg(imax).arg(total) );
|
||||||
|
myPrevButton->setEnabled( myPreviewActor->hasPrevious() );
|
||||||
|
myNextButton->setEnabled( myPreviewActor->hasNext() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -39,6 +39,7 @@ class SMESHGUI;
|
|||||||
class LightApp_SelectionMgr;
|
class LightApp_SelectionMgr;
|
||||||
class SVTK_Selector;
|
class SVTK_Selector;
|
||||||
class QPushButton;
|
class QPushButton;
|
||||||
|
class QLabel;
|
||||||
class QLineEdit;
|
class QLineEdit;
|
||||||
class QCheckBox;
|
class QCheckBox;
|
||||||
class QListWidget;
|
class QListWidget;
|
||||||
@ -85,10 +86,13 @@ public:
|
|||||||
private:
|
private:
|
||||||
void updateState();
|
void updateState();
|
||||||
void setFilter();
|
void setFilter();
|
||||||
|
void updateButtons();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onAdd();
|
void onAdd();
|
||||||
void onRemove();
|
void onRemove();
|
||||||
|
void onPrevious();
|
||||||
|
void onNext();
|
||||||
void SelectionIntoArgument();
|
void SelectionIntoArgument();
|
||||||
void onListSelectionChanged();
|
void onListSelectionChanged();
|
||||||
|
|
||||||
@ -109,6 +113,9 @@ private:
|
|||||||
QListWidget* myListWidget;
|
QListWidget* myListWidget;
|
||||||
QPushButton* myAddButton;
|
QPushButton* myAddButton;
|
||||||
QPushButton* myRemoveButton;
|
QPushButton* myRemoveButton;
|
||||||
|
QLabel* myInfoLabel;
|
||||||
|
QPushButton* myPrevButton;
|
||||||
|
QPushButton* myNextButton;
|
||||||
QList<int> mySelectedIDs;
|
QList<int> mySelectedIDs;
|
||||||
QList<int> myListOfIDs;
|
QList<int> myListOfIDs;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user