From ec36e7a4b52e9cc65dde11e699915a3fbda3c188 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Thu, 14 Feb 2019 14:42:56 +0100 Subject: [PATCH] ENH: additional vtk::Tools methods for cloud-related meshes - the Tools::Vertices() method for creating a vtkPolyData with the given points and a corresponding Verts for the points. --- src/conversion/vtk/adaptor/foamVtkTools.H | 13 ++++++++++++ src/conversion/vtk/adaptor/foamVtkToolsI.H | 24 ++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/src/conversion/vtk/adaptor/foamVtkTools.H b/src/conversion/vtk/adaptor/foamVtkTools.H index f9cb5c7bcdd..215fb421012 100644 --- a/src/conversion/vtk/adaptor/foamVtkTools.H +++ b/src/conversion/vtk/adaptor/foamVtkTools.H @@ -210,6 +210,19 @@ namespace Tools template<class Face> vtkSmartPointer<vtkCellArray> Faces(const UList<Face>& faces); + //- Return vtkPolyData of vertices for each point + inline vtkSmartPointer<vtkPolyData> Vertices + ( + const UList<point>& pts + ); + + //- Return vtkPolyData of vertices for each point + inline vtkSmartPointer<vtkPolyData> Vertices + ( + const UList<point>& pts, + const labelUList& addr + ); + //- Min/Max of scalar, or mag() of non-scalars. Includes nullptr check. inline scalarMinMax rangeOf(vtkDataArray* data); diff --git a/src/conversion/vtk/adaptor/foamVtkToolsI.H b/src/conversion/vtk/adaptor/foamVtkToolsI.H index 2be7434d1d3..40ffae57e65 100644 --- a/src/conversion/vtk/adaptor/foamVtkToolsI.H +++ b/src/conversion/vtk/adaptor/foamVtkToolsI.H @@ -98,6 +98,30 @@ Foam::vtk::Tools::Points(const UList<point>& pts, const labelUList& addr) } +inline vtkSmartPointer<vtkPolyData> +Foam::vtk::Tools::Vertices(const UList<point>& pts) +{ + auto vtkmesh = vtkSmartPointer<vtkPolyData>::New(); + + vtkmesh->SetPoints(Tools::Points(pts)); + vtkmesh->SetVerts(Tools::identityVertices(pts.size())); + + return vtkmesh; +} + + +inline vtkSmartPointer<vtkPolyData> +Foam::vtk::Tools::Vertices(const UList<point>& pts, const labelUList& addr) +{ + auto vtkmesh = vtkSmartPointer<vtkPolyData>::New(); + + vtkmesh->SetPoints(Tools::Points(pts, addr)); + vtkmesh->SetVerts(Tools::identityVertices(addr.size())); + + return vtkmesh; +} + + inline Foam::scalarMinMax Foam::vtk::Tools::rangeOf(vtkDataArray* data) { double range[2]{GREAT, -GREAT}; -- GitLab