X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FOBJECT%2FSMESH_CellLabelActor.cxx;h=07275df16a8c1f7c110ee7081c3fec488ee01e12;hp=5bca6fc0a1e126666f4a4a406067ea0017bd102c;hb=cb55604f37e3d2583272fd436bb6557b041948b5;hpb=7eda9ca931ed2a11cb5e4637e4ffe19f5c061115 diff --git a/src/OBJECT/SMESH_CellLabelActor.cxx b/src/OBJECT/SMESH_CellLabelActor.cxx index 5bca6fc0a..07275df16 100644 --- a/src/OBJECT/SMESH_CellLabelActor.cxx +++ b/src/OBJECT/SMESH_CellLabelActor.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -25,6 +25,8 @@ // #include "SMESH_CellLabelActor.h" +#include "SMESH_ExtractGeometry.h" + #include #include #include @@ -42,13 +44,14 @@ #include #include -vtkStandardNewMacro(SMESH_CellLabelActor); +vtkStandardNewMacro(SMESH_CellLabelActor) /*! Constructor. */ -SMESH_CellLabelActor::SMESH_CellLabelActor() { - //Definition of cells numbering pipeline +SMESH_CellLabelActor::SMESH_CellLabelActor() +{ + //Definition of cells numbering pipeline //--------------------------------------- myCellsNumDataSet = vtkUnstructuredGrid::New(); @@ -58,18 +61,18 @@ SMESH_CellLabelActor::SMESH_CellLabelActor() { myClsMaskPoints = vtkMaskPoints::New(); myClsMaskPoints->SetInputConnection(myCellCenters->GetOutputPort()); myClsMaskPoints->SetOnRatio(1); - + myClsSelectVisiblePoints = vtkSelectVisiblePoints::New(); myClsSelectVisiblePoints->SetInputConnection(myClsMaskPoints->GetOutputPort()); myClsSelectVisiblePoints->SelectInvisibleOff(); myClsSelectVisiblePoints->SetTolerance(0.1); - + myClsLabeledDataMapper = vtkLabeledDataMapper::New(); myClsLabeledDataMapper->SetInputConnection(myClsSelectVisiblePoints->GetOutputPort()); myClsLabeledDataMapper->SetLabelFormat("%d"); myClsLabeledDataMapper->SetLabelModeToLabelScalars(); - + myClsTextProp = vtkTextProperty::New(); myClsTextProp->SetFontFamilyToTimes(); myClsTextProp->SetFontSize(12); @@ -98,7 +101,8 @@ SMESH_CellLabelActor::SMESH_CellLabelActor() { /*! Destructor. */ -SMESH_CellLabelActor::~SMESH_CellLabelActor() { +SMESH_CellLabelActor::~SMESH_CellLabelActor() +{ //Deleting of cells numbering pipeline //--------------------------------------- myCellsNumDataSet->Delete(); @@ -136,33 +140,39 @@ 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) { +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; int aNbElem = aDataSet->GetNumberOfCells(); vtkIntArray *anArray = vtkIntArray::New(); anArray->SetNumberOfValues(aNbElem); - for(int anId = 0; anId < aNbElem; anId++){ - vtkIdType id = myExtractUnstructuredGrid->GetInputId(anId); - id = (id >=0) ? id : anId; + myExtractUnstructuredGrid->BuildOut2InMap(); + for(int anId = 0; anId < aNbElem; anId++) + { + vtkIdType id = anId; + if(IsImplicitFunctionUsed()) + id = myExtractGeometry->GetElemObjId(id); + id = myExtractUnstructuredGrid->GetInputId(id); + id = (id >=0) ? id : anId; int aSMDSId = myVisualObj->GetElemObjId(id); anArray->SetValue(anId,aSMDSId); } aDataSet->GetCellData()->SetScalars(anArray); myCellCenters->SetInputData(aDataSet); myCellsLabels->SetVisibility(GetVisibility()); - }else{ - myCellsLabels->SetVisibility(false); } } @@ -187,16 +197,18 @@ void SMESH_CellLabelActor::RemoveFromRender(vtkRenderer* theRenderer) SMESH_DeviceActor::RemoveFromRender(theRenderer); } -void SMESH_CellLabelActor::UpdateLabels() { +void SMESH_CellLabelActor::UpdateLabels() +{ if(myIsCellsLabeled) SetCellsLabeled(myIsCellsLabeled); } void SMESH_CellLabelActor::ProcessEvents(vtkObject* vtkNotUsed(theObject), - unsigned long theEvent, + unsigned long /*theEvent*/, void* theClientData, - void* vtkNotUsed(theCallData)) { + void* vtkNotUsed(theCallData)) +{ SMESH_CellLabelActor* self = reinterpret_cast(theClientData); if(self) self->UpdateLabels();