IPAL53819: Mesh edition clears Numbering

Keep numbering when a mesh is cleared
This commit is contained in:
eap 2016-11-22 14:34:16 +03:00
parent a3b465189d
commit 164f564028
3 changed files with 29 additions and 30 deletions

View File

@ -1529,10 +1529,10 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation)
}
}
if(myNodeActor->GetPointsLabeled()){
if(myNodeActor->GetPointsLabeled()) {
myNodeActor->UpdateLabels();
myNodeActor->VisibilityOn();
}
if(my0DActor)
my0DActor->UpdateLabels();

View File

@ -140,18 +140,19 @@ void SMESH_CellLabelActor::SetFontProperties( SMESH::LabelFont family, int size,
myClsTextProp->SetBold( bold );
myClsTextProp->SetItalic( italic );
myClsTextProp->SetShadow( shadow );
myClsTextProp->SetColor( r, g, b );
myClsTextProp->SetColor( r, g, b );
}
void SMESH_CellLabelActor::SetCellsLabeled(bool theIsCellsLabeled)
{
myIsCellsLabeled = theIsCellsLabeled;
myCellsLabels->SetVisibility(false);
myTransformFilter->Update();
vtkUnstructuredGrid* aGrid = vtkUnstructuredGrid::SafeDownCast(myTransformFilter->GetOutput());
if ( !aGrid )
return;
myIsCellsLabeled = theIsCellsLabeled && aGrid->GetNumberOfPoints();
if ( myIsCellsLabeled )
if ( myIsCellsLabeled && aGrid )
{
myCellsNumDataSet->ShallowCopy(aGrid);
vtkUnstructuredGrid *aDataSet = myCellsNumDataSet;
@ -172,8 +173,6 @@ void SMESH_CellLabelActor::SetCellsLabeled(bool theIsCellsLabeled)
aDataSet->GetCellData()->SetScalars(anArray);
myCellCenters->SetInputData(aDataSet);
myCellsLabels->SetVisibility(GetVisibility());
}else{
myCellsLabels->SetVisibility(false);
}
}

View File

@ -44,7 +44,8 @@ vtkStandardNewMacro(SMESH_NodeLabelActor);
/*!
Constructor.
*/
SMESH_NodeLabelActor::SMESH_NodeLabelActor() {
SMESH_NodeLabelActor::SMESH_NodeLabelActor()
{
//Definition of points numbering pipeline
//---------------------------------------
myPointsNumDataSet = vtkUnstructuredGrid::New();
@ -57,12 +58,12 @@ SMESH_NodeLabelActor::SMESH_NodeLabelActor() {
myPtsSelectVisiblePoints->SetInputConnection(myPtsMaskPoints->GetOutputPort());
myPtsSelectVisiblePoints->SelectInvisibleOff();
myPtsSelectVisiblePoints->SetTolerance(0.1);
myPtsLabeledDataMapper = vtkLabeledDataMapper::New();
myPtsLabeledDataMapper->SetInputConnection(myPtsSelectVisiblePoints->GetOutputPort());
myPtsLabeledDataMapper->SetLabelFormat("%d");
myPtsLabeledDataMapper->SetLabelModeToLabelScalars();
myPtsTextProp = vtkTextProperty::New();
myPtsTextProp->SetFontFamilyToTimes();
myPtsTextProp->SetFontSize(10);
@ -90,19 +91,20 @@ SMESH_NodeLabelActor::SMESH_NodeLabelActor() {
/*!
Destructor
*/
SMESH_NodeLabelActor::~SMESH_NodeLabelActor() {
SMESH_NodeLabelActor::~SMESH_NodeLabelActor()
{
//Deleting of points numbering pipeline
//---------------------------------------
myPointsNumDataSet->Delete();
// commented: porting to vtk 5.0
// myPtsLabeledDataMapper->RemoveAllInputs();
myPtsLabeledDataMapper->Delete();
// commented: porting to vtk 5.0
// myPtsSelectVisiblePoints->UnRegisterAllOutputs();
myPtsSelectVisiblePoints->Delete();
// commented: porting to vtk 5.0
// myPtsMaskPoints->UnRegisterAllOutputs();
myPtsMaskPoints->Delete();
@ -130,16 +132,16 @@ void SMESH_NodeLabelActor::SetFontProperties( SMESH::LabelFont family, int size,
myPtsTextProp->SetColor( r, g, b );
}
void SMESH_NodeLabelActor::SetPointsLabeled(bool theIsPointsLabeled) {
void SMESH_NodeLabelActor::SetPointsLabeled(bool theIsPointsLabeled)
{
myIsPointsLabeled = theIsPointsLabeled;
myPointLabels->SetVisibility( false );
myTransformFilter->Update();
vtkDataSet* aGrid = vtkUnstructuredGrid::SafeDownCast(myTransformFilter->GetOutput());
if(!aGrid)
return;
myIsPointsLabeled = theIsPointsLabeled && aGrid->GetNumberOfPoints();
if ( myIsPointsLabeled )
if ( myIsPointsLabeled && aGrid )
{
myPointsNumDataSet->ShallowCopy(aGrid);
vtkUnstructuredGrid *aDataSet = myPointsNumDataSet;
@ -160,10 +162,6 @@ void SMESH_NodeLabelActor::SetPointsLabeled(bool theIsPointsLabeled) {
myPointLabels->SetVisibility( GetVisibility() );
anArray->Delete();
}
else
{
myPointLabels->SetVisibility( false );
}
}
@ -189,7 +187,8 @@ void SMESH_NodeLabelActor::RemoveFromRender(vtkRenderer* theRenderer)
SMESH_DeviceActor::RemoveFromRender(theRenderer);
}
void SMESH_NodeLabelActor::UpdateLabels() {
void SMESH_NodeLabelActor::UpdateLabels()
{
if(myIsPointsLabeled)
SetPointsLabeled(myIsPointsLabeled);
}
@ -198,8 +197,9 @@ void SMESH_NodeLabelActor::UpdateLabels() {
void SMESH_NodeLabelActor::ProcessEvents(vtkObject* vtkNotUsed(theObject),
unsigned long theEvent,
void* theClientData,
void* vtkNotUsed(theCallData)) {
SMESH_NodeLabelActor* self = reinterpret_cast<SMESH_NodeLabelActor*>(theClientData);
void* vtkNotUsed(theCallData))
{
SMESH_NodeLabelActor* self = reinterpret_cast<SMESH_NodeLabelActor*>(theClientData);
if(self)
self->UpdateLabels();
}