1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
/*=========================================================================
Program: Visualization Toolkit
Module: TestPolyhedron2.cxx
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.
=========================================================================*/
#include "vtkPlane.h"
#include "vtkPolyhedron.h"
#include "vtkUnstructuredGrid.h"
#include "vtkCutter.h"
#include "vtkNew.h"
#include "vtkTestUtilities.h"
#include "vtkXMLPolyDataWriter.h"
#include "vtkXMLUnstructuredGridReader.h"
#include "vtkXMLUnstructuredGridWriter.h"
// Test of contour/clip of vtkPolyhedron. uses input from
// https://gitlab.kitware.com/vtk/vtk/-/issues/14485
int TestPolyhedron2(int argc, char* argv[])
{
if (argc < 3)
return 1; // test not run with data on the command line
vtkObject::GlobalWarningDisplayOff();
const char* filename = argv[2];
vtkNew<vtkXMLUnstructuredGridReader> reader;
reader->SetFileName(filename);
reader->Update();
vtkUnstructuredGrid* pGrid = reader->GetOutput();
vtkNew<vtkCutter> cutter;
vtkNew<vtkPlane> p;
p->SetOrigin(pGrid->GetCenter());
p->SetNormal(1, 0, 0);
cutter->SetCutFunction(p);
cutter->SetGenerateTriangles(0);
cutter->SetInputConnection(0, reader->GetOutputPort());
cutter->Update();
vtkPolyData* output = vtkPolyData::SafeDownCast(cutter->GetOutputDataObject(0));
if (output->GetNumberOfCells() != 2)
{
std::cerr << "Expected 2 polygons but found " << output->GetNumberOfCells()
<< " polygons in sliced polyhedron." << std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
|