Commit fbe92f53 authored by Bob Obara's avatar Bob Obara

ENH: Adding a reader for PTS Files

parent e5d977a6
......@@ -18,6 +18,7 @@ SET(Module_SRCS
vtkParticleReader.cxx
vtkPDBReader.cxx
vtkProStarReader.cxx
vtkPTSReader.cxx
vtkSTLReader.cxx
vtkSTLWriter.cxx
vtkTecplotReader.cxx
......
......@@ -39,6 +39,10 @@ vtk_add_test_cxx(${vtk-module}CxxTests tests
TestSTLReaderMultiplePatches,TestSTLReader.cxx DATA{${VTK_TEST_INPUT_DIR}/multiple_patches.stl}
)
vtk_add_test_cxx(${vtk-module}CxxTests tests
TestPTSReader,TestPTSReader.cxx DATA{${VTK_TEST_INPUT_DIR}/samplePTS.pts}
)
set(_known_little_endian FALSE)
if (DEFINED CMAKE_WORDS_BIGENDIAN)
if (NOT CMAKE_WORDS_BIGENDIAN)
......
#include <vtkNew.h>
#include <vtkActor.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkRegressionTestImage.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkPTSReader.h>
int TestPTSReader(int argc, char *argv[])
{
if (argc < 2)
{
std::cerr << "Required parameters: <filename> maxNumberOfPoints(optional)" << endl;
return EXIT_FAILURE;
}
std::string inputFilename = argv[1];
vtkNew<vtkPTSReader> reader;
reader->SetFileName(inputFilename.c_str());
reader->SetLimitToMaxNumberOfPoints(true);
reader->SetMaxNumberOfPoints(100000);
reader->Update();
// Visualize
vtkNew<vtkPolyDataMapper> mapper;
mapper->SetInputConnection(reader->GetOutputPort());
vtkNew<vtkActor> actor;
actor->SetMapper(mapper.GetPointer());
vtkNew<vtkRenderer> renderer;
vtkNew<vtkRenderWindow> renderWindow;
renderWindow->AddRenderer(renderer.GetPointer());
vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
renderWindowInteractor->SetRenderWindow(renderWindow.GetPointer());
renderer->AddActor(actor.GetPointer());
renderer->SetBackground(.3, .6, .3); // Background color green
renderWindow->Render();
int retVal = vtkRegressionTestImage( renderWindow.GetPointer() );
if ( retVal == vtkRegressionTester::DO_INTERACTOR)
{
renderWindowInteractor->Start();
}
return !retVal;
}
This diff is collapsed.
/*=========================================================================
Program: Visualization Toolkit
Module: vtkPTSReader.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkPTSReader - Read ASCII PTS Files.
// .SECTION Description
// vtkPTSReader reads either a text file of
// points. The first line is the number of points. Point information is
// either x y z intensity or x y z intensity r g b
#ifndef vtkPTSReader_h
#define vtkPTSReader_h
#include "vtkIOGeometryModule.h" // For export macro
#include "vtkPolyDataAlgorithm.h"
#include "vtkBoundingBox.h" // For Bounding Box Data Member
class VTKIOGEOMETRY_EXPORT vtkPTSReader : public vtkPolyDataAlgorithm
{
public:
static vtkPTSReader *New();
vtkTypeMacro(vtkPTSReader,vtkPolyDataAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Specify file name.
void SetFileName(const char *filename);
vtkGetStringMacro(FileName);
// Description:
// Boolean value indicates whether or not to limit points read to a specified
// (ReadBounds) region.
vtkBooleanMacro(LimitReadToBounds, bool);
vtkSetMacro(LimitReadToBounds, bool);
vtkGetMacro(LimitReadToBounds, bool);
// Description:
// Bounds to use if LimitReadToBounds is On
vtkSetVector6Macro(ReadBounds, double);
vtkGetVector6Macro(ReadBounds, double);
// Description:
// The output type defaults to float, but can instead be double.
vtkBooleanMacro(OutputDataTypeIsDouble, bool);
vtkSetMacro(OutputDataTypeIsDouble, bool);
vtkGetMacro(OutputDataTypeIsDouble, bool);
// Description:
// Boolean value indicates whether or not to limit number of points read
// based on MaxNumbeOfPoints.
vtkBooleanMacro(LimitToMaxNumberOfPoints, bool);
vtkSetMacro(LimitToMaxNumberOfPoints, bool);
vtkGetMacro(LimitToMaxNumberOfPoints, bool);
// Description:
// The maximum number of points to load if LimitToMaxNumberOfPoints is on/true.
// Sets a temporary onRatio.
vtkSetClampMacro(MaxNumberOfPoints,vtkIdType,1,VTK_INT_MAX);
vtkGetMacro(MaxNumberOfPoints,vtkIdType);
protected:
vtkPTSReader();
~vtkPTSReader();
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
char *FileName;
bool OutputDataTypeIsDouble;
bool LimitReadToBounds;
double ReadBounds[6];
vtkBoundingBox ReadBBox;
bool LimitToMaxNumberOfPoints;
vtkIdType MaxNumberOfPoints;
private:
vtkPTSReader(const vtkPTSReader&); // Not implemented.
void operator=(const vtkPTSReader&); // Not implemented.
};
#endif
12d79dddbfceb2116ccbaae0f8600a08
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment