Fix for '#17888 [CEA 17919] VTK Viewer - Scaling'.

This commit is contained in:
rnv 2020-07-13 14:45:26 +03:00
parent 11cbc17d51
commit 090649639c
4 changed files with 56 additions and 14 deletions

View File

@ -1166,3 +1166,19 @@ void GEOM_Actor::SetWidth(const int width) {
int GEOM_Actor::GetWidth() const {
return (int)myIsolatedEdgeActor->GetProperty()->GetLineWidth();
}
void GEOM_Actor::SetTransform(VTKViewer_Transform* theTransform)
{
Superclass::SetTransform(theTransform);
myStandaloneVertexActor->SetTransform(theTransform);
myStandaloneVertexActor->SetTransform(theTransform);
myIsolatedEdgeActor->SetTransform(theTransform);
myOneFaceEdgeActor->SetTransform(theTransform);
mySharedEdgeActor->SetTransform(theTransform);
myWireframeFaceActor->SetTransform(theTransform);
myShadingFaceActor->SetTransform(theTransform);
myHighlightActor->SetTransform(theTransform);
Modified();
}

View File

@ -222,6 +222,11 @@ public:
bool
GetNameMode();
virtual
void
SetTransform(VTKViewer_Transform* theTransform);
protected:
void SetModified();

View File

@ -27,19 +27,25 @@
#include <vtkPolyDataMapper.h>
#include <vtkPolyDataNormals.h>
#include <vtkActor.h>
#include <VTKViewer_Actor.h>
#include <vtkRenderer.h>
#include <VTKViewer_Actor.h>
#include <VTKViewer_Transform.h>
#include <VTKViewer_TransformFilter.h>
vtkStandardNewMacro(GEOM_DeviceActor);
GEOM_DeviceActor::GEOM_DeviceActor():
myStripper(vtkStripper::New(),true),
myPolyDataMapper(vtkPolyDataMapper::New(),true),
myPolyDataNormals(vtkPolyDataNormals::New(),true),
myActor(VTKViewer_Actor::New(),true)
GEOM_DeviceActor::GEOM_DeviceActor() :
myStripper(vtkStripper::New(), true),
myPolyDataMapper(vtkPolyDataMapper::New(), true),
myPolyDataNormals(vtkPolyDataNormals::New(), true),
myActor(VTKViewer_Actor::New(), true),
myTransformFilter(VTKViewer_TransformFilter::New())
{
myStripper->SetInputConnection(myPolyDataNormals->GetOutputPort());
myPolyDataMapper->SetInputConnection(myStripper->GetOutputPort());
myTransformFilter->SetInputConnection(myStripper->GetOutputPort());
myPolyDataMapper->SetInputConnection(myTransformFilter->GetOutputPort());
myActor->SetMapper(myPolyDataMapper.Get());
myActor->PickableOff();
@ -57,10 +63,12 @@ SetInput(vtkAlgorithmOutput* thePolyData, bool theUseStripper)
{
myPolyDataNormals->SetInputConnection(thePolyData);
myStripper->SetInputConnection(myPolyDataNormals->GetOutputPort());
myPolyDataMapper->SetInputConnection(myStripper->GetOutputPort());
myTransformFilter->SetInputConnection(myStripper->GetOutputPort());
myPolyDataMapper->SetInputConnection(myTransformFilter->GetOutputPort());
}
else
myPolyDataMapper->SetInputConnection(thePolyData);
myTransformFilter->SetInputConnection(thePolyData);
myPolyDataMapper->SetInputConnection(myTransformFilter->GetOutputPort());
}
void
@ -118,3 +126,10 @@ RemoveFromRender(vtkRenderer* theRenderer)
{
theRenderer->RemoveActor(myActor.GetPointer());
}
void
GEOM_DeviceActor
::SetTransform(VTKViewer_Transform* theTransform)
{
myTransformFilter->SetTransform(theTransform);
}

View File

@ -36,7 +36,10 @@ typedef GEOM_SmartPtr<vtkPolyDataNormals> PPolyDataNormals;
//class vtkActor;
class VTKViewer_Actor;
class VTKViewer_Transform;
class VTKViewer_TransformFilter;
typedef GEOM_SmartPtr<VTKViewer_Actor> PActor;
typedef GEOM_SmartPtr<VTKViewer_TransformFilter> PTransformFilter;
class vtkProperty;
class vtkRenderer;
@ -67,11 +70,14 @@ public:
PActor GetDeviceActor() {return myActor;}
virtual void SetTransform(VTKViewer_Transform* theTransform);
protected:
PPolyDataNormals myPolyDataNormals;
PPolyDataMapper myPolyDataMapper;
PStripper myStripper;
PActor myActor;
PTransformFilter myTransformFilter;
GEOM_DeviceActor();
~GEOM_DeviceActor();