/*========================================================================= Program: Visualization Toolkit Module: vtkSTLWriter.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. =========================================================================*/ /** * @class vtkSTLWriter * @brief write stereo lithography files * * vtkSTLWriter writes stereo lithography (.stl) files in either ASCII or * binary form. Stereo lithography files contain only triangles. Since VTK 8.1, * this writer converts non-triangle polygons into triangles, so there is no * longer a need to use vtkTriangleFilter prior to using this writer if the * input contains polygons with more than three vertices. * * @warning * Binary files written on one system may not be readable on other systems. * vtkSTLWriter uses VAX or PC byte ordering and swaps bytes on other systems. */ #ifndef vtkSTLWriter_h #define vtkSTLWriter_h #include "vtkIOGeometryModule.h" // For export macro #include "vtkWriter.h" class vtkCellArray; class vtkPoints; class vtkPolyData; class VTKIOGEOMETRY_EXPORT vtkSTLWriter : public vtkWriter { public: static vtkSTLWriter *New(); vtkTypeMacro(vtkSTLWriter,vtkWriter); void PrintSelf(ostream& os, vtkIndent indent) override; //@{ /** * Get the input to this writer. */ vtkPolyData* GetInput(); vtkPolyData* GetInput(int port); //@} //@{ /** * Specify file name of vtk polygon data file to write. */ vtkSetStringMacro(FileName); vtkGetStringMacro(FileName); //@} //@{ /** * Set the header for the file. */ vtkSetStringMacro(Header); vtkGetStringMacro(Header); //@} //@{ /** * Specify file type (ASCII or BINARY) for vtk data file. */ vtkSetClampMacro(FileType,int,VTK_ASCII,VTK_BINARY); vtkGetMacro(FileType,int); void SetFileTypeToASCII() {this->SetFileType(VTK_ASCII);}; void SetFileTypeToBinary() {this->SetFileType(VTK_BINARY);}; //@} protected: vtkSTLWriter(); ~vtkSTLWriter() override { delete[] this->FileName; delete[] this->Header; } void WriteData() override; void WriteBinarySTL( vtkPoints *pts, vtkCellArray *polys, vtkCellArray *strips); void WriteAsciiSTL( vtkPoints *pts, vtkCellArray *polys, vtkCellArray *strips); char* FileName; char *Header; int FileType; int FillInputPortInformation(int port, vtkInformation *info) override; private: vtkSTLWriter(const vtkSTLWriter&) = delete; void operator=(const vtkSTLWriter&) = delete; }; #endif