From eced86b949c8c1a9fc2b74eae531b8b9b456cf68 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 1 May 2018 13:41:39 +0200 Subject: [PATCH] some refactorings. --- code/STLExporter.cpp | 50 +++++++++++++++++++++++++------------------- code/STLExporter.h | 2 +- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/code/STLExporter.cpp b/code/STLExporter.cpp index dd4df9212..7b38125ef 100644 --- a/code/STLExporter.cpp +++ b/code/STLExporter.cpp @@ -100,6 +100,8 @@ void ExportSceneSTLBinary(const char* pFile,IOSystem* pIOSystem, const aiScene* } // end of namespace Assimp +static const char *SolidToken = "solid"; +static const char *EndSolidToken = "endsolid"; // ------------------------------------------------------------------------------------------------ STLExporter::STLExporter(const char* _filename, const aiScene* pScene, bool exportPointClouds, bool binary) @@ -132,38 +134,44 @@ STLExporter::STLExporter(const char* _filename, const aiScene* pScene, bool expo WriteMeshBinary(pScene->mMeshes[i]); } } else { - const std::string& name = "AssimpScene"; // Exporting only point clouds if (exportPointClouds) { - mOutput << "solid " << name << endl; - aiVector3D nor; - mOutput << " facet normal " << nor.x << " " << nor.y << " " << nor.z << endl; - for (unsigned int i = 0; i < pScene->mNumMeshes; ++i) { - aiMesh *mesh = pScene->mMeshes[i]; - if (nullptr == mesh) { - continue; - } - - for (unsigned int a = 0; a < mesh->mNumVertices; ++a) { - const aiVector3D& v = mesh->mVertices[a]; - mOutput << " vertex " << v.x << " " << v.y << " " << v.z << endl; - mOutput << " vertex " << v.x << " " << v.y << " " << v.z << endl; - mOutput << " vertex " << v.x << " " << v.y << " " << v.z << endl; - } - } - mOutput << "endsolid " << name << endl; + WritePointCloud("Assimp_Pointcloud", pScene ); return; } - mOutput << "solid " << name << endl; + // Export the assimp mesh + const std::string name = "AssimpScene"; + mOutput << SolidToken << name << endl; for(unsigned int i = 0; i < pScene->mNumMeshes; ++i) { - WriteMesh(pScene->mMeshes[i]); + WriteMesh(pScene->mMeshes[ i ]); } - mOutput << "endsolid " << name << endl; + mOutput << EndSolidToken << name << endl; } } +// ------------------------------------------------------------------------------------------------ +void STLExporter::WritePointCloud(const std::string &name, const aiScene* pScene) { + mOutput << " " << SolidToken << " " << name << endl; + aiVector3D nor; + mOutput << " facet normal " << nor.x << " " << nor.y << " " << nor.z << endl; + for (unsigned int i = 0; i < pScene->mNumMeshes; ++i) { + aiMesh *mesh = pScene->mMeshes[i]; + if (nullptr == mesh) { + continue; + } + + for (unsigned int a = 0; a < mesh->mNumVertices; ++a) { + const aiVector3D& v = mesh->mVertices[a]; + mOutput << " vertex " << v.x << " " << v.y << " " << v.z << endl; + mOutput << " vertex " << v.x << " " << v.y << " " << v.z << endl; + mOutput << " vertex " << v.x << " " << v.y << " " << v.z << endl; + } + } + mOutput << EndSolidToken << name << endl; +} + // ------------------------------------------------------------------------------------------------ void STLExporter::WriteMesh(const aiMesh* m) { diff --git a/code/STLExporter.h b/code/STLExporter.h index 51a440de7..6e8f90915 100644 --- a/code/STLExporter.h +++ b/code/STLExporter.h @@ -67,7 +67,7 @@ public: std::ostringstream mOutput; private: - + void WritePointCloud(const std::string &name, const aiScene* pScene); void WriteMesh(const aiMesh* m); void WriteMeshBinary(const aiMesh* m);