6#include <OpenMesh/Core/IO/BinaryHelper.hh>
7#include <OpenMesh/Core/IO/writer/VTKWriter.hh>
8#include <OpenMesh/Core/IO/IOManager.hh>
9#include <OpenMesh/Core/Utils/color_cast.hh>
29 std::ofstream out(_filename.c_str());
32 omerr() <<
"[VTKWriter] : cannot open file " << _filename << std::endl;
36 return write(out, _be, _writeOptions, _precision);
44 if (!check(_be, _writeOptions)) {
50 omlog() <<
"[VTKWriter] : writer does not support any options\n";
54 omlog() <<
"[VTKWriter] : write file\n";
55 _out.precision(_precision);
57 std::vector<VertexHandle> vhandles;
58 size_t polygon_table_size = 0;
59 size_t nf = _be.n_faces();
60 for (
size_t i = 0; i < nf; ++i) {
61 polygon_table_size += _be.get_vhandles(
FaceHandle(
int(i)), vhandles);
63 polygon_table_size += nf;
66 _out <<
"# vtk DataFile Version 3.0\n";
67 _out <<
"Generated by OpenMesh\n";
69 _out <<
"DATASET POLYDATA\n";
72 _out <<
"POINTS " << _be.n_vertices() <<
" float\n";
73 size_t nv = _be.n_vertices();
74 for (
size_t i = 0; i < nv; ++i) {
76 _out << v[0] <<
' ' << v[1] <<
' ' << v[2] <<
'\n';
80 _out <<
"POLYGONS " << nf <<
' ' << polygon_table_size <<
'\n';
81 for (
size_t i = 0; i < nf; ++i) {
82 _be.get_vhandles(
FaceHandle(
int(i)), vhandles);
84 _out << vhandles.size() <<
' ';
85 for (
size_t j = 0; j < vhandles.size(); ++j) {
86 _out <<
" " << vhandles[j].idx();
Set options for reader/writer modules.
bool is_empty(void) const
Returns true if all bits are zero.
bool register_module(BaseReader *_bl)
bool write(const std::string &, BaseExporter &, const Options &_writeOptions, std::streamsize _precision=6) const override
_IOManager_ & IOManager()
_VTKWriter_ __VTKWriterinstance
Declare the single entity of the OBJ writer.
Handle for a face entity.
Handle for a vertex entity.