diff --git a/BGL/include/CGAL/boost/graph/IO/3MF.h b/BGL/include/CGAL/boost/graph/IO/3MF.h index 0e6367132e0..ebc47bc0e49 100644 --- a/BGL/include/CGAL/boost/graph/IO/3MF.h +++ b/BGL/include/CGAL/boost/graph/IO/3MF.h @@ -35,18 +35,18 @@ namespace CGAL { /*! * \ingroup PkgBGLIoFuncs3MF * - * \brief writes the triangle meshes contained in `gs` into the 3mf file `filename`. + * \brief writes the triangle meshes contained in `gs` into the file `filename`, using the \ref IOStream3MF. * * \tparam GraphRange a model of the concepts `RandomAccessContainer` * and `BackInsertionSequence` whose `value_type` is * a model of the concepts `FaceGraph` and `HalfedgeListGraph` * that has only triangle faces. * - * \param filename the name of the 3mf file to write. + * \param filename the name of the 3mf file to write * \param gs a container of triangle meshes to write. An internal property map for `CGAL::vertex_point_t` * must be available for each mesh. * \param names a range of `std::string` associating a name to each mesh to be written out, which - * will appear in the output. + * will appear in the output * * \return `true` if the writing is successful, `false` otherwise. * @@ -70,7 +70,8 @@ bool write_3MF(const std::string& filename, typedef typename boost::graph_traits::vertex_descriptor vertex_descriptor; typedef typename boost::graph_traits::face_descriptor face_descriptor; - typedef std::vector Triangle; + // @todo `Triangle` ought to be just array + typedef std::vector Triangle; typedef std::vector TriangleRange; typedef std::vector PointRange; @@ -85,9 +86,11 @@ bool write_3MF(const std::string& filename, triangles.reserve(num_faces(g)); VPM vpm = get(boost::vertex_point, g); - std::unordered_map::vertex_descriptor, std::size_t> vertex_id_map; - std::size_t i = 0; + // @todo dynamic pmap + std::unordered_map::vertex_descriptor, int> vertex_id_map; + + int i = 0; for(const vertex_descriptor v : vertices(g)) { points.push_back(get(vpm, v)); @@ -101,6 +104,7 @@ bool write_3MF(const std::string& filename, for(vertex_descriptor vert : CGAL::vertices_around_face(halfedge(f, g), g)) triangle.push_back(vertex_id_map[vert]); + CGAL_assertion(triangle.size() == 3); triangles.push_back(triangle); } diff --git a/Stream_support/include/CGAL/IO/3MF.h b/Stream_support/include/CGAL/IO/3MF.h index 69b67f2564d..cfb26f38654 100644 --- a/Stream_support/include/CGAL/IO/3MF.h +++ b/Stream_support/include/CGAL/IO/3MF.h @@ -380,30 +380,30 @@ bool read_3MF(const std::string& fname, /*! * \ingroup PkgStreamSupportIoFuncs3MF * - * \brief extracts ranges of points and triangles from a 3mf file. + * \brief reads ranges of points and triangles from an input file, using the \ref IOStream3MF. * * \tparam PointRanges a model of the concepts `RandomAccessContainer` and - * `BackInsertionSequence` whose `value_type` is - * a model of the concepts `RandomAccessContainer` and `BackInsertionSequence` - * whose `value_type` is the point type. + * `BackInsertionSequence` whose `value_type` is + * a model of the concepts `RandomAccessContainer` and `BackInsertionSequence` + * whose `value_type` is the point type. * \tparam TriangleRanges a model of the concept `RandomAccessContainer` whose - * `value_type` is a model of the concept `RandomAccessContainer` - * whose `value_type` is a model of the concept `RandomAccessContainer` whose - * `value_type` is std::size_t. + * `value_type` is a model of the concept `RandomAccessContainer` + * whose `value_type` is a model of the concept `RandomAccessContainer` whose + * `value_type` is an integer type. * \tparam ColorRanges a model of the concepts `RandomAccessContainer` and - * `BackInsertionSequence` whose `value_type` is - * a model of the concepts `RandomAccessContainer` and `BackInsertionSequence` - * whose `value_type` is `CGAL::Color`. + * `BackInsertionSequence` whose `value_type` is + * a model of the concepts `RandomAccessContainer` and `BackInsertionSequence` + * whose `value_type` is `CGAL::Color`. * - * \param fname the name of the 3mf file to read. + * \param fname the name of the 3mf file to read * \param all_points a `PointRanges` that will contain the points of the meshes in `fname`. - * Each of these meshes will add a range of its points. + * Each of these meshes will add a range of its points. * \param all_triangles a `TriangleRanges` that will contain the triangles of the meshes in `fname`. - * Each of these meshes will add a range of its triangles. A `triangle` of - * `all_triangles[i]` contains the indices of its points in `all_points[i]`. + * Each of these meshes will add a range of its triangles. A `triangle` of + * `all_triangles[i]` contains the indices of its points in `all_points[i]`. * \param all_colors will contain the color of each triangle for each soup. * \param names will contain the name of each mesh in `fname` if any. - * If the i'th mesh has no name, it will be called "Unknown Mesh" in names. + * If the i-th mesh has no name, it will be called "Unknown Mesh" in `names`. * * \returns `true` if reading was successful, `false` otherwise. */ @@ -430,22 +430,21 @@ int read_3MF(const std::string& fname, /*! * \ingroup PkgStreamSupportIoFuncs3MF * - * \brief writes the triangle soups contained in `all_points` and - * `all_triangles` into the 3mf file `fname`. + * \brief writes the triangle soups contained in `all_points` and `all_triangles` into the file `fname`, using the \ref IOStream3MF. * * \tparam PointRanges a model of the concepts `RandomAccessContainer` and - * `BackInsertionSequence` whose `value_type` is - * a model of the concepts `RandomAccessContainer` and `BackInsertionSequence` - * whose `value_type` is the point type. + * `BackInsertionSequence` whose `value_type` is + * a model of the concepts `RandomAccessContainer` and `BackInsertionSequence` + * whose `value_type` is the point type. * \tparam TriangleRanges a model of the concept `RandomAccessContainer` whose - * `value_type` is a model of the concept `RandomAccessContainer` - * whose `value_type` is a model of the concept `RandomAccessContainer` whose - * `value_type` is std::size_t. + * `value_type` is a model of the concept `RandomAccessContainer` + * whose `value_type` is a model of the concept `RandomAccessContainer` whose + * `value_type` is an integer type. * - * \param fname the name of the 3mf file to write. - * \param all_points a `PointRanges` that contains the points of the soups to write. - * \param all_triangles a `TriangleRanges` that contains the triangles of the soups in `fname`. - * \param names contains the name of each mesh to be output. + * \param fname the name of the 3mf file to write + * \param all_points a `PointRanges` that contains the points of the soups to write + * \param all_triangles a `TriangleRanges` that contains the triangles of the soups in `fname` + * \param names a range of std::string` associating a name to each soup, which will appear in the output * * \return `true` if the writing is successful, `false` otherwise. */