mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-11-15 18:18:35 +05:00
Bug IPAL18657 - VTK 3D Viewer: Bad representation of Local Coordinate systems.
This commit is contained in:
parent
e39164dd0e
commit
b32f549272
@ -822,7 +822,7 @@ void GEOM_Displayer::Update( SALOME_VTKPrs* prs )
|
|||||||
|
|
||||||
if ( myType == GEOM_MARKER && myShape.ShapeType() == TopAbs_FACE )
|
if ( myType == GEOM_MARKER && myShape.ShapeType() == TopAbs_FACE )
|
||||||
{
|
{
|
||||||
myToActivate = false;
|
//myToActivate = false; // ouv: commented to make the trihedron pickable (see IPAL18657)
|
||||||
GEOM_VTKTrihedron* aTrh = GEOM_VTKTrihedron::New();
|
GEOM_VTKTrihedron* aTrh = GEOM_VTKTrihedron::New();
|
||||||
|
|
||||||
if ( HasColor() )
|
if ( HasColor() )
|
||||||
|
@ -200,9 +200,18 @@ GEOM_VTKTrihedron::GEOM_VTKTrihedron()
|
|||||||
myMapper = vtkPolyDataMapper::New();
|
myMapper = vtkPolyDataMapper::New();
|
||||||
myAxis[ 0 ] = myAxis[ 1 ] = myAxis[ 2 ] = 0;
|
myAxis[ 0 ] = myAxis[ 1 ] = myAxis[ 2 ] = 0;
|
||||||
mySize = 100;
|
mySize = 100;
|
||||||
SetInfinitive( true );
|
|
||||||
myColor[ 0 ] = myColor[ 1 ] = myColor[ 1 ] = -1;
|
myColor[ 0 ] = myColor[ 1 ] = myColor[ 2 ] = -1;
|
||||||
SetInfinitive( true );
|
|
||||||
|
myDefaultColor[ 0 ] = myDefaultColor[ 1 ] = myDefaultColor[ 2 ] = 1;
|
||||||
|
|
||||||
|
myPreHighlightColor[ 0 ] = 0;
|
||||||
|
myPreHighlightColor[ 1 ] = myPreHighlightColor[ 2 ] = 1;
|
||||||
|
|
||||||
|
myHighlightColor[ 0 ] = myHighlightColor[ 1 ] = myHighlightColor[ 2 ] = 1;
|
||||||
|
|
||||||
|
//SetInfinitive( true );
|
||||||
|
SetPickable( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
GEOM_VTKTrihedron::~GEOM_VTKTrihedron()
|
GEOM_VTKTrihedron::~GEOM_VTKTrihedron()
|
||||||
@ -254,6 +263,12 @@ void GEOM_VTKTrihedron::SetSize( vtkFloatingPointType theSize )
|
|||||||
aRes->Delete();
|
aRes->Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GEOM_VTKTrihedron::SetVisibility( int theVisibility )
|
||||||
|
{
|
||||||
|
Superclass::SetVisibility( theVisibility );
|
||||||
|
SetVisibility( theVisibility == 1 ? VTKViewer_Trihedron::eOn : VTKViewer_Trihedron::eOff );
|
||||||
|
}
|
||||||
|
|
||||||
void GEOM_VTKTrihedron::SetVisibility( VTKViewer_Trihedron::TVisibility theVis )
|
void GEOM_VTKTrihedron::SetVisibility( VTKViewer_Trihedron::TVisibility theVis )
|
||||||
{
|
{
|
||||||
for ( int i = 0; i < 3; i++ )
|
for ( int i = 0; i < 3; i++ )
|
||||||
@ -368,21 +383,48 @@ bool GEOM_VTKTrihedron::IsSetCamera() const
|
|||||||
|
|
||||||
bool GEOM_VTKTrihedron::IsResizable() const
|
bool GEOM_VTKTrihedron::IsResizable() const
|
||||||
{
|
{
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GEOM_VTKTrihedron::Highlight( bool theIsHighlight )
|
||||||
|
{
|
||||||
|
if( theIsHighlight )
|
||||||
|
SetAxesColors( myHighlightColor );
|
||||||
|
else
|
||||||
|
ResetAxesColors();
|
||||||
|
|
||||||
|
Superclass::Highlight( theIsHighlight );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GEOM_VTKTrihedron::PreHighlight( vtkInteractorStyle *theInteractorStyle,
|
||||||
|
SVTK_SelectionEvent* theSelectionEvent,
|
||||||
|
bool theIsHighlight )
|
||||||
|
{
|
||||||
|
if ( !GetPickable() )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if ( !isHighlighted() )
|
||||||
|
{
|
||||||
|
if( theIsHighlight )
|
||||||
|
SetAxesColors( myPreHighlightColor );
|
||||||
|
else
|
||||||
|
ResetAxesColors();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Superclass::PreHighlight( theInteractorStyle, theSelectionEvent, theIsHighlight );
|
||||||
|
}
|
||||||
|
|
||||||
|
void GEOM_VTKTrihedron::ResetAxesColors()
|
||||||
|
{
|
||||||
|
if( myColor[0] != -1 )
|
||||||
|
SetAxesColors( myColor );
|
||||||
|
else
|
||||||
|
SetAxesColors( myDefaultColor, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
void GEOM_VTKTrihedron::SetAxesColors( vtkFloatingPointType theColor[3], bool theIsDiffuse )
|
||||||
|
{
|
||||||
|
myAxis[ 0 ]->SetColor( theColor[0], theIsDiffuse ? 0.0 : theColor[1], theIsDiffuse ? 0.0 : theColor[2] );
|
||||||
|
myAxis[ 1 ]->SetColor( theIsDiffuse ? 0.0 : theColor[0], theColor[1], theIsDiffuse ? 0.0 : theColor[2] );
|
||||||
|
myAxis[ 2 ]->SetColor( theIsDiffuse ? 0.0 : theColor[0], theIsDiffuse ? 0.0 : theColor[1], theColor[2] );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -57,6 +57,7 @@ public:
|
|||||||
|
|
||||||
virtual vtkFloatingPointType GetSize() { return mySize;}
|
virtual vtkFloatingPointType GetSize() { return mySize;}
|
||||||
|
|
||||||
|
virtual void SetVisibility( int theVisibility );
|
||||||
virtual void SetVisibility( VTKViewer_Trihedron::TVisibility theVis );
|
virtual void SetVisibility( VTKViewer_Trihedron::TVisibility theVis );
|
||||||
virtual void VisibilityOff() { SetVisibility( VTKViewer_Trihedron::eOff ); }
|
virtual void VisibilityOff() { SetVisibility( VTKViewer_Trihedron::eOff ); }
|
||||||
virtual void VisibilityOn() { SetVisibility( VTKViewer_Trihedron::eOn ); }
|
virtual void VisibilityOn() { SetVisibility( VTKViewer_Trihedron::eOn ); }
|
||||||
@ -79,7 +80,16 @@ public:
|
|||||||
void SetColor( vtkFloatingPointType r, vtkFloatingPointType g, vtkFloatingPointType b );
|
void SetColor( vtkFloatingPointType r, vtkFloatingPointType g, vtkFloatingPointType b );
|
||||||
void GetColor( vtkFloatingPointType& r, vtkFloatingPointType& g, vtkFloatingPointType& b );
|
void GetColor( vtkFloatingPointType& r, vtkFloatingPointType& g, vtkFloatingPointType& b );
|
||||||
|
|
||||||
virtual bool hasHighlight() { return false; }
|
virtual bool hasHighlight() { return true; }
|
||||||
|
|
||||||
|
virtual void Highlight( bool theHighlight );
|
||||||
|
virtual bool PreHighlight( vtkInteractorStyle* theInteractorStyle,
|
||||||
|
SVTK_SelectionEvent* theSelectionEvent,
|
||||||
|
bool theIsHighlight );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void ResetAxesColors();
|
||||||
|
virtual void SetAxesColors( vtkFloatingPointType theColor[3], bool theIsDiffuse = false );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
VTKViewer_Axis* myAxis[3];
|
VTKViewer_Axis* myAxis[3];
|
||||||
@ -88,6 +98,9 @@ protected:
|
|||||||
gp_Pnt myLocation;
|
gp_Pnt myLocation;
|
||||||
gp_Dir myDirX, myDirY, myDirZ;
|
gp_Dir myDirX, myDirY, myDirZ;
|
||||||
vtkFloatingPointType myColor[ 3 ];
|
vtkFloatingPointType myColor[ 3 ];
|
||||||
|
vtkFloatingPointType myDefaultColor[ 3 ];
|
||||||
|
vtkFloatingPointType myPreHighlightColor[ 3 ];
|
||||||
|
vtkFloatingPointType myHighlightColor[ 3 ];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user