VTK  9.7.1
vtkSTLReader.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
26 #ifndef vtkSTLReader_h
27 #define vtkSTLReader_h
28 
30 #include "vtkIOGeometryModule.h" // For export macro
31 
32 VTK_ABI_NAMESPACE_BEGIN
33 class vtkCellArray;
34 class vtkFloatArray;
36 class vtkPoints;
37 class vtkResourceParser;
38 class vtkResourceStream;
39 
40 class VTKIOGEOMETRY_EXPORT vtkSTLReader : public vtkAbstractPolyDataReader
41 {
42 public:
44  void PrintSelf(ostream& os, vtkIndent indent) override;
45 
49  static vtkSTLReader* New();
50 
52 
60  static bool CanReadFile(VTK_FILEPATH const char* filename);
61  static bool CanReadFile(vtkResourceStream* stream);
63 
68  vtkMTimeType GetMTime() override;
69 
71 
75  vtkSetMacro(RelaxedConformance, bool);
76  vtkGetMacro(RelaxedConformance, bool);
77  vtkBooleanMacro(RelaxedConformance, bool);
79 
81 
85  vtkSetMacro(Merging, vtkTypeBool);
86  vtkGetMacro(Merging, vtkTypeBool);
87  vtkBooleanMacro(Merging, vtkTypeBool);
89 
91 
95  vtkSetMacro(ScalarTags, vtkTypeBool);
96  vtkGetMacro(ScalarTags, vtkTypeBool);
97  vtkBooleanMacro(ScalarTags, vtkTypeBool);
99 
101 
105  void SetLocator(vtkIncrementalPointLocator* locator);
106  vtkGetObjectMacro(Locator, vtkIncrementalPointLocator);
108 
118  vtkGetStringMacro(Header);
119 
126  vtkGetObjectMacro(BinaryHeader, vtkUnsignedCharArray);
127 
128 protected:
129  vtkSTLReader();
130  ~vtkSTLReader() override;
131 
135  vtkIncrementalPointLocator* NewDefaultLocator();
136 
140  vtkSetStringMacro(Header);
141  virtual void SetBinaryHeader(vtkUnsignedCharArray* binaryHeader);
142 
143  vtkTypeBool Merging = true;
144  vtkTypeBool ScalarTags = false;
145  vtkIncrementalPointLocator* Locator = nullptr;
146  char* Header = nullptr;
147  vtkUnsignedCharArray* BinaryHeader = nullptr;
148 
150 
151 private:
152  bool RelaxedConformance = true;
153 
154  vtkSTLReader(const vtkSTLReader&) = delete;
155  void operator=(const vtkSTLReader&) = delete;
156 
157  bool ReadBinarySTL(vtkResourceStream* stream, vtkPoints*, vtkCellArray*);
158  bool ReadASCIISTL(
159  vtkResourceParser* parser, vtkPoints*, vtkCellArray*, vtkFloatArray* scalars = nullptr);
160 
161  static bool ReadBinaryHeader(vtkResourceStream* stream, vtkUnsignedCharArray* header);
162  static bool ReadBinaryTrisField(vtkResourceStream* stream, uint32_t& numTrisField);
163  static bool ReadBinaryTrisFile(vtkResourceStream* stream, vtkTypeInt64& numTrisFile);
164 };
165 
166 VTK_ABI_NAMESPACE_END
167 #endif
Abstract class used for custom streams.
Store vtkAlgorithm input/output information.
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:318
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called by the superclass.
read ASCII or binary stereo lithography files
Definition: vtkSTLReader.h:40
Abstract class in support of both point location and point insertion.
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:31
static vtkPolyDataAlgorithm * New()
int vtkTypeBool
Definition: vtkABI.h:64
Superclass for algorithms that read models from a file.
Helper class to perform formatted input from vtkResourceStream.
a simple class to control print indentation
Definition: vtkIndent.h:28
dynamic, self-adjusting array of unsigned char
#define VTK_FILEPATH
object to represent cell connectivity
Definition: vtkCellArray.h:177
Store zero or more vtkInformation instances.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkMTimeType GetMTime() override
Overridden to take into account mtime from the internal vtkResourceStream.
represent and manipulate 3D points
Definition: vtkPoints.h:30