mirror of https://github.com/CGAL/cgal
Misc IO fixes
This commit is contained in:
parent
5f1821f173
commit
4b28101397
|
|
@ -22,7 +22,7 @@ int main()
|
||||||
|
|
||||||
std::ofstream out("out.inp");
|
std::ofstream out("out.inp");
|
||||||
out.precision(17);
|
out.precision(17);
|
||||||
CGAL::write_INP(out, sm, "out.inp", "S4R");
|
CGAL::write_INP(out, "out.inp", "S4R", sm);
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
OFF
|
||||||
|
6 7 0
|
||||||
|
|
||||||
|
1 1 0
|
||||||
|
3 1 0
|
||||||
|
2 2 0
|
||||||
|
2 3 0
|
||||||
|
0 0 0
|
||||||
|
4 0 0
|
||||||
|
3 0 1 2
|
||||||
|
3 0 2 3
|
||||||
|
3 1 3 2
|
||||||
|
3 0 4 1
|
||||||
|
3 1 4 5
|
||||||
|
3 1 5 3
|
||||||
|
3 0 3 4
|
||||||
|
|
||||||
|
|
@ -51,7 +51,9 @@ int main (int argc, char** argv)
|
||||||
|
|
||||||
std::cerr << "Reading input" << std::endl;
|
std::cerr << "Reading input" << std::endl;
|
||||||
std::vector<Point> pts;
|
std::vector<Point> pts;
|
||||||
if (!(CGAL::read_points(filename, std::back_inserter(pts))))
|
if (!(CGAL::read_points(filename, std::back_inserter(pts),
|
||||||
|
// the PLY reader expects a binary file by default
|
||||||
|
CGAL::parameters::use_binary_mode(false))))
|
||||||
{
|
{
|
||||||
std::cerr << "Error: cannot read " << filename << std::endl;
|
std::cerr << "Error: cannot read " << filename << std::endl;
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,9 @@ int main (int argc, char** argv)
|
||||||
|
|
||||||
std::cerr << "Reading input" << std::endl;
|
std::cerr << "Reading input" << std::endl;
|
||||||
Point_set pts;
|
Point_set pts;
|
||||||
if(!(CGAL::read_point_set(filename, pts)))
|
if(!(CGAL::read_point_set(filename, pts,
|
||||||
|
// the PLY reader expects a binary file by default
|
||||||
|
CGAL::parameters::use_binary_mode(false))))
|
||||||
{
|
{
|
||||||
std::cerr << "Error: cannot read " << filename << std::endl;
|
std::cerr << "Error: cannot read " << filename << std::endl;
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,9 @@ int main (int argc, char** argv)
|
||||||
std::vector<Point> pts;
|
std::vector<Point> pts;
|
||||||
|
|
||||||
std::cerr << "Reading input" << std::endl;
|
std::cerr << "Reading input" << std::endl;
|
||||||
if (!(CGAL::read_points(filename, std::back_inserter(pts))))
|
if (!(CGAL::read_points(filename, std::back_inserter(pts),
|
||||||
|
// the PLY reader expects a binary file by default
|
||||||
|
CGAL::parameters::use_binary_mode(false))))
|
||||||
{
|
{
|
||||||
std::cerr << "Error: cannot read " << filename << std::endl;
|
std::cerr << "Error: cannot read " << filename << std::endl;
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,9 @@ int main (int argc, char** argv)
|
||||||
std::string filename_config = (argc>2) ? argv[2] : "data/b9_mesh_config.gz";
|
std::string filename_config = (argc>2) ? argv[2] : "data/b9_mesh_config.gz";
|
||||||
|
|
||||||
Mesh mesh;
|
Mesh mesh;
|
||||||
if(!CGAL::read_polygon_mesh(filename, mesh))
|
if(!CGAL::read_polygon_mesh(filename, mesh,
|
||||||
|
// the PLY reader expects a binary file by default
|
||||||
|
CGAL::parameters::use_binary_mode(false)))
|
||||||
{
|
{
|
||||||
std::cerr << "Invalid input." << std::endl;
|
std::cerr << "Invalid input." << std::endl;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ bool read_points(const std::string& fname,
|
||||||
{
|
{
|
||||||
const std::string ext = IO::internal::get_file_extension(fname);
|
const std::string ext = IO::internal::get_file_extension(fname);
|
||||||
|
|
||||||
if(ext == "xyz" || "pwn")
|
if(ext == "xyz" || ext == "pwn")
|
||||||
return read_XYZ<OutputIteratorValueType>(fname, output, np);
|
return read_XYZ<OutputIteratorValueType>(fname, output, np);
|
||||||
else if(ext == "off")
|
else if(ext == "off")
|
||||||
return read_OFF<OutputIteratorValueType>(fname, output, np);
|
return read_OFF<OutputIteratorValueType>(fname, output, np);
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
#include <CGAL/Poisson_reconstruction_function.h>
|
#include <CGAL/Poisson_reconstruction_function.h>
|
||||||
#include <CGAL/Point_with_normal_3.h>
|
#include <CGAL/Point_with_normal_3.h>
|
||||||
#include <CGAL/property_map.h>
|
#include <CGAL/property_map.h>
|
||||||
#include <CGAL/IO/readpoints.h>
|
#include <CGAL/IO/read_points.h>
|
||||||
#include <CGAL/compute_average_spacing.h>
|
#include <CGAL/compute_average_spacing.h>
|
||||||
#include <CGAL/Polygon_mesh_processing/compute_normal.h>
|
#include <CGAL/Polygon_mesh_processing/compute_normal.h>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,13 +10,12 @@ appends it to the polyhedral surface \f$ P\f$. Only the point coordinates
|
||||||
and facets from the input stream are used to build the polyhedral
|
and facets from the input stream are used to build the polyhedral
|
||||||
surface. Neither normal vectors nor color attributes are evaluated.
|
surface. Neither normal vectors nor color attributes are evaluated.
|
||||||
|
|
||||||
\sa `CGAL::Polyhedron_3<Traits>`
|
|
||||||
\sa `CGAL::Polyhedron_incremental_builder_3<HDS>`
|
|
||||||
\sa \link PkgPolyhedronIOFunc `operator<<(std::ostream&, Polyhedron_3<PolyhedronTraits_3>&)`\endlink
|
|
||||||
|
|
||||||
This function overloads the generic function \link PkgBGLIoFuncsOFF `read_OFF(std::istream&, FaceGraph)`\endlink
|
This function overloads the generic function \link PkgBGLIoFuncsOFF `read_OFF(std::istream&, FaceGraph)`\endlink
|
||||||
(if no named parameters are used).
|
(if no named parameters are used).
|
||||||
|
|
||||||
|
\note This function requires `Traits` to be a model of `Kernel` (a stronger requirement
|
||||||
|
than `PolyhedronTraits_3`).
|
||||||
|
|
||||||
\cgalHeading{Implementation}
|
\cgalHeading{Implementation}
|
||||||
|
|
||||||
This operator is implemented using the modifier mechanism for
|
This operator is implemented using the modifier mechanism for
|
||||||
|
|
@ -27,25 +26,29 @@ polyhedral surface.
|
||||||
|
|
||||||
\note Starting with \cgal 5.2, this function will no longer set the `ios::badbit`
|
\note Starting with \cgal 5.2, this function will no longer set the `ios::badbit`
|
||||||
of the input stream `in` if the file contains 0 vertices.
|
of the input stream `in` if the file contains 0 vertices.
|
||||||
|
|
||||||
|
\sa `CGAL::Polyhedron_3<Traits>`
|
||||||
|
\sa `CGAL::Polyhedron_incremental_builder_3<HDS>`
|
||||||
|
\sa \link PkgPolyhedronIOFunc `operator<<(std::ostream&, Polyhedron_3<Traits>&)`\endlink
|
||||||
*/
|
*/
|
||||||
template <class PolyhedronTraits_3>
|
template <class Traits>
|
||||||
bool read_OFF( std::istream& in, Polyhedron_3<PolyhedronTraits_3>& P);
|
bool read_OFF( std::istream& in, Polyhedron_3<Traits>& P);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\relates Polyhedron_3
|
\relates Polyhedron_3
|
||||||
\deprecated This function is deprecated since \cgal 5.2,
|
\deprecated This function is deprecated since \cgal 5.2,
|
||||||
\link PkgPolyhedronIOFunc `CGAL::read_OFF(std::ostream&, Polyhedron_3<PolyhedronTraits_3>&)` \endlink should be used instead.
|
\link PkgPolyhedronIOFunc `CGAL::read_OFF(std::ostream&, Polyhedron_3<Traits>&)` \endlink should be used instead.
|
||||||
*/
|
*/
|
||||||
template <class PolyhedronTraits_3>
|
template <class Traits>
|
||||||
bool read_off( std::ostream& out, Polyhedron_3<PolyhedronTraits_3>& P);
|
bool read_off( std::ostream& out, Polyhedron_3<Traits>& P);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\relates Polyhedron_3
|
\relates Polyhedron_3
|
||||||
\ingroup PkgPolyhedronIOFunc
|
\ingroup PkgPolyhedronIOFunc
|
||||||
calls \link read_OFF() `read_OFF(in, P)` \endlink.
|
calls \link read_OFF() `read_OFF(in, P)` \endlink.
|
||||||
*/
|
*/
|
||||||
template <class PolyhedronTraits_3>
|
template <class Traits>
|
||||||
std::istream& operator>>( std::istream& in, Polyhedron_3<PolyhedronTraits_3>& P);
|
std::istream& operator>>( std::istream& in, Polyhedron_3<Traits>& P);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\relates Polyhedron_3
|
\relates Polyhedron_3
|
||||||
|
|
@ -69,26 +72,26 @@ This function overloads the generic function \link PkgBGLIoFuncsOFF `write_OFF(s
|
||||||
|
|
||||||
\sa `CGAL::Polyhedron_3<Traits>`
|
\sa `CGAL::Polyhedron_3<Traits>`
|
||||||
\sa `CGAL::Polyhedron_incremental_builder_3<HDS>`
|
\sa `CGAL::Polyhedron_incremental_builder_3<HDS>`
|
||||||
\sa \link PkgPolyhedronIOFunc `operator>>(std::istream& in, Polyhedron_3<PolyhedronTraits_3>& P)` \endlink
|
\sa \link PkgPolyhedronIOFunc `operator>>(std::istream& in, Polyhedron_3<Traits>& P)` \endlink
|
||||||
*/
|
*/
|
||||||
template <class PolyhedronTraits_3>
|
template <class Traits>
|
||||||
bool write_OFF( std::ostream& out, Polyhedron_3<PolyhedronTraits_3>& P);
|
bool write_OFF( std::ostream& out, Polyhedron_3<Traits>& P);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\relates Polyhedron_3
|
\relates Polyhedron_3
|
||||||
\deprecated This function is deprecated since \cgal 5.2,
|
\deprecated This function is deprecated since \cgal 5.2,
|
||||||
\link PkgPolyhedronIOFunc `CGAL::write_OFF(std::ostream&, Polyhedron_3<PolyhedronTraits_3>&)` \endlink should be used instead.
|
\link PkgPolyhedronIOFunc `CGAL::write_OFF(std::ostream&, Polyhedron_3<Traits>&)` \endlink should be used instead.
|
||||||
*/
|
*/
|
||||||
template <class PolyhedronTraits_3>
|
template <class Traits>
|
||||||
bool write_off( std::ostream& out, Polyhedron_3<PolyhedronTraits_3>& P);
|
bool write_off( std::ostream& out, Polyhedron_3<Traits>& P);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\relates Polyhedron_3
|
\relates Polyhedron_3
|
||||||
\ingroup PkgPolyhedronIOFunc
|
\ingroup PkgPolyhedronIOFunc
|
||||||
calls \link write_OFF() `write_OFF(out, P)` \endlink.
|
calls \link write_OFF() `write_OFF(out, P)` \endlink.
|
||||||
*/
|
*/
|
||||||
template <class PolyhedronTraits_3>
|
template <class Traits>
|
||||||
std::ostream& operator<<( std::ostream& out, Polyhedron_3<PolyhedronTraits_3>& P);
|
std::ostream& operator<<( std::ostream& out, Polyhedron_3<Traits>& P);
|
||||||
|
|
||||||
} /* namespace CGAL */
|
} /* namespace CGAL */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,9 @@ public:
|
||||||
out() << " "
|
out() << " "
|
||||||
<< oformat(x) << ' ' << oformat(y) << ' ' << oformat(z) << ',' << '\n';
|
<< oformat(x) << ' ' << oformat(y) << ' ' << oformat(z) << ',' << '\n';
|
||||||
}
|
}
|
||||||
|
void write_vertex_normal(const double, const double, const double) { }
|
||||||
|
void write_vertex_color(const double, const double, const double) { }
|
||||||
|
void write_vertex_texture(const double, const double) { }
|
||||||
|
|
||||||
void write_facet_header() const
|
void write_facet_header() const
|
||||||
{
|
{
|
||||||
|
|
@ -86,6 +89,7 @@ public:
|
||||||
|
|
||||||
void write_facet_begin(std::size_t) { out() << " "; }
|
void write_facet_begin(std::size_t) { out() << " "; }
|
||||||
void write_facet_vertex_index( std::size_t idx) { out() << idx << ',';}
|
void write_facet_vertex_index( std::size_t idx) { out() << idx << ',';}
|
||||||
|
void write_face_color(const double, const double, const double) { }
|
||||||
void write_facet_end() { out() << "-1,\n"; }
|
void write_facet_end() { out() << "-1,\n"; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ int main(int argc, char** argv)
|
||||||
Seam_edge_pmap seam_edge_pm = sm.add_property_map<SM_edge_descriptor, bool>("e:on_seam", false).first;
|
Seam_edge_pmap seam_edge_pm = sm.add_property_map<SM_edge_descriptor, bool>("e:on_seam", false).first;
|
||||||
Seam_vertex_pmap seam_vertex_pm = sm.add_property_map<SM_vertex_descriptor, bool>("v:on_seam", false).first;
|
Seam_vertex_pmap seam_vertex_pm = sm.add_property_map<SM_vertex_descriptor, bool>("v:on_seam", false).first;
|
||||||
|
|
||||||
const char* filename = (argc>2) ? argv[2] : "data/lion.selection.txt";
|
const char* selection_filename = (argc>2) ? argv[2] : "data/lion.selection.txt";
|
||||||
|
|
||||||
// Read the constraints on the border
|
// Read the constraints on the border
|
||||||
std::ifstream in(filename);
|
std::ifstream in(filename);
|
||||||
|
|
@ -65,7 +65,7 @@ int main(int argc, char** argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
Mesh mesh(sm, seam_edge_pm, seam_vertex_pm);
|
Mesh mesh(sm, seam_edge_pm, seam_vertex_pm);
|
||||||
SM_halfedge_descriptor smhd = mesh.add_seams(filename);
|
SM_halfedge_descriptor smhd = mesh.add_seams(selection_filename);
|
||||||
if(smhd == SM_halfedge_descriptor() ) {
|
if(smhd == SM_halfedge_descriptor() ) {
|
||||||
std::cerr << "Warning: No seams in input" << std::endl;
|
std::cerr << "Warning: No seams in input" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue