void GLVertexArray::load_mesh(const TriangleMesh &mesh) { this->reserve_more(3 * 3 * mesh.facets_count()); for (int i = 0; i < mesh.stl.stats.number_of_facets; ++i) { stl_facet &facet = mesh.stl.facet_start[i]; for (int j = 0; j <= 2; ++j) { this->push_norm(facet.normal.x, facet.normal.y, facet.normal.z); this->push_vert(facet.vertex[j].x, facet.vertex[j].y, facet.vertex[j].z); } } }
bool STL::read(std::string input_file, Model* model) { TriangleMesh mesh; if (!STL::read(input_file, &mesh)) return false; if (mesh.facets_count() == 0) throw std::runtime_error("This STL file couldn't be read because it's empty."); ModelObject* object = model->add_object(); object->name = boost::filesystem::path(input_file).filename().string(); object->input_file = input_file; ModelVolume* volume = object->add_volume(mesh); volume->name = object->name; return true; }
bool STL::read(std::string input_file, Model* model) { // TODO: encode file name // TODO: check that file exists TriangleMesh mesh; if (!STL::read(input_file, &mesh)) return false; if (mesh.facets_count() == 0) throw std::runtime_error("This STL file couldn't be read because it's empty."); ModelObject* object = model->add_object(); object->name = input_file; // TODO: use basename() object->input_file = input_file; ModelVolume* volume = object->add_volume(mesh); volume->name = input_file; // TODO: use basename() return true; }