FEM Post: Handle wireframe with internal wires

This commit is contained in:
Stefan Tröger 2016-03-20 10:27:37 +01:00 committed by wmayer
parent 945aee1d1c
commit 95d1e8244f
2 changed files with 15 additions and 5 deletions

View File

@ -110,12 +110,16 @@ ViewProviderFemPostObject::ViewProviderFemPostObject() : m_blockPropertyChanges(
//create the vtk algorithms we use for visualisation //create the vtk algorithms we use for visualisation
m_outline = vtkSmartPointer<vtkOutlineCornerFilter>::New(); m_outline = vtkSmartPointer<vtkOutlineCornerFilter>::New();
m_points = vtkSmartPointer<vtkVertexGlyphFilter>::New(); m_points = vtkSmartPointer<vtkVertexGlyphFilter>::New();
m_pointsSurface = vtkSmartPointer<vtkVertexGlyphFilter>::New();
m_surface = vtkSmartPointer<vtkGeometryFilter>::New(); m_surface = vtkSmartPointer<vtkGeometryFilter>::New();
m_wireframe = vtkSmartPointer<vtkExtractEdges>::New(); m_wireframe = vtkSmartPointer<vtkExtractEdges>::New();
m_wireframeSurface = vtkSmartPointer<vtkExtractEdges>::New();
m_surfaceEdges = vtkSmartPointer<vtkAppendPolyData>::New(); m_surfaceEdges = vtkSmartPointer<vtkAppendPolyData>::New();
m_pointsSurface->AddInputConnection(m_surface->GetOutputPort());
m_wireframeSurface->AddInputConnection(m_surface->GetOutputPort());
m_surfaceEdges->AddInputConnection(m_surface->GetOutputPort()); m_surfaceEdges->AddInputConnection(m_surface->GetOutputPort());
m_surfaceEdges->AddInputConnection(m_wireframe->GetOutputPort()); m_surfaceEdges->AddInputConnection(m_wireframeSurface->GetOutputPort());
m_currentAlgorithm = m_outline; m_currentAlgorithm = m_outline;
} }
@ -194,9 +198,13 @@ void ViewProviderFemPostObject::setDisplayMode(const char* ModeName)
m_currentAlgorithm = m_surface; m_currentAlgorithm = m_surface;
else if (strcmp("Wireframe",ModeName)==0) else if (strcmp("Wireframe",ModeName)==0)
m_currentAlgorithm = m_wireframe; m_currentAlgorithm = m_wireframe;
else if (strcmp("Wireframe (surface only)",ModeName)==0)
m_currentAlgorithm = m_wireframeSurface;
else if (strcmp("Nodes",ModeName)==0) else if (strcmp("Nodes",ModeName)==0)
m_currentAlgorithm = m_points; m_currentAlgorithm = m_points;
else if (strcmp("Nodes (surface only)",ModeName)==0)
m_currentAlgorithm = m_pointsSurface;
update(); update();
ViewProviderDocumentObject::setDisplayMode( ModeName ); ViewProviderDocumentObject::setDisplayMode( ModeName );
@ -207,9 +215,11 @@ std::vector<std::string> ViewProviderFemPostObject::getDisplayModes(void) const
std::vector<std::string> StrList; std::vector<std::string> StrList;
StrList.push_back("Outline"); StrList.push_back("Outline");
StrList.push_back("Nodes"); StrList.push_back("Nodes");
//StrList.push_back("Nodes (surface only)"); somehow this filter does not work
StrList.push_back("Surface"); StrList.push_back("Surface");
StrList.push_back("Surface with Edges"); StrList.push_back("Surface with Edges");
StrList.push_back("Wireframe"); StrList.push_back("Wireframe");
StrList.push_back("Wireframe (surface only)");
return StrList; return StrList;
} }

View File

@ -141,8 +141,8 @@ protected:
vtkSmartPointer<vtkGeometryFilter> m_surface; vtkSmartPointer<vtkGeometryFilter> m_surface;
vtkSmartPointer<vtkAppendPolyData> m_surfaceEdges; vtkSmartPointer<vtkAppendPolyData> m_surfaceEdges;
vtkSmartPointer<vtkOutlineCornerFilter> m_outline; vtkSmartPointer<vtkOutlineCornerFilter> m_outline;
vtkSmartPointer<vtkExtractEdges> m_wireframe; vtkSmartPointer<vtkExtractEdges> m_wireframe, m_wireframeSurface;
vtkSmartPointer<vtkVertexGlyphFilter> m_points; vtkSmartPointer<vtkVertexGlyphFilter> m_points, m_pointsSurface;
private: private:
void updateProperties(); void updateProperties();