mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-02-26 03:45:36 +05:00
[bos #32736][CEA] Threshold of criteria. Added Threshold and Wireframe Off checkbox to the Scalar Bar Properties dialog.
This commit is contained in:
parent
542718ee9d
commit
426c37e4f6
@ -80,6 +80,9 @@
|
|||||||
#include <vtkImplicitBoolean.h>
|
#include <vtkImplicitBoolean.h>
|
||||||
#include <vtkImplicitFunctionCollection.h>
|
#include <vtkImplicitFunctionCollection.h>
|
||||||
|
|
||||||
|
#include <vtkThreshold.h>
|
||||||
|
#include <vtkPassThrough.h>
|
||||||
|
|
||||||
#include "utilities.h"
|
#include "utilities.h"
|
||||||
|
|
||||||
|
|
||||||
@ -838,6 +841,8 @@ void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode )
|
|||||||
my3DActor->GetMapper()->SetScalarVisibility(false);
|
my3DActor->GetMapper()->SetScalarVisibility(false);
|
||||||
myBallActor->GetMapper()->SetScalarVisibility(false);
|
myBallActor->GetMapper()->SetScalarVisibility(false);
|
||||||
myScalarBarActor->SetVisibility(false);
|
myScalarBarActor->SetVisibility(false);
|
||||||
|
ClipThreshold(false);
|
||||||
|
SetWireframeOff(false);
|
||||||
|
|
||||||
bool anIsScalarVisible = theMode > eNone;
|
bool anIsScalarVisible = theMode > eNone;
|
||||||
|
|
||||||
@ -1821,6 +1826,8 @@ void SMESH_ActorDef::UpdateHighlight()
|
|||||||
case SMESH_DeviceActor::eSurface:
|
case SMESH_DeviceActor::eSurface:
|
||||||
case SMESH_DeviceActor::eWireframe:
|
case SMESH_DeviceActor::eWireframe:
|
||||||
{
|
{
|
||||||
|
anIsVisible = !IsWireframeOff();
|
||||||
|
|
||||||
if(myIsHighlighted) {
|
if(myIsHighlighted) {
|
||||||
myHighlitableActor->SetProperty(myHighlightProp);
|
myHighlitableActor->SetProperty(myHighlightProp);
|
||||||
}else if(myIsPreselected){
|
}else if(myIsPreselected){
|
||||||
@ -2487,6 +2494,49 @@ void SMESH_ActorDef::UpdateScalarBar()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hides the cells beyond threshold if isThresholdOn == true.
|
||||||
|
void SMESH_ActorDef::ClipThreshold(bool isThresholdOn, double min /*= 0.0*/, double max /*= 0.0*/)
|
||||||
|
{
|
||||||
|
myIsClipThresholdOn = isThresholdOn;
|
||||||
|
|
||||||
|
if (isThresholdOn)
|
||||||
|
{
|
||||||
|
// Initialize the filter
|
||||||
|
vtkSmartPointer<vtkThreshold> threshold = vtkSmartPointer<vtkThreshold>::New();
|
||||||
|
|
||||||
|
// We have set scalar data with SMESH_DeviceActor::SetControlMode() call as vtkDataSetAttributes::SCALARS.
|
||||||
|
// So, we don't need to pass an array name in SetInputArrayToProcess().
|
||||||
|
threshold->SetInputConnection(myControlActor->myMergeFilter->GetOutputPort());
|
||||||
|
threshold->SetInputArrayToProcess(0, 0, 0, vtkDataObject::FIELD_ASSOCIATION_CELLS, vtkDataSetAttributes::SCALARS);
|
||||||
|
|
||||||
|
// Set range
|
||||||
|
threshold->SetThresholdFunction(vtkThreshold::THRESHOLD_BETWEEN);
|
||||||
|
threshold->SetLowerThreshold(min);
|
||||||
|
threshold->SetUpperThreshold(max);
|
||||||
|
|
||||||
|
// Debug output
|
||||||
|
threshold->Update();
|
||||||
|
SCRUTE(threshold->GetOutput()->GetNumberOfCells());
|
||||||
|
|
||||||
|
// Add to the filters' chain
|
||||||
|
vtkAlgorithmOutput* port = threshold->GetOutputPort();
|
||||||
|
myControlActor->myPassFilter[0]->SetInputConnection(port);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Restore the filters' chain
|
||||||
|
myControlActor->SetImplicitFunctionUsed(myControlActor->myIsImplicitFunctionUsed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hides the wireframe if isWireframeOff == true.
|
||||||
|
void SMESH_ActorDef::SetWireframeOff(bool isWireframeOff)
|
||||||
|
{
|
||||||
|
myIsWireframeOff = isWireframeOff;
|
||||||
|
|
||||||
|
UpdateHighlight();
|
||||||
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::UpdateDistribution()
|
void SMESH_ActorDef::UpdateDistribution()
|
||||||
{
|
{
|
||||||
if(SMESH::Controls::NumericalFunctor* fun =
|
if(SMESH::Controls::NumericalFunctor* fun =
|
||||||
|
@ -166,6 +166,10 @@ class SMESHOBJECT_EXPORT SMESH_Actor: public SALOME_Actor
|
|||||||
|
|
||||||
virtual void UpdateScalarBar() = 0;
|
virtual void UpdateScalarBar() = 0;
|
||||||
virtual void UpdateDistribution() = 0;
|
virtual void UpdateDistribution() = 0;
|
||||||
|
virtual void ClipThreshold(bool isThresholdOn, double min = 0.0, double max = 0.0) = 0;
|
||||||
|
virtual bool IsClipThresholdOn() const = 0;
|
||||||
|
virtual void SetWireframeOff(bool isWireframeOff) = 0;
|
||||||
|
virtual bool IsWireframeOff() const = 0;
|
||||||
|
|
||||||
virtual void SetPointsFontProperties( SMESH::LabelFont family, int size,
|
virtual void SetPointsFontProperties( SMESH::LabelFont family, int size,
|
||||||
bool bold, bool italic, bool shadow,
|
bool bold, bool italic, bool shadow,
|
||||||
|
@ -226,6 +226,10 @@ class SMESH_ActorDef : public SMESH_Actor
|
|||||||
|
|
||||||
virtual void UpdateScalarBar();
|
virtual void UpdateScalarBar();
|
||||||
virtual void UpdateDistribution();
|
virtual void UpdateDistribution();
|
||||||
|
virtual void ClipThreshold(bool isThresholdOn, double min = 0.0, double max = 0.0);
|
||||||
|
virtual bool IsClipThresholdOn() const { return myIsClipThresholdOn; }
|
||||||
|
virtual void SetWireframeOff(bool isWireframeOff);
|
||||||
|
virtual bool IsWireframeOff() const { return myIsWireframeOff; }
|
||||||
|
|
||||||
#ifndef DISABLE_PLOT2DVIEWER
|
#ifndef DISABLE_PLOT2DVIEWER
|
||||||
virtual SPlot2d_Histogram* GetPlot2Histogram() { return my2dHistogram; }
|
virtual SPlot2d_Histogram* GetPlot2Histogram() { return my2dHistogram; }
|
||||||
@ -300,6 +304,8 @@ class SMESH_ActorDef : public SMESH_Actor
|
|||||||
int myRepresentationCache;
|
int myRepresentationCache;
|
||||||
bool myIsEntityModeCache;
|
bool myIsEntityModeCache;
|
||||||
bool myIsPointsVisible;
|
bool myIsPointsVisible;
|
||||||
|
bool myIsClipThresholdOn = false;
|
||||||
|
bool myIsWireframeOff = false;
|
||||||
|
|
||||||
bool myIsShrinkable;
|
bool myIsShrinkable;
|
||||||
bool myIsShrunk;
|
bool myIsShrunk;
|
||||||
|
@ -50,6 +50,8 @@
|
|||||||
|
|
||||||
#include <QtxColorButton.h>
|
#include <QtxColorButton.h>
|
||||||
|
|
||||||
|
#include "utilities.h"
|
||||||
|
|
||||||
// Qt includes
|
// Qt includes
|
||||||
#include <QButtonGroup>
|
#include <QButtonGroup>
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
@ -146,11 +148,21 @@ SMESHGUI_Preferences_ScalarBarDlg::SMESHGUI_Preferences_ScalarBarDlg( SMESHGUI*
|
|||||||
myLogarithmicCheck->setText(tr("SMESH_LOGARITHMIC_SCALARBAR"));
|
myLogarithmicCheck->setText(tr("SMESH_LOGARITHMIC_SCALARBAR"));
|
||||||
myLogarithmicCheck->setChecked(false);
|
myLogarithmicCheck->setChecked(false);
|
||||||
|
|
||||||
|
myThresholdCheck = new QCheckBox (myRangeGrp);
|
||||||
|
myThresholdCheck->setText(tr("SMESH_TRESHOLD_SCALARBAR"));
|
||||||
|
myThresholdCheck->setChecked(false);
|
||||||
|
|
||||||
|
myWireframeOffCheck = new QCheckBox (myRangeGrp);
|
||||||
|
myWireframeOffCheck->setText(tr("SMESH_WIREFRAME_OFF_SCALARBAR"));
|
||||||
|
myWireframeOffCheck->setChecked(false);
|
||||||
|
|
||||||
myRangeGrpLayout->addWidget( new QLabel( tr( "SMESH_RANGE_MIN" ), myRangeGrp ), 0, 0, 1, 1 );
|
myRangeGrpLayout->addWidget( new QLabel( tr( "SMESH_RANGE_MIN" ), myRangeGrp ), 0, 0, 1, 1 );
|
||||||
myRangeGrpLayout->addWidget( myMinEdit, 0, 1, 1, 1 );
|
myRangeGrpLayout->addWidget( myMinEdit, 0, 1, 1, 1 );
|
||||||
myRangeGrpLayout->addWidget( new QLabel( tr( "SMESH_RANGE_MAX" ), myRangeGrp ), 0, 2, 1, 1 );
|
myRangeGrpLayout->addWidget( new QLabel( tr( "SMESH_RANGE_MAX" ), myRangeGrp ), 0, 2, 1, 1 );
|
||||||
myRangeGrpLayout->addWidget( myMaxEdit, 0, 3, 1, 1 );
|
myRangeGrpLayout->addWidget( myMaxEdit, 0, 3, 1, 1 );
|
||||||
myRangeGrpLayout->addWidget( myLogarithmicCheck, 1, 0, 1, 4 );
|
myRangeGrpLayout->addWidget( myLogarithmicCheck, 1, 0, 1, 1 );
|
||||||
|
myRangeGrpLayout->addWidget( myThresholdCheck, 1, 1, 1, 1 );
|
||||||
|
myRangeGrpLayout->addWidget( myWireframeOffCheck, 1, 2, 1, 1 );
|
||||||
|
|
||||||
aTopLayout->addWidget( myRangeGrp );
|
aTopLayout->addWidget( myRangeGrp );
|
||||||
|
|
||||||
@ -564,6 +576,9 @@ bool SMESHGUI_Preferences_ScalarBarDlg::onApply()
|
|||||||
|
|
||||||
myLookupTable->SetRange( aMin, aMax );
|
myLookupTable->SetRange( aMin, aMax );
|
||||||
myLookupTable->SetNumberOfTableValues(myColorsSpin->value());
|
myLookupTable->SetNumberOfTableValues(myColorsSpin->value());
|
||||||
|
applyThreshold(aMin, aMax);
|
||||||
|
|
||||||
|
applyWireframeOff();
|
||||||
|
|
||||||
bool scaleChanged = (myLogarithmicCheck->isChecked() != (myLookupTable->GetScale() == VTK_SCALE_LOG10));
|
bool scaleChanged = (myLogarithmicCheck->isChecked() != (myLookupTable->GetScale() == VTK_SCALE_LOG10));
|
||||||
if (scaleChanged)
|
if (scaleChanged)
|
||||||
@ -656,8 +671,15 @@ void SMESHGUI_Preferences_ScalarBarDlg::onSelectionChanged()
|
|||||||
myLogarithmicCheck->setChecked(aLookupTable->GetScale() == VTK_SCALE_LOG10);
|
myLogarithmicCheck->setChecked(aLookupTable->GetScale() == VTK_SCALE_LOG10);
|
||||||
//myLogarithmicCheck->setEnabled(range[0] > 1e-07 && range[1] > 1e-07);
|
//myLogarithmicCheck->setEnabled(range[0] > 1e-07 && range[1] > 1e-07);
|
||||||
myLogarithmicCheck->setEnabled(range[0] != range[1]);
|
myLogarithmicCheck->setEnabled(range[0] != range[1]);
|
||||||
|
|
||||||
|
myThresholdCheck->setChecked(myActor->IsClipThresholdOn());
|
||||||
|
applyThreshold(range[0], range[1]);
|
||||||
|
|
||||||
|
myWireframeOffCheck->setChecked(myActor->IsWireframeOff());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
applyWireframeOff();
|
||||||
|
|
||||||
vtkTextProperty* aTitleTextPrp = myScalarBarActor->GetTitleTextProperty();
|
vtkTextProperty* aTitleTextPrp = myScalarBarActor->GetTitleTextProperty();
|
||||||
double aTColor[3];
|
double aTColor[3];
|
||||||
aTitleTextPrp->GetColor( aTColor );
|
aTitleTextPrp->GetColor( aTColor );
|
||||||
@ -736,11 +758,19 @@ void SMESHGUI_Preferences_ScalarBarDlg::onSelectionChanged()
|
|||||||
//=================================================================================================
|
//=================================================================================================
|
||||||
void SMESHGUI_Preferences_ScalarBarDlg::onMinMaxChanged()
|
void SMESHGUI_Preferences_ScalarBarDlg::onMinMaxChanged()
|
||||||
{
|
{
|
||||||
double aMin = myMinEdit->text().toDouble();
|
// Check if the min-max range is valid.
|
||||||
double aMax = myMaxEdit->text().toDouble();
|
const double aMin = myMinEdit->text().toDouble();
|
||||||
bool isLogarithmicEnabled = (aMin > 1e-07 && aMax > 1e-07);
|
const double aMax = myMaxEdit->text().toDouble();
|
||||||
myLogarithmicCheck->setChecked(isLogarithmicEnabled);
|
const bool isLogarithmicEnabled = aMin > 1e-07 && aMax > 1e-07; // TODO: is it right validation?
|
||||||
|
|
||||||
|
// The checkbox should be enabled only when the range is valid for it
|
||||||
myLogarithmicCheck->setEnabled(isLogarithmicEnabled);
|
myLogarithmicCheck->setEnabled(isLogarithmicEnabled);
|
||||||
|
|
||||||
|
// Change checkbox only if the range is not valid. Otherwise it's on the user decision.
|
||||||
|
if (!isLogarithmicEnabled)
|
||||||
|
{
|
||||||
|
myLogarithmicCheck->setChecked(isLogarithmicEnabled);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================================
|
//=================================================================================================
|
||||||
@ -873,3 +903,27 @@ void SMESHGUI_Preferences_ScalarBarDlg::initScalarBarFromResources()
|
|||||||
DEF_VER_H = mgr->doubleValue("SMESH", name.arg( "height" ));
|
DEF_VER_H = mgr->doubleValue("SMESH", name.arg( "height" ));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================================
|
||||||
|
/*!
|
||||||
|
* SMESHGUI_Preferences_ScalarBarDlg::applyThreshold()
|
||||||
|
*
|
||||||
|
* Hides and shows elements beyond the given min - max range by threshold filter inside the actor.
|
||||||
|
*/
|
||||||
|
//=================================================================================================
|
||||||
|
void SMESHGUI_Preferences_ScalarBarDlg::applyThreshold(double min, double max)
|
||||||
|
{
|
||||||
|
myActor->ClipThreshold(myThresholdCheck->isChecked(), min, max);
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================================
|
||||||
|
/*!
|
||||||
|
* SMESHGUI_Preferences_ScalarBarDlg::applyWireframeOff()
|
||||||
|
*
|
||||||
|
* Hides and shows edges' lines.
|
||||||
|
*/
|
||||||
|
//=================================================================================================
|
||||||
|
void SMESHGUI_Preferences_ScalarBarDlg::applyWireframeOff()
|
||||||
|
{
|
||||||
|
myActor->SetWireframeOff(myWireframeOffCheck->isChecked());
|
||||||
|
}
|
||||||
|
@ -50,6 +50,8 @@ class SalomeApp_IntSpinBox;
|
|||||||
class QtxColorButton;
|
class QtxColorButton;
|
||||||
class LightApp_SelectionMgr;
|
class LightApp_SelectionMgr;
|
||||||
|
|
||||||
|
class vtkLookupTable;
|
||||||
|
|
||||||
class SMESHGUI_EXPORT SMESHGUI_Preferences_ScalarBarDlg : public QDialog
|
class SMESHGUI_EXPORT SMESHGUI_Preferences_ScalarBarDlg : public QDialog
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -70,6 +72,10 @@ public:
|
|||||||
const double );
|
const double );
|
||||||
void initScalarBarFromResources();
|
void initScalarBarFromResources();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void applyThreshold(double min, double max);
|
||||||
|
void applyWireframeOff();
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
virtual void reject();
|
virtual void reject();
|
||||||
|
|
||||||
@ -97,6 +103,8 @@ private:
|
|||||||
QLineEdit* myMinEdit;
|
QLineEdit* myMinEdit;
|
||||||
QLineEdit* myMaxEdit;
|
QLineEdit* myMaxEdit;
|
||||||
QCheckBox* myLogarithmicCheck;
|
QCheckBox* myLogarithmicCheck;
|
||||||
|
QCheckBox* myThresholdCheck;
|
||||||
|
QCheckBox* myWireframeOffCheck;
|
||||||
|
|
||||||
QGroupBox* myFontGrp;
|
QGroupBox* myFontGrp;
|
||||||
QtxColorButton* myTitleColorBtn;
|
QtxColorButton* myTitleColorBtn;
|
||||||
|
@ -2224,6 +2224,14 @@ Check algorithm documentation for supported geometry</translation>
|
|||||||
<source>SMESH_LOGARITHMIC_SCALARBAR</source>
|
<source>SMESH_LOGARITHMIC_SCALARBAR</source>
|
||||||
<translation>Logarithmic</translation>
|
<translation>Logarithmic</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SMESH_TRESHOLD_SCALARBAR</source>
|
||||||
|
<translation>Threshold</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SMESH_WIREFRAME_OFF_SCALARBAR</source>
|
||||||
|
<translation>Wireframe Off</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>SMESH_MAKE_GROUPS</source>
|
<source>SMESH_MAKE_GROUPS</source>
|
||||||
<translation>Generate groups</translation>
|
<translation>Generate groups</translation>
|
||||||
|
@ -2222,6 +2222,14 @@ Référez-vous à la documentation sur l'algorithme et la géométrie supportée
|
|||||||
<source>SMESH_LOGARITHMIC_SCALARBAR</source>
|
<source>SMESH_LOGARITHMIC_SCALARBAR</source>
|
||||||
<translation>Logarithmique</translation>
|
<translation>Logarithmique</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SMESH_TRESHOLD_SCALARBAR</source>
|
||||||
|
<translation>Seuil</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SMESH_WIREFRAME_OFF_SCALARBAR</source>
|
||||||
|
<translation>Filaire désactivé</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>SMESH_MAKE_GROUPS</source>
|
<source>SMESH_MAKE_GROUPS</source>
|
||||||
<translation>Générer les groupes</translation>
|
<translation>Générer les groupes</translation>
|
||||||
|
@ -1979,6 +1979,14 @@
|
|||||||
<source>SMESH_LOGARITHMIC_SCALARBAR</source>
|
<source>SMESH_LOGARITHMIC_SCALARBAR</source>
|
||||||
<translation>対数</translation>
|
<translation>対数</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SMESH_TRESHOLD_SCALARBAR</source>
|
||||||
|
<translation>しきい値</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>SMESH_WIREFRAME_OFF_SCALARBAR</source>
|
||||||
|
<translation>ワイヤーフレーム オフ</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>SMESH_MAKE_GROUPS</source>
|
<source>SMESH_MAKE_GROUPS</source>
|
||||||
<translation>グループを生成します。</translation>
|
<translation>グループを生成します。</translation>
|
||||||
|
Loading…
Reference in New Issue
Block a user