From bf24f468067fd91168acf302cbd31c6280cecb8f Mon Sep 17 00:00:00 2001 From: johltn Date: Wed, 17 Feb 2021 17:20:03 +0100 Subject: [PATCH] Change file extension and start cleaning --- src/ifcconvert/IfcConvert.cpp | 13 +++-- src/serializers/HdfSerializer.cpp | 85 +++++++++++++------------------ 2 files changed, 46 insertions(+), 52 deletions(-) diff --git a/src/ifcconvert/IfcConvert.cpp b/src/ifcconvert/IfcConvert.cpp index 0368527f13..9f4c5eee3a 100644 --- a/src/ifcconvert/IfcConvert.cpp +++ b/src/ifcconvert/IfcConvert.cpp @@ -625,8 +625,15 @@ int main(int argc, char** argv) { ); path_t output_temp_filename = output_filename + IfcUtil::path::from_utf8(TEMP_FILE_EXTENSION); + + std::vector tokens; + split(tokens, output_filename, boost::is_any_of(".")); + std::vector::iterator tok_iter; + std::wstring ext = *(tokens.end() - 1); + std::wstring dot; + dot = '.'; + path_t output_extension = dot + ext; - path_t output_extension = output_filename.substr(output_filename.size()-4); boost::to_lower(output_extension); IfcParse::IfcFile* ifc_file = 0; @@ -638,7 +645,7 @@ int main(int argc, char** argv) { STP = IfcUtil::path::from_utf8(".stp"), IGS = IfcUtil::path::from_utf8(".igs"), SVG = IfcUtil::path::from_utf8(".svg"), - HDF = IfcUtil::path::from_utf8(".hdf"), + HDF = IfcUtil::path::from_utf8(".h5"), XML = IfcUtil::path::from_utf8(".xml"), IFC = IfcUtil::path::from_utf8(".ifc"); @@ -799,7 +806,7 @@ int main(int argc, char** argv) { } else if (output_extension == HDF) { const path_t mtl_filename = change_extension(output_filename, MTL); - serializer = boost::make_shared(IfcUtil::path::to_utf8(output_temp_filename), IfcUtil::path::to_utf8(mtl_filename), settings); + serializer = boost::make_shared(IfcUtil::path::to_utf8(output_temp_filename), IfcUtil::path::to_utf8(output_filename), settings); } else { diff --git a/src/serializers/HdfSerializer.cpp b/src/serializers/HdfSerializer.cpp index a10f8b5747..53966085c3 100644 --- a/src/serializers/HdfSerializer.cpp +++ b/src/serializers/HdfSerializer.cpp @@ -30,71 +30,58 @@ #include -const H5std_string FILE_NAME("output_file.h5"); +//const H5std_string FILE_NAME("output_file.h5"); HdfSerializer::HdfSerializer(const std::string& obj_filename, const std::string& mtl_filename, const SerializerSettings& settings) : GeometrySerializer(settings) - , mtl_filename(mtl_filename) - , obj_stream(IfcUtil::path::from_utf8(obj_filename).c_str()) - , mtl_stream(IfcUtil::path::from_utf8(mtl_filename).c_str()) - , vcount_total(1) - , file(FILE_NAME, H5F_ACC_TRUNC) - + , mtl_filename(obj_filename) + { - obj_stream << std::setprecision(settings.precision); - mtl_stream << std::setprecision(settings.precision); + guids = {}; } bool HdfSerializer::ready() { - return obj_stream.is_open() && mtl_stream.is_open(); + + //return obj_stream.is_open() && mtl_stream.is_open(); + return true; } void HdfSerializer::writeHeader() { - obj_stream << "# File generated by IfcOpenShell " << IFCOPENSHELL_VERSION << "\n"; -#ifdef WIN32 - const char dir_separator = '\\'; -#else - const char dir_separator = '/'; -#endif - std::string mtl_basename = mtl_filename; - std::string::size_type slash = mtl_basename.find_last_of(dir_separator); - if (slash != std::string::npos) { - mtl_basename = mtl_basename.substr(slash + 1); - } - obj_stream << "mtllib " << mtl_basename << "\n"; - mtl_stream << "# File generated by IfcOpenShell " << IFCOPENSHELL_VERSION << "\n"; -} - -void HdfSerializer::writeMaterial(const IfcGeom::Material& style) -{ - std::string material_name = (settings().get(SerializerSettings::USE_MATERIAL_NAMES) - ? style.original_name() : style.name()); - IfcUtil::sanitate_material_name(material_name); - mtl_stream << "newmtl " << material_name << "\n"; - - if (style.hasDiffuse()) { - const double* diffuse = style.diffuse(); - mtl_stream << "Kd " << diffuse[0] << " " << diffuse[1] << " " << diffuse[2] << "\n"; - } - if (style.hasSpecular()) { - const double* specular = style.specular(); - mtl_stream << "Ks " << specular[0] << " " << specular[1] << " " << specular[2] << "\n"; - } - if (style.hasSpecularity()) { - mtl_stream << "Ns " << style.specularity() << "\n"; - } - if (style.hasTransparency()) { - const double transparency = 1.0 - style.transparency(); - if (transparency < 1) { - mtl_stream << "d " << transparency << "\n"; - } - } + const H5std_string FILE_NAME(mtl_filename); + file = H5::H5File(FILE_NAME, H5F_ACC_TRUNC); + } +//void HdfSerializer::writeMaterial(const IfcGeom::Material& style) +//{ +// std::string material_name = (settings().get(SerializerSettings::USE_MATERIAL_NAMES) +// ? style.original_name() : style.name()); +// IfcUtil::sanitate_material_name(material_name); +// mtl_stream << "newmtl " << material_name << "\n"; +// +// if (style.hasDiffuse()) { +// const double* diffuse = style.diffuse(); +// mtl_stream << "Kd " << diffuse[0] << " " << diffuse[1] << " " << diffuse[2] << "\n"; +// } +// if (style.hasSpecular()) { +// const double* specular = style.specular(); +// mtl_stream << "Ks " << specular[0] << " " << specular[1] << " " << specular[2] << "\n"; +// } +// if (style.hasSpecularity()) { +// mtl_stream << "Ns " << style.specularity() << "\n"; +// } +// if (style.hasTransparency()) { +// const double transparency = 1.0 - style.transparency(); +// if (transparency < 1) { +// mtl_stream << "d " << transparency << "\n"; +// } +// } +//} +// void HdfSerializer::write(const IfcGeom::TriangulationElement* o){