X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FOBJECT%2FSMESH_Actor.cxx;h=0c876a190bb5af1e370c97851154f28ebbc246a8;hp=b0136d8e4f62a00ca5e9409bbc50b65eef3f6244;hb=a3b465189d34b5095b104239fcab7833a993b15f;hpb=85d416c7e50a090992ac4ab211f332e2b55f4e8e diff --git a/src/OBJECT/SMESH_Actor.cxx b/src/OBJECT/SMESH_Actor.cxx index b0136d8e4..0c876a190 100644 --- a/src/OBJECT/SMESH_Actor.cxx +++ b/src/OBJECT/SMESH_Actor.cxx @@ -26,23 +26,23 @@ // Module : SMESH #include "SMESH_ActorDef.h" + +#include "SMDS_UnstructuredGrid.hxx" #include "SMESH_ActorUtils.h" +#include "SMESH_CellLabelActor.h" +#include "SMESH_ControlsDef.hxx" #include "SMESH_DeviceActor.h" #include "SMESH_NodeLabelActor.h" -#include "SMESH_CellLabelActor.h" #include "SMESH_ObjectDef.h" -#include "SMESH_ControlsDef.hxx" -#include "SMDS_UnstructuredGrid.hxx" -#include "SMESH_ScalarBarActor.h" -#include "VTKViewer_ExtractUnstructuredGrid.h" -#include "VTKViewer_FramedTextActor.h" -#include "SALOME_InteractiveObject.hxx" #include "SMESH_SVTKActor.h" - -#include "SUIT_Session.h" -#include "SUIT_ResourceMgr.h" +#include "SMESH_ScalarBarActor.h" #include +#include +#include +#include +#include +#include #ifndef DISABLE_PLOT2DVIEWER #include @@ -117,6 +117,9 @@ SMESH_Actor* SMESH_Actor::New(TVisualObjPtr theVisualObj, SMESH_ActorDef::SMESH_ActorDef() { if(MYDEBUG) MESSAGE("SMESH_ActorDef - "<SetColor( bfc.red() / 255. , bfc.green() / 255. , bfc.blue() / 255. ); my2DActor = SMESH_CellLabelActor::New(); - my2DActor->SetStoreGemetryMapping(true); + my2DActor->SetStoreClippingMapping(true); my2DActor->SetUserMatrix(aMatrix); my2DActor->PickableOff(); my2DActor->SetFontProperties( aFamilyEl, aSizeEl, aBoldEl, anItalicEl, aShadowEl, anRGBEl[0], anRGBEl[1], anRGBEl[2] ); @@ -255,7 +258,7 @@ SMESH_ActorDef::SMESH_ActorDef() aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_TRIANGLE); my3DActor = SMESH_CellLabelActor::New(); - my3DActor->SetStoreGemetryMapping(true); + my3DActor->SetStoreClippingMapping(true); my3DActor->SetUserMatrix(aMatrix); my3DActor->PickableOff(); my3DActor->SetFontProperties( aFamilyEl, aSizeEl, aBoldEl, anItalicEl, aShadowEl, anRGBEl[0], anRGBEl[1], anRGBEl[2] ); @@ -320,8 +323,12 @@ SMESH_ActorDef::SMESH_ActorDef() myEdgeProp->SetColor(anRGB[0],anRGB[1],anRGB[2]); myEdgeProp->SetLineWidth(aLineWidth); + // my1DActor is used to + // - show numbers + // - show controls on all edges (eg Length) + // since edges are shown by myHighlitableActor my1DActor = SMESH_CellLabelActor::New(); - my1DActor->SetStoreGemetryMapping(true); + my1DActor->SetStoreClippingMapping(true); my1DActor->SetUserMatrix(aMatrix); my1DActor->PickableOff(); my1DActor->SetHighlited(true); @@ -347,6 +354,7 @@ SMESH_ActorDef::SMESH_ActorDef() my1DExtProp->SetLineWidth(aLineWidth + aLineWidthInc); my1DExtProp->SetPointSize(aElem0DSize); + // my1DExtActor is used to show filtered edges or links between nodes my1DExtActor = SMESH_DeviceActor::New(); my1DExtActor->SetUserMatrix(aMatrix); my1DExtActor->PickableOff(); @@ -369,7 +377,7 @@ SMESH_ActorDef::SMESH_ActorDef() my0DActor = SMESH_CellLabelActor::New(); my0DActor->SetUserMatrix(aMatrix); - my0DActor->SetStoreGemetryMapping(true); + my0DActor->SetStoreClippingMapping(true); my0DActor->PickableOff(); my0DActor->SetFontProperties( aFamilyEl, aSizeEl, aBoldEl, anItalicEl, aShadowEl, anRGBEl[0], anRGBEl[1], anRGBEl[2] ); my0DActor->SetVisibility(false); @@ -388,7 +396,7 @@ SMESH_ActorDef::SMESH_ActorDef() myBallActor = SMESH_CellLabelActor::New(); myBallActor->SetUserMatrix(aMatrix); - myBallActor->SetStoreGemetryMapping(true); + myBallActor->SetStoreClippingMapping(true); myBallActor->PickableOff(); myBallActor->SetFontProperties( aFamilyEl, aSizeEl, aBoldEl, anItalicEl, aShadowEl, anRGBEl[0], anRGBEl[1], anRGBEl[2] ); myBallActor->SetVisibility(false); @@ -461,6 +469,8 @@ SMESH_ActorDef::SMESH_ActorDef() //---------------------------------------------- myBaseActor->SetUserMatrix(aMatrix); + myBaseActor->SetStoreIDMapping(true); + myBaseActor->SetStoreClippingMapping(true); myBaseActor->SetStoreGemetryMapping(true); myBaseActor->GetProperty()->SetOpacity(0.0); myPickableActor = myBaseActor; @@ -694,7 +704,8 @@ void SMESH_ActorDef::SetCellsFontProperties( SMESH::LabelFont theFamily, int the } } -bool SMESH_ActorDef::GetPointsLabeled() { +bool SMESH_ActorDef::GetPointsLabeled() +{ return myNodeActor && myNodeActor->GetPointsLabeled(); } @@ -719,7 +730,8 @@ void SMESH_ActorDef::SetCellsLabeled(bool theIsCellsLabeled) } -bool SMESH_ActorDef::GetCellsLabeled() { +bool SMESH_ActorDef::GetCellsLabeled() +{ bool result = false; if(my3DActor) result = result || my3DActor->GetCellsLabeled(); @@ -789,17 +801,13 @@ bool SMESH_ActorDef::GetFacesOrientation3DVectors() } -void -SMESH_ActorDef:: -SetControlMode(eControl theMode) +void SMESH_ActorDef::SetControlMode(eControl theMode) { SetControlMode(theMode,true); } -void -SMESH_ActorDef:: -SetControlMode( eControl theMode, bool theCheckEntityMode ) +void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode ) { vtkLookupTable* lookupTable = static_cast(myScalarBarActor->GetLookupTable()); bool isLogarithmic = lookupTable->GetScale() == VTK_SCALE_LOG10; @@ -809,7 +817,8 @@ SetControlMode( eControl theMode, bool theCheckEntityMode ) if( !mgr ) return; - myControlMode = eNone; + //myControlMode = eNone; + myControlMode = theMode; theCheckEntityMode &= mgr->booleanValue( "SMESH", "display_entity", false ); my0DActor->GetMapper()->SetScalarVisibility(false); @@ -982,34 +991,44 @@ SetControlMode( eControl theMode, bool theCheckEntityMode ) myControlActor = my2DActor; break; } + case eNodeConnectivityNb: + { + myFunctor.reset( new SMESH::Controls::NodeConnectivityNumber() ); + myControlActor = myNodeActor; + break; + } default: return; } - vtkUnstructuredGrid* aGrid = myControlActor->GetUnstructuredGrid(); - vtkIdType aNbCells = aGrid->GetNumberOfCells(); - if(aNbCells){ - myControlMode = theMode; + int aNbCells = myFunctor ? myVisualObj->GetNbEntities( myFunctor->GetType() ) : 0; + bool aShowOnlyScalarBarTitle = false; + if(aNbCells) { + //myControlMode = theMode; switch(myControlMode){ case eFreeNodes: case eCoincidentNodes: myNodeExtActor->SetExtControlMode(myFunctor); + aShowOnlyScalarBarTitle = true; break; case eFreeEdges: case eFreeBorders: case eCoincidentElems1D: my1DExtActor->SetExtControlMode(myFunctor); + aShowOnlyScalarBarTitle = true; break; case eFreeFaces: case eBareBorderFace: case eOverConstrainedFace: case eCoincidentElems2D: my2DExtActor->SetExtControlMode(myFunctor); + aShowOnlyScalarBarTitle = true; break; case eBareBorderVolume: case eOverConstrainedVolume: case eCoincidentElems3D: my3DExtActor->SetExtControlMode(myFunctor); + aShowOnlyScalarBarTitle = true; break; case eLength2D: case eMultiConnection2D: @@ -1020,9 +1039,19 @@ SetControlMode( eControl theMode, bool theCheckEntityMode ) myControlActor->SetControlMode(myFunctor,myScalarBarActor,myLookupTable); UpdateDistribution(); } + myScalarBarActor->SetTitleOnlyVisibility(aShowOnlyScalarBarTitle); } if(theCheckEntityMode) { + // if(myControlActor == myNodeActor) { + // if ( myControlMode == eNodeConnectivityNb ) { + // if (!myIsEntityModeCache){ + // myEntityModeCache = GetEntityMode(); + // myIsEntityModeCache=true; + // } + // SetEntityMode(0); + // } + // } if(myControlActor == my1DActor) { if (!myIsEntityModeCache){ myEntityModeCache = GetEntityMode(); @@ -1031,25 +1060,13 @@ SetControlMode( eControl theMode, bool theCheckEntityMode ) SetEntityMode(eEdges); } else if(myControlActor == my2DActor) { - switch(myControlMode) { - case eLength2D: - case eFreeEdges: - case eFreeFaces: - case eMultiConnection2D: - if (!myIsEntityModeCache){ - myEntityModeCache = GetEntityMode(); - myIsEntityModeCache=true; - } - SetEntityMode(eFaces); - break; - default: - if (!myIsEntityModeCache){ - myEntityModeCache = GetEntityMode(); - myIsEntityModeCache=true; - } - SetEntityMode(eFaces); + if (!myIsEntityModeCache){ + myEntityModeCache = GetEntityMode(); + myIsEntityModeCache=true; } - }else if(myControlActor == my3DActor) { + SetEntityMode(eFaces); + } + else if(myControlActor == my3DActor) { if (!myIsEntityModeCache){ myEntityModeCache = GetEntityMode(); myIsEntityModeCache=true; @@ -1057,6 +1074,9 @@ SetControlMode( eControl theMode, bool theCheckEntityMode ) SetEntityMode(eVolumes); } } + QString aTitle = QString(myScalarBarActor->GetTitle()); + aTitle.replace(QRegExp("(:\\s).*"),"\\1"+ QString::number(GetNumberControlEntities())); + myScalarBarActor->SetTitle(aTitle.toLatin1().constData()); } else { @@ -1078,12 +1098,45 @@ SetControlMode( eControl theMode, bool theCheckEntityMode ) if (isLogarithmic && range[0] > 1e-07 && range[1] > 1e-07) lookupTable->SetScale(VTK_SCALE_LOG10); - Update(); + //Update(); } +int SMESH_ActorDef::GetNumberControlEntities() +{ + SMESH_DeviceActor* anAct = NULL; + switch(myControlMode){ + case eFreeNodes: + case eCoincidentNodes: + anAct = myNodeExtActor; + break; + case eFreeEdges: + case eFreeBorders: + case eCoincidentElems1D: + anAct = my1DExtActor; + break; + case eFreeFaces: + case eBareBorderFace: + case eOverConstrainedFace: + case eCoincidentElems2D: + anAct = my2DExtActor; + break; + case eBareBorderVolume: + case eOverConstrainedVolume: + case eCoincidentElems3D: + anAct = my3DExtActor; + break; + default:; + } + return (anAct) ? anAct->GetUnstructuredGrid()->GetNumberOfCells() : -1; +} -void SMESH_ActorDef::AddToRender(vtkRenderer* theRenderer){ - +void SMESH_ActorDef::AddToRender(vtkRenderer* theRenderer) +{ + if ( !mySelector || !mySelector->IsSelectionEnabled() ) + { + myBaseActor->SetUnstructuredGrid( NULL ); + //myHighlitableActor->SetUnstructuredGrid( NULL ); + } theRenderer->AddActor(myBaseActor); theRenderer->AddActor(myNodeExtActor); theRenderer->AddActor(my1DExtActor); @@ -1106,7 +1159,8 @@ void SMESH_ActorDef::AddToRender(vtkRenderer* theRenderer){ SALOME_Actor::AddToRender(theRenderer); } -void SMESH_ActorDef::RemoveFromRender(vtkRenderer* theRenderer){ +void SMESH_ActorDef::RemoveFromRender(vtkRenderer* theRenderer) +{ SALOME_Actor::RemoveFromRender(theRenderer); theRenderer->RemoveActor(myBaseActor); @@ -1133,9 +1187,9 @@ void SMESH_ActorDef::RemoveFromRender(vtkRenderer* theRenderer){ bool SMESH_ActorDef::Init(TVisualObjPtr theVisualObj, - const char* theEntry, - const char* theName, - int theIsClear) + const char* theEntry, + const char* theName, + int theIsClear) { Handle(SALOME_InteractiveObject) anIO = new SALOME_InteractiveObject(theEntry,"SMESH",theName); setIO(anIO); @@ -1221,17 +1275,22 @@ bool SMESH_ActorDef::Init(TVisualObjPtr theVisualObj, } -double* SMESH_ActorDef::GetBounds(){ - return myNodeActor->GetBounds(); +double* SMESH_ActorDef::GetBounds() +{ + if ( GetNumberOfClippingPlanes() + myPlaneCollection->GetNumberOfItems() > 0 ) + return myNodeActor->GetBounds(); + return myVisualObj->GetUnstructuredGrid()->GetPoints()->GetBounds(); } -vtkDataSet* SMESH_ActorDef::GetInput(){ +vtkDataSet* SMESH_ActorDef::GetInput() +{ return GetUnstructuredGrid(); } -void SMESH_ActorDef::SetTransform(VTKViewer_Transform* theTransform){ +void SMESH_ActorDef::SetTransform(VTKViewer_Transform* theTransform) +{ Superclass::SetTransform(theTransform); myNodeActor->SetTransform(theTransform); @@ -1257,27 +1316,32 @@ void SMESH_ActorDef::SetTransform(VTKViewer_Transform* theTransform){ } -void SMESH_ActorDef::SetMapper(vtkMapper* theMapper){ +void SMESH_ActorDef::SetMapper(vtkMapper* theMapper) +{ vtkLODActor::SetMapper(theMapper); } -void SMESH_ActorDef::ShallowCopy(vtkProp *prop){ +void SMESH_ActorDef::ShallowCopy(vtkProp *prop) +{ SALOME_Actor::ShallowCopy(prop); } -vtkMapper* SMESH_ActorDef::GetMapper(){ +vtkMapper* SMESH_ActorDef::GetMapper() +{ return myPickableActor->GetMapper(); } -vtkUnstructuredGrid* SMESH_ActorDef::GetUnstructuredGrid(){ +vtkUnstructuredGrid* SMESH_ActorDef::GetUnstructuredGrid() +{ return myVisualObj->GetUnstructuredGrid(); } -bool SMESH_ActorDef::IsInfinitive(){ +bool SMESH_ActorDef::IsInfinitive() +{ vtkDataSet *aDataSet = myPickableActor->GetUnstructuredGrid(); myIsInfinite = aDataSet->GetNumberOfCells() == 0 || ( aDataSet->GetNumberOfCells() == 1 && @@ -1286,18 +1350,21 @@ bool SMESH_ActorDef::IsInfinitive(){ } -void SMESH_ActorDef::SetIsShrunkable(bool theShrunkable){ +void SMESH_ActorDef::SetIsShrunkable(bool theShrunkable) +{ if ( myIsShrinkable == theShrunkable ) return; myIsShrinkable = theShrunkable; Modified(); } -double SMESH_ActorDef::GetShrinkFactor(){ +double SMESH_ActorDef::GetShrinkFactor() +{ return myBaseActor->GetShrinkFactor(); } -void SMESH_ActorDef::SetShrinkFactor(double theValue){ +void SMESH_ActorDef::SetShrinkFactor(double theValue) +{ myBaseActor->SetShrinkFactor(theValue); my1DActor->SetShrinkFactor(theValue); @@ -1313,7 +1380,8 @@ void SMESH_ActorDef::SetShrinkFactor(double theValue){ Modified(); } -void SMESH_ActorDef::SetShrink() { +void SMESH_ActorDef::SetShrink() +{ if(!myIsShrinkable) return; myBaseActor->SetShrink(); @@ -1331,7 +1399,8 @@ void SMESH_ActorDef::SetShrink() { Modified(); } -void SMESH_ActorDef::UnShrink(){ +void SMESH_ActorDef::UnShrink() +{ if(!myIsShrunk) return; myBaseActor->UnShrink(); @@ -1350,30 +1419,36 @@ void SMESH_ActorDef::UnShrink(){ } -int SMESH_ActorDef::GetNodeObjId(int theVtkID){ +int SMESH_ActorDef::GetNodeObjId(int theVtkID) +{ return myPickableActor->GetNodeObjId(theVtkID); } -double* SMESH_ActorDef::GetNodeCoord(int theObjID){ +double* SMESH_ActorDef::GetNodeCoord(int theObjID) +{ return myPickableActor->GetNodeCoord(theObjID); } -int SMESH_ActorDef::GetElemObjId(int theVtkID){ +int SMESH_ActorDef::GetElemObjId(int theVtkID) +{ return myPickableActor->GetElemObjId(theVtkID); } -vtkCell* SMESH_ActorDef::GetElemCell(int theObjID){ +vtkCell* SMESH_ActorDef::GetElemCell(int theObjID) +{ return myPickableActor->GetElemCell(theObjID); } -void SMESH_ActorDef::SetVisibility(int theMode){ +void SMESH_ActorDef::SetVisibility(int theMode) +{ SetVisibility(theMode,true); } -void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){ +void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation) +{ SALOME_Actor::SetVisibility(theMode); myNodeActor->VisibilityOff(); @@ -1399,15 +1474,21 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){ if(theIsUpdateRepersentation) SetRepresentation(GetRepresentation()); - if(myControlMode != eNone){ - switch(myControlMode){ + if(myControlMode != eNone) { + switch(myControlMode) { case eFreeNodes: case eCoincidentNodes: myNodeExtActor->VisibilityOn(); break; + case eLength: + case eMultiConnection: + my1DActor->VisibilityOn(); + break; case eFreeEdges: case eFreeBorders: case eCoincidentElems1D: + case eLength2D: + case eMultiConnection2D: my1DExtActor->VisibilityOn(); break; case eFreeFaces: @@ -1421,38 +1502,31 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){ case eCoincidentElems3D: my3DExtActor->VisibilityOn(); break; - case eLength2D: - case eMultiConnection2D: - my1DExtActor->VisibilityOn(); - default: - if(myControlActor->GetUnstructuredGrid()->GetNumberOfCells()) - myScalarBarActor->VisibilityOn(); + default:; } + if ( myFunctor && myVisualObj->GetNbEntities( myFunctor->GetType() )) + myScalarBarActor->VisibilityOn(); } - if(myRepresentation != ePoint) - myPickableActor->VisibilityOn(); - else { - myNodeActor->VisibilityOn(); - } - - if(myEntityMode & e0DElements && GetRepresentation() != ePoint ){ - my0DActor->VisibilityOn(); - } - if(myEntityMode & eBallElem && GetRepresentation() != ePoint ){ - myBallActor->VisibilityOn(); - } + myPickableActor->VisibilityOn(); - if(myEntityMode & eEdges && GetRepresentation() != ePoint){ - my1DActor->VisibilityOn(); - } - - if(myEntityMode & eFaces && GetRepresentation() != ePoint){ - my2DActor->VisibilityOn(); - } - - if(myEntityMode & eVolumes && GetRepresentation() != ePoint){ - my3DActor->VisibilityOn(); + if ( GetRepresentation() != ePoint ) + { + if(myEntityMode & e0DElements ){ + my0DActor->VisibilityOn(); + } + if(myEntityMode & eBallElem ){ + myBallActor->VisibilityOn(); + } + if(myEntityMode & eEdges && GetCellsLabeled() ){ // my1DActor shows labels only + my1DActor->VisibilityOn(); + } + if(myEntityMode & eFaces ){ + my2DActor->VisibilityOn(); + } + if(myEntityMode & eVolumes ){ + my3DActor->VisibilityOn(); + } } if(myNodeActor->GetPointsLabeled()){ @@ -1532,97 +1606,108 @@ void SMESH_ActorDef::SetEntityMode(unsigned int theMode) myBaseActor->myGeomFilter->SetInside(myEntityMode != myEntityState); myEntityMode = theMode; - VTKViewer_ExtractUnstructuredGrid* aFilter = NULL; - aFilter = myBaseActor->GetExtractUnstructuredGrid(); - aFilter->ClearRegisteredCellsWithType(); - aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding); + VTKViewer_ExtractUnstructuredGrid* aFilter = myBaseActor->GetExtractUnstructuredGrid(); + aFilter->ClearRegisteredCellsWithType(); VTKViewer_ExtractUnstructuredGrid* aHightFilter = myHighlitableActor->GetExtractUnstructuredGrid(); aHightFilter->ClearRegisteredCellsWithType(); - aHightFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding); - if (myEntityMode & e0DElements) { - if (MYDEBUG) MESSAGE("0D ELEMENTS"); - aFilter->RegisterCellsWithType(VTK_VERTEX); - aHightFilter->RegisterCellsWithType(VTK_VERTEX); + bool isPassAll = + (( myEntityMode & e0DElements || myVisualObj->GetNbEntities(SMDSAbs_0DElement) == 0 ) && + ( myEntityMode & eBallElem || myVisualObj->GetNbEntities(SMDSAbs_Ball) == 0 ) && + ( myEntityMode & eEdges || myVisualObj->GetNbEntities(SMDSAbs_Edge) == 0 ) && + ( myEntityMode & eFaces || myVisualObj->GetNbEntities(SMDSAbs_Face) == 0 ) && + ( myEntityMode & eVolumes || myVisualObj->GetNbEntities(SMDSAbs_Volume) == 0 )); + if ( isPassAll && myEntityMode ) + { + aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::ePassAll); + aHightFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::ePassAll); } + else + { + aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding); + aHightFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding); - if (myEntityMode & eBallElem) { - aFilter->RegisterCellsWithType(VTK_POLY_VERTEX); - } + if (myEntityMode & e0DElements) { + aFilter->RegisterCellsWithType(VTK_VERTEX); + aHightFilter->RegisterCellsWithType(VTK_VERTEX); + } - if (myEntityMode & eEdges) { - if (MYDEBUG) MESSAGE("EDGES"); - aFilter->RegisterCellsWithType(VTK_LINE); - aFilter->RegisterCellsWithType(VTK_QUADRATIC_EDGE); + if (myEntityMode & eBallElem) { + aFilter->RegisterCellsWithType(VTK_POLY_VERTEX); + } - aHightFilter->RegisterCellsWithType(VTK_LINE); - aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_EDGE); - } + if (myEntityMode & eEdges) { + aFilter->RegisterCellsWithType(VTK_LINE); + aFilter->RegisterCellsWithType(VTK_QUADRATIC_EDGE); - if (myEntityMode & eFaces) { - if (MYDEBUG) MESSAGE("FACES"); - aFilter->RegisterCellsWithType(VTK_TRIANGLE); - aFilter->RegisterCellsWithType(VTK_QUAD); - aFilter->RegisterCellsWithType(VTK_POLYGON); - aFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE); - aFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD); - aFilter->RegisterCellsWithType(VTK_QUADRATIC_POLYGON); - aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUAD); - aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_TRIANGLE); - - aHightFilter->RegisterCellsWithType(VTK_TRIANGLE); - aHightFilter->RegisterCellsWithType(VTK_QUAD); - aHightFilter->RegisterCellsWithType(VTK_POLYGON); - aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE); - aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD); - aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_POLYGON); - aHightFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUAD); - aHightFilter->RegisterCellsWithType(VTK_BIQUADRATIC_TRIANGLE); - } + aHightFilter->RegisterCellsWithType(VTK_LINE); + aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_EDGE); + } + + if (myEntityMode & eFaces) { + aFilter->RegisterCellsWithType(VTK_TRIANGLE); + aFilter->RegisterCellsWithType(VTK_QUAD); + aFilter->RegisterCellsWithType(VTK_POLYGON); + aFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE); + aFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD); + aFilter->RegisterCellsWithType(VTK_QUADRATIC_POLYGON); + aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUAD); + aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_TRIANGLE); + + aHightFilter->RegisterCellsWithType(VTK_TRIANGLE); + aHightFilter->RegisterCellsWithType(VTK_QUAD); + aHightFilter->RegisterCellsWithType(VTK_POLYGON); + aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE); + aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD); + aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_POLYGON); + aHightFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUAD); + aHightFilter->RegisterCellsWithType(VTK_BIQUADRATIC_TRIANGLE); + } - if (myEntityMode & eVolumes) { - if (MYDEBUG) MESSAGE("VOLUMES"); - aFilter->RegisterCellsWithType(VTK_TETRA); - aFilter->RegisterCellsWithType(VTK_VOXEL); - aFilter->RegisterCellsWithType(VTK_HEXAHEDRON); - aFilter->RegisterCellsWithType(VTK_WEDGE); - aFilter->RegisterCellsWithType(VTK_PYRAMID); - aFilter->RegisterCellsWithType(VTK_HEXAGONAL_PRISM); - aFilter->RegisterCellsWithType(VTK_QUADRATIC_TETRA); - aFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON); - aFilter->RegisterCellsWithType(VTK_TRIQUADRATIC_HEXAHEDRON); - aFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID); - aFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE); - aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET); - aFilter->RegisterCellsWithType(VTK_POLYHEDRON); - - aHightFilter->RegisterCellsWithType(VTK_TETRA); - aHightFilter->RegisterCellsWithType(VTK_VOXEL); - aHightFilter->RegisterCellsWithType(VTK_HEXAHEDRON); - aHightFilter->RegisterCellsWithType(VTK_WEDGE); - aHightFilter->RegisterCellsWithType(VTK_PYRAMID); - aHightFilter->RegisterCellsWithType(VTK_HEXAGONAL_PRISM); - aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_TETRA); - aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON); - aHightFilter->RegisterCellsWithType(VTK_TRIQUADRATIC_HEXAHEDRON); - aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE); - aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID); - aHightFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET); - aHightFilter->RegisterCellsWithType(VTK_POLYHEDRON); + if (myEntityMode & eVolumes) { + aFilter->RegisterCellsWithType(VTK_TETRA); + aFilter->RegisterCellsWithType(VTK_VOXEL); + aFilter->RegisterCellsWithType(VTK_HEXAHEDRON); + aFilter->RegisterCellsWithType(VTK_WEDGE); + aFilter->RegisterCellsWithType(VTK_PYRAMID); + aFilter->RegisterCellsWithType(VTK_HEXAGONAL_PRISM); + aFilter->RegisterCellsWithType(VTK_QUADRATIC_TETRA); + aFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON); + aFilter->RegisterCellsWithType(VTK_TRIQUADRATIC_HEXAHEDRON); + aFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID); + aFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE); + aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET); + aFilter->RegisterCellsWithType(VTK_POLYHEDRON); + + aHightFilter->RegisterCellsWithType(VTK_TETRA); + aHightFilter->RegisterCellsWithType(VTK_VOXEL); + aHightFilter->RegisterCellsWithType(VTK_HEXAHEDRON); + aHightFilter->RegisterCellsWithType(VTK_WEDGE); + aHightFilter->RegisterCellsWithType(VTK_PYRAMID); + aHightFilter->RegisterCellsWithType(VTK_HEXAGONAL_PRISM); + aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_TETRA); + aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON); + aHightFilter->RegisterCellsWithType(VTK_TRIQUADRATIC_HEXAHEDRON); + aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE); + aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID); + aHightFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET); + aHightFilter->RegisterCellsWithType(VTK_POLYHEDRON); + } } - aFilter->Update(); + if ( GetVisibility() ) + aFilter->Update(); if (MYDEBUG) MESSAGE(aFilter->GetOutput()->GetNumberOfCells()); SetVisibility(GetVisibility(),false); } void SMESH_ActorDef::SetRepresentation (int theMode) { - int aNbEdges = myVisualObj->GetNbEntities(SMDSAbs_Edge); - int aNbFaces = myVisualObj->GetNbEntities(SMDSAbs_Face); + int aNbEdges = myVisualObj->GetNbEntities(SMDSAbs_Edge); + int aNbFaces = myVisualObj->GetNbEntities(SMDSAbs_Face); int aNbVolumes = myVisualObj->GetNbEntities(SMDSAbs_Volume); - int aNb0Ds = myVisualObj->GetNbEntities(SMDSAbs_0DElement); - int aNbBalls = myVisualObj->GetNbEntities(SMDSAbs_Ball); + int aNb0Ds = myVisualObj->GetNbEntities(SMDSAbs_0DElement); + int aNbBalls = myVisualObj->GetNbEntities(SMDSAbs_Ball); if (theMode < 0) { myRepresentation = eSurface; @@ -1656,8 +1741,6 @@ void SMESH_ActorDef::SetRepresentation (int theMode) } myPickableActor = myBaseActor; - myNodeActor->SetVisibility(false); - myNodeExtActor->SetVisibility(false); vtkProperty *aProp = NULL, *aBackProp = NULL; vtkProperty *aPropVN = NULL, *aPropVR = NULL; SMESH_DeviceActor::EReperesent aReperesent = SMESH_DeviceActor::EReperesent(-1); @@ -1665,7 +1748,6 @@ void SMESH_ActorDef::SetRepresentation (int theMode) switch (myRepresentation) { case ePoint: myPickableActor = myNodeActor; - myNodeActor->SetVisibility(true); aQuadraticMode = SMESH_Actor::eLines; aProp = aBackProp = aPropVN = aPropVR = myNodeProp; aReperesent = SMESH_DeviceActor::ePoint; @@ -1683,54 +1765,50 @@ void SMESH_ActorDef::SetRepresentation (int theMode) break; } - my2DActor->SetProperty(aProp); - my2DActor->SetBackfaceProperty(aBackProp); - my2DActor->SetRepresentation(aReperesent); + if ( myRepresentation != ePoint ) + { + my2DActor->SetProperty(aProp); + my2DActor->SetBackfaceProperty(aBackProp); + my2DActor->SetRepresentation(aReperesent); - if(aQuadraticMode == SMESH_Actor::eLines) - my2DActor->SetQuadraticArcMode(false); - else if(aQuadraticMode == SMESH_Actor::eArcs) - my2DActor->SetQuadraticArcMode(true); + if(aQuadraticMode == SMESH_Actor::eLines) + my2DActor->SetQuadraticArcMode(false); + else if(aQuadraticMode == SMESH_Actor::eArcs) + my2DActor->SetQuadraticArcMode(true); - my2DExtActor->SetRepresentation(aReperesent); + my2DExtActor->SetRepresentation(aReperesent); - my3DActor->SetProperty(aPropVN); - my3DActor->SetBackfaceProperty(aPropVR); - my3DActor->SetRepresentation(aReperesent); + my3DActor->SetProperty(aPropVN); + my3DActor->SetBackfaceProperty(aPropVR); + my3DActor->SetRepresentation(aReperesent); + my0DActor->SetRepresentation(aReperesent); + myBallActor->SetRepresentation(aReperesent); - my1DExtActor->SetVisibility(false); - my2DExtActor->SetVisibility(false); - my3DExtActor->SetVisibility(false); - - my0DActor->SetRepresentation(aReperesent); - myBallActor->SetRepresentation(aReperesent); - - switch ( myControlMode ) { - case eLength: - case eMultiConnection: - aProp = aBackProp = my1DProp; - if(myRepresentation != ePoint) - aReperesent = SMESH_DeviceActor::eInsideframe; - break; - default:; - } + switch ( myControlMode ) { + case eLength: + case eMultiConnection: + aProp = aBackProp = my1DProp; + if(myRepresentation != ePoint) + aReperesent = SMESH_DeviceActor::eInsideframe; + break; + default:; + } - if(aQuadraticMode == SMESH_Actor::eLines) - my1DActor->SetQuadraticArcMode(false); - else if(aQuadraticMode == SMESH_Actor::eArcs) - my1DActor->SetQuadraticArcMode(true); + if(aQuadraticMode == SMESH_Actor::eLines) + my1DActor->SetQuadraticArcMode(false); + else if(aQuadraticMode == SMESH_Actor::eArcs) + my1DActor->SetQuadraticArcMode(true); - my1DActor->SetProperty(aProp); - my1DActor->SetBackfaceProperty(aBackProp); - my1DActor->SetRepresentation(aReperesent); + my1DActor->SetProperty(aProp); + my1DActor->SetBackfaceProperty(aBackProp); + my1DActor->SetRepresentation(aReperesent); - my1DExtActor->SetRepresentation(aReperesent); + my1DExtActor->SetRepresentation(aReperesent); + } if(myIsPointsVisible) myPickableActor = myNodeActor; - if(GetPointRepresentation()) - myNodeActor->SetVisibility(true); SetMapper(myPickableActor->GetMapper()); @@ -1740,19 +1818,22 @@ void SMESH_ActorDef::SetRepresentation (int theMode) } -void SMESH_ActorDef::SetPointRepresentation(bool theIsPointsVisible){ +void SMESH_ActorDef::SetPointRepresentation(bool theIsPointsVisible) +{ if ( myIsPointsVisible == theIsPointsVisible ) return; myIsPointsVisible = theIsPointsVisible; SetRepresentation(GetRepresentation()); } -bool SMESH_ActorDef::GetPointRepresentation(){ +bool SMESH_ActorDef::GetPointRepresentation() +{ return myIsPointsVisible || myNodeActor->GetPointsLabeled(); } -void SMESH_ActorDef::UpdateHighlight(){ +void SMESH_ActorDef::UpdateHighlight() +{ myHighlitableActor->SetHighlited(false); myHighlitableActor->SetVisibility(false); bool anIsVisible = GetVisibility(); @@ -1789,13 +1870,33 @@ void SMESH_ActorDef::UpdateHighlight(){ } myNodeActor->SetRepresentation(SMESH_DeviceActor::ePoint); myNodeActor->GetExtractUnstructuredGrid()->SetModeOfExtraction(VTKViewer_ExtractUnstructuredGrid::ePoints); + myNodeActor->GetProperty()->Modified(); break; } } } +void SMESH_ActorDef::EnableSelection( bool enable ) +{ + // selection in the Viewer enabled/disabled + if ( enable && ! myBaseActor->myExtractUnstructuredGrid->GetInput() ) + { + myBaseActor->SetUnstructuredGrid(myVisualObj->GetUnstructuredGrid()); + //myHighlitableActor->SetUnstructuredGrid(myVisualObj->GetUnstructuredGrid()); + myBaseActor->myExtractUnstructuredGrid->Update(); + //myHighlitableActor->myExtractUnstructuredGrid->Update(); + } + if ( !enable && myBaseActor->myExtractUnstructuredGrid->GetInput() ) + { + myBaseActor->SetUnstructuredGrid( NULL ); + //myHighlitableActor->SetUnstructuredGrid( NULL ); + myBaseActor->myExtractUnstructuredGrid->Update(); + //myHighlitableActor->myExtractUnstructuredGrid->Update(); + } +} -void SMESH_ActorDef::highlight(bool theHighlight){ +void SMESH_ActorDef::highlight(bool theHighlight) +{ if ( myIsHighlighted == theHighlight ) return; myIsHighlighted = theHighlight; @@ -1803,7 +1904,8 @@ void SMESH_ActorDef::highlight(bool theHighlight){ } -void SMESH_ActorDef::SetPreSelected(bool thePreselect){ +void SMESH_ActorDef::SetPreSelected(bool thePreselect) +{ if ( myIsPreselected == thePreselect ) return; myIsPreselected = thePreselect; @@ -1815,11 +1917,11 @@ void SMESH_ActorDef::SetPreSelected(bool thePreselect){ int SMESH_ActorDef::RenderOpaqueGeometry(vtkViewport *vp) { if (myPickableActor->GetIsOpaque()) - { + { vtkRenderer *ren = static_cast(vp); this->Render(ren); return 1; - } + } return 0; } @@ -1827,16 +1929,17 @@ int SMESH_ActorDef::RenderOpaqueGeometry(vtkViewport *vp) int SMESH_ActorDef::RenderTranslucentGeometry(vtkViewport *vp) { if (!myPickableActor->GetIsOpaque()) - { + { vtkRenderer *ren = static_cast(vp); this->Render(ren); return 1; - } + } return 0; } -void SMESH_ActorDef::Render(vtkRenderer *ren){ +void SMESH_ActorDef::Render(vtkRenderer *ren) +{ unsigned long aTime = myTimeStamp->GetMTime(); unsigned long anObjTime = myVisualObj->GetUnstructuredGrid()->GetMTime(); unsigned long aClippingTime = myImplicitBoolean->GetMTime(); @@ -1845,9 +1948,12 @@ void SMESH_ActorDef::Render(vtkRenderer *ren){ } -void SMESH_ActorDef::Update(){ +void SMESH_ActorDef::Update() +{ if(MYDEBUG) MESSAGE("SMESH_ActorDef::Update"); + myVisualObj->Update(); + if(GetControlMode() != eNone) { unsigned long aTime = myTimeStamp->GetMTime(); unsigned long anObjTime = myVisualObj->GetUnstructuredGrid()->GetMTime(); @@ -1889,14 +1995,16 @@ void SMESH_ActorDef::Update(){ } -void SMESH_ActorDef::ReleaseGraphicsResources(vtkWindow *renWin){ +void SMESH_ActorDef::ReleaseGraphicsResources(vtkWindow *renWin) +{ SALOME_Actor::ReleaseGraphicsResources(renWin); myPickableActor->ReleaseGraphicsResources(renWin); } -static void GetColor(vtkProperty *theProperty, double& r,double& g,double& b){ +static void GetColor(vtkProperty *theProperty, double& r,double& g,double& b) +{ double* aColor = theProperty->GetColor(); r = aColor[0]; g = aColor[1]; @@ -1904,7 +2012,8 @@ static void GetColor(vtkProperty *theProperty, double& r,double& g,double& b){ } -void SMESH_ActorDef::SetOpacity(double theValue){ +void SMESH_ActorDef::SetOpacity(double theValue) +{ mySurfaceProp->SetOpacity(theValue); myBackSurfaceProp->SetOpacity(theValue); myNormalVProp->SetOpacity(theValue); @@ -1919,12 +2028,14 @@ void SMESH_ActorDef::SetOpacity(double theValue){ } -double SMESH_ActorDef::GetOpacity(){ +double SMESH_ActorDef::GetOpacity() +{ return mySurfaceProp->GetOpacity(); } -void SMESH_ActorDef::SetSufaceColor(double r,double g,double b, int delta){ +void SMESH_ActorDef::SetSufaceColor(double r,double g,double b, int delta) +{ mySurfaceProp->SetColor(r,g,b); my2DExtProp->SetColor(1.0-r,1.0-g,1.0-b); if( SMESH_GroupObj* aGroupObj = dynamic_cast( myVisualObj.get() ) ) @@ -1937,12 +2048,14 @@ void SMESH_ActorDef::SetSufaceColor(double r,double g,double b, int delta){ Modified(); } -void SMESH_ActorDef::GetSufaceColor(double& r,double& g,double& b, int& delta){ +void SMESH_ActorDef::GetSufaceColor(double& r,double& g,double& b, int& delta) +{ ::GetColor(mySurfaceProp,r,g,b); delta = myDeltaBrightness; } -void SMESH_ActorDef::SetVolumeColor(double r,double g,double b, int delta){ +void SMESH_ActorDef::SetVolumeColor(double r,double g,double b, int delta) +{ myNormalVProp->SetColor(r,g,b); my3DExtProp->SetColor(1.0-r,1.0-g,1.0-b); if( SMESH_GroupObj* aGroupObj = dynamic_cast( myVisualObj.get() ) ) @@ -1955,12 +2068,14 @@ void SMESH_ActorDef::SetVolumeColor(double r,double g,double b, int delta){ Modified(); } -void SMESH_ActorDef::GetVolumeColor(double& r,double& g,double& b, int& delta){ +void SMESH_ActorDef::GetVolumeColor(double& r,double& g,double& b, int& delta) +{ ::GetColor(myNormalVProp,r,g,b); delta = myDeltaVBrightness; } -void SMESH_ActorDef::SetEdgeColor(double r,double g,double b){ +void SMESH_ActorDef::SetEdgeColor(double r,double g,double b) +{ myEdgeProp->SetColor(r,g,b); my1DProp->SetColor(r,g,b); my1DExtProp->SetColor(1.0-r,1.0-g,1.0-b); @@ -1970,21 +2085,25 @@ void SMESH_ActorDef::SetEdgeColor(double r,double g,double b){ Modified(); } -void SMESH_ActorDef::GetEdgeColor(double& r,double& g,double& b){ +void SMESH_ActorDef::GetEdgeColor(double& r,double& g,double& b) +{ ::GetColor(myEdgeProp,r,g,b); } -void SMESH_ActorDef::SetOutlineColor(double r,double g,double b){ +void SMESH_ActorDef::SetOutlineColor(double r,double g,double b) +{ myOutLineProp->SetColor(r,g,b); Modified(); } -void SMESH_ActorDef::GetOutlineColor(double& r,double& g,double& b){ +void SMESH_ActorDef::GetOutlineColor(double& r,double& g,double& b) +{ ::GetColor(myOutLineProp,r,g,b); } -void SMESH_ActorDef::SetNodeColor(double r,double g,double b){ +void SMESH_ActorDef::SetNodeColor(double r,double g,double b) +{ myNodeProp->SetColor(r,g,b); myNodeExtProp->SetColor(1.0-r,1.0-g,1.0-b); if( SMESH_GroupObj* aGroupObj = dynamic_cast( myVisualObj.get() ) ) @@ -1993,11 +2112,13 @@ void SMESH_ActorDef::SetNodeColor(double r,double g,double b){ Modified(); } -void SMESH_ActorDef::GetNodeColor(double& r,double& g,double& b){ +void SMESH_ActorDef::GetNodeColor(double& r,double& g,double& b) +{ ::GetColor(myNodeProp,r,g,b); } -void SMESH_ActorDef::Set0DColor(double r,double g,double b){ +void SMESH_ActorDef::Set0DColor(double r,double g,double b) +{ my0DProp->SetColor(r,g,b); if( SMESH_GroupObj* aGroupObj = dynamic_cast( myVisualObj.get() ) ) if( aGroupObj->GetElementType() == SMDSAbs_0DElement ) @@ -2005,11 +2126,13 @@ void SMESH_ActorDef::Set0DColor(double r,double g,double b){ Modified(); } -void SMESH_ActorDef::Get0DColor(double& r,double& g,double& b){ +void SMESH_ActorDef::Get0DColor(double& r,double& g,double& b) +{ ::GetColor(my0DProp,r,g,b); } -void SMESH_ActorDef::SetBallColor(double r,double g,double b){ +void SMESH_ActorDef::SetBallColor(double r,double g,double b) +{ myBallProp->SetColor(r,g,b); if( SMESH_GroupObj* aGroupObj = dynamic_cast( myVisualObj.get() ) ) if( aGroupObj->GetElementType() == SMDSAbs_Ball ) @@ -2017,35 +2140,42 @@ void SMESH_ActorDef::SetBallColor(double r,double g,double b){ Modified(); } -void SMESH_ActorDef::GetBallColor(double& r,double& g,double& b){ +void SMESH_ActorDef::GetBallColor(double& r,double& g,double& b) +{ ::GetColor(myBallProp,r,g,b); } -void SMESH_ActorDef::SetHighlightColor(double r,double g,double b){ +void SMESH_ActorDef::SetHighlightColor(double r,double g,double b) +{ myHighlightProp->SetColor(r,g,b); Modified(); } -void SMESH_ActorDef::GetHighlightColor(double& r,double& g,double& b){ +void SMESH_ActorDef::GetHighlightColor(double& r,double& g,double& b) +{ ::GetColor(myHighlightProp,r,g,b); } -void SMESH_ActorDef::SetPreHighlightColor(double r,double g,double b){ +void SMESH_ActorDef::SetPreHighlightColor(double r,double g,double b) +{ myPreselectProp->SetColor(r,g,b); Modified(); } -void SMESH_ActorDef::GetPreHighlightColor(double& r,double& g,double& b){ +void SMESH_ActorDef::GetPreHighlightColor(double& r,double& g,double& b) +{ ::GetColor(myPreselectProp,r,g,b); } -double SMESH_ActorDef::GetLineWidth(){ +double SMESH_ActorDef::GetLineWidth() +{ return myEdgeProp->GetLineWidth(); } -void SMESH_ActorDef::SetLineWidth(double theVal){ +void SMESH_ActorDef::SetLineWidth(double theVal) +{ myEdgeProp->SetLineWidth(theVal); my1DProp->SetLineWidth(theVal + aLineWidthInc); @@ -2069,7 +2199,8 @@ void SMESH_ActorDef::SetOutlineWidth(double theVal) Modified(); } -void SMESH_ActorDef::Set0DSize(double theVal){ +void SMESH_ActorDef::Set0DSize(double theVal) +{ my0DProp->SetPointSize(theVal); myHighlightProp->SetPointSize(theVal); myPreselectProp->SetPointSize(theVal); @@ -2084,11 +2215,13 @@ void SMESH_ActorDef::Set0DSize(double theVal){ Modified(); } -double SMESH_ActorDef::Get0DSize(){ +double SMESH_ActorDef::Get0DSize() +{ return my0DProp->GetPointSize(); } -void SMESH_ActorDef::SetBallSize(double theVal){ +void SMESH_ActorDef::SetBallSize(double theVal) +{ myBallProp->SetPointSize(theVal); if(SMESH_SVTKActor* aCustom = SMESH_SVTKActor::SafeDownCast( myHighlightActor )) { @@ -2101,7 +2234,8 @@ void SMESH_ActorDef::SetBallSize(double theVal){ Modified(); } -double SMESH_ActorDef::GetBallSize(){ +double SMESH_ActorDef::GetBallSize() +{ return myBallProp->GetPointSize(); } @@ -2128,15 +2262,12 @@ int SMESH_ActorDef::GetObjDimension( const int theObjId ) return myVisualObj->GetElemDimension( theObjId ); } -bool -SMESH_ActorDef:: -IsImplicitFunctionUsed() const +bool SMESH_ActorDef::IsImplicitFunctionUsed() const { return myBaseActor->IsImplicitFunctionUsed(); } -void -SMESH_ActorDef::SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed) +void SMESH_ActorDef::SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed) { myNodeActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed); myBaseActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed); @@ -2158,8 +2289,7 @@ SMESH_ActorDef::SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed) my3DExtActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed); } -vtkIdType -SMESH_ActorDef::AddClippingPlane(vtkPlane* thePlane) +vtkIdType SMESH_ActorDef::AddClippingPlane(vtkPlane* thePlane) { if(thePlane){ myImplicitBoolean->GetFunction()->AddItem(thePlane); @@ -2171,15 +2301,13 @@ SMESH_ActorDef::AddClippingPlane(vtkPlane* thePlane) return myCippingPlaneCont.size(); } -void -SMESH_ActorDef::AddOpenGLClippingPlane(vtkPlane* thePlane) +void SMESH_ActorDef::AddOpenGLClippingPlane(vtkPlane* thePlane) { if(thePlane) myPlaneCollection->AddItem( thePlane ); } -void -SMESH_ActorDef::SetOpenGLClippingPlane() +void SMESH_ActorDef::SetOpenGLClippingPlane() { // before use this method you must add clipping planes using method // SMESH_ActorDef::AddOpenGLClippingPlane(vtkPlane* thePlane) @@ -2197,6 +2325,11 @@ SMESH_ActorDef::SetOpenGLClippingPlane() myHighlitableActor->SetPlaneCollection( myPlaneCollection ); myHighlitableActor->SetUnstructuredGrid(myVisualObj->GetUnstructuredGrid()); + if ( !mySelector || !mySelector->IsSelectionEnabled() ) + { + myBaseActor->SetUnstructuredGrid( NULL ); + //myHighlitableActor->SetUnstructuredGrid( NULL ); + } my1DActor->SetPlaneCollection( myPlaneCollection ); my1DActor->SetUnstructuredGrid(myVisualObj->GetUnstructuredGrid()); @@ -2230,9 +2363,7 @@ SMESH_ActorDef::SetOpenGLClippingPlane() Modified(); } -void -SMESH_ActorDef:: -RemoveAllClippingPlanes() +void SMESH_ActorDef::RemoveAllClippingPlanes() { myPlaneCollection->RemoveAllItems(); myImplicitBoolean->GetFunction()->RemoveAllItems(); @@ -2242,16 +2373,12 @@ RemoveAllClippingPlanes() myNodeActor->UpdateLabels(); } -vtkIdType -SMESH_ActorDef:: -GetNumberOfClippingPlanes() +vtkIdType SMESH_ActorDef::GetNumberOfClippingPlanes() { return myCippingPlaneCont.size(); } -vtkPlane* -SMESH_ActorDef:: -GetClippingPlane(vtkIdType theID) +vtkPlane* SMESH_ActorDef::GetClippingPlane(vtkIdType theID) { if ( theID >= (vtkIdType)myCippingPlaneCont.size() ) return NULL; @@ -2400,7 +2527,7 @@ void SMESH_ActorDef::UpdateDistribution() SMESH_VisualObjDef::TEntityList elems; if ( ! dynamic_cast(myVisualObj.get())) dynamic_cast(myVisualObj.get())->GetEntities( fun->GetType(), elems ); - std::vector elemIds; + std::vector elemIds; elemIds.reserve( elems.size() ); for ( SMESH_VisualObjDef::TEntityList::iterator e = elems.begin(); e != elems.end(); ++e) elemIds.push_back( (*e)->GetID()); vtkLookupTable* lookupTable = static_cast(myScalarBarActor->GetLookupTable()); @@ -2456,8 +2583,8 @@ void SMESH_ActorDef::SetMarkerTexture( int theMarkerId, VTK::MarkerTexture theMa } #ifndef DISABLE_PLOT2DVIEWER -SPlot2d_Histogram* SMESH_ActorDef::UpdatePlot2Histogram() { - +SPlot2d_Histogram* SMESH_ActorDef::UpdatePlot2Histogram() +{ if(my2dHistogram) my2dHistogram->clearAllPoints();