X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FOBJECT%2FSMESH_Actor.cxx;h=dac3d4a0d6418b22e1e8afcf6d0bd3ef55b6ca24;hp=48ad71c59cebebd0e143981c170ac47fb84ebb44;hb=2ffe4e63a878965af69ac04a01c57243e45e6e86;hpb=30ce546b0c5099ad1112929e2db94810e683e54b diff --git a/src/OBJECT/SMESH_Actor.cxx b/src/OBJECT/SMESH_Actor.cxx index 48ad71c59..dac3d4a0d 100644 --- a/src/OBJECT/SMESH_Actor.cxx +++ b/src/OBJECT/SMESH_Actor.cxx @@ -804,12 +804,20 @@ bool SMESH_ActorDef::GetFacesOrientation3DVectors() } +void SMESH_ActorDef::SetControl(SMESH::Controls::FunctorPtr theFunctor) +{ + myFunctor = theFunctor; + if ( !theFunctor ) + SetControlMode( eNone, true ); + else + SetControlMode( eCustomControl, true ); +} + void SMESH_ActorDef::SetControlMode(eControl theMode) { SetControlMode(theMode,true); } - void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode ) { vtkLookupTable* lookupTable = static_cast(myScalarBarActor->GetLookupTable()); @@ -844,11 +852,9 @@ void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode ) break; } case eLength2D: - { myFunctor.reset(new SMESH::Controls::Length2D()); myControlActor = my2DActor; break; - } case eFreeBorders: myFunctor.reset(new SMESH::Controls::FreeBorders()); myControlActor = my1DActor; @@ -958,6 +964,14 @@ void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode ) myControlActor = my3DActor; break; } + case eDeflection2D: + { + SMESH::Controls::Deflection2D* aControl = new SMESH::Controls::Deflection2D(); + aControl->SetPrecision( myControlsPrecision ); + myFunctor.reset( aControl ); + myControlActor = my2DActor; + break; + } case eBareBorderVolume: { myFunctor.reset(new SMESH::Controls::BareBorderVolume()); @@ -1000,6 +1014,19 @@ void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode ) myControlActor = myNodeActor; break; } + case eCustomControl: + { + if ( !myFunctor ) + return; + switch ( myFunctor->GetType() ) { + case SMDSAbs_Node : myControlActor = myNodeActor; break; + case SMDSAbs_Edge : myControlActor = my1DActor; break; + case SMDSAbs_Face : myControlActor = my2DActor; break; + case SMDSAbs_Volume : myControlActor = my3DActor; break; + default : return; + } + break; + } default: return; } @@ -1432,6 +1459,10 @@ double* SMESH_ActorDef::GetNodeCoord(int theObjID) return myPickableActor->GetNodeCoord(theObjID); } +int SMESH_ActorDef::GetNodeVtkId(int theObjID) +{ + return myPickableActor->GetNodeVtkId(theObjID); +} int SMESH_ActorDef::GetElemObjId(int theVtkID) {