fix filename bug

This commit is contained in:
D4ve-R
2023-05-17 14:24:09 +02:00
committed by Thomas Krijnen
parent 77e4e939ce
commit d316efe902
3 changed files with 17 additions and 14 deletions
+14 -7
View File
@@ -691,7 +691,7 @@ int main(int argc, char** argv) {
std::vector<path_t> tokens;
split(tokens, output_filename, boost::is_any_of("."));
std::vector<path_t>::iterator tok_iter;
std::vector<path_t>::iterator tok_itxer;
path_t ext = *(tokens.end() - 1);
path_t dot;
dot = '.';
@@ -713,7 +713,8 @@ int main(int argc, char** argv) {
XML = IfcUtil::path::from_utf8(".xml"),
IFC = IfcUtil::path::from_utf8(".ifc"),
USD = IfcUtil::path::from_utf8(".usd"),
USDA = IfcUtil::path::from_utf8(".usda");
USDA = IfcUtil::path::from_utf8(".usda"),
USDC = IfcUtil::path::from_utf8(".usdc");
// @todo clean up serializer selection
// @todo detect program options that conflict with the chosen serializer
@@ -858,7 +859,7 @@ int main(int argc, char** argv) {
serializer = boost::make_shared<GltfSerializer>(IfcUtil::path::to_utf8(output_temp_filename), settings);
#endif
#ifdef WITH_USD
} else if (output_extension == USD || output_extension == USDA) {
} else if (output_extension == USD || output_extension == USDA || output_extension == USDC) {
serializer = boost::make_shared<USDSerializer>(IfcUtil::path::to_utf8(output_filename), settings);
#endif
} else if (output_extension == STP) {
@@ -1183,11 +1184,17 @@ int main(int argc, char** argv) {
Logger::Message(Logger::LOG_PERF, "done file geometry conversion");
bool successful;
if(output_extension == USD || output_extension == USDC || output_extension == USDA) {
// No need to rename the file
successful = true;
}
else {
// Renaming might fail (e.g. maybe the existing file was open in a viewer application)
// Do not remove the temp file as user can salvage the conversion result from it.
successful = IfcUtil::path::rename_file(IfcUtil::path::to_utf8(output_temp_filename), IfcUtil::path::to_utf8(output_filename));
}
// Renaming might fail (e.g. maybe the existing file was open in a viewer application)
// Do not remove the temp file as user can salvage the conversion result from it.
bool successful = IfcUtil::path::rename_file(IfcUtil::path::to_utf8(output_temp_filename), IfcUtil::path::to_utf8(output_filename))
|| output_extension == USD || output_extension == USDA;
if (!successful) {
cerr_ << "Unable to write output file '" << output_filename << "', see '" <<
output_temp_filename << "' for the conversion result.";
+2 -6
View File
@@ -32,8 +32,7 @@ USDSerializer::USDSerializer(const std::string& out_filename, const SerializerSe
WriteOnlyGeometrySerializer(settings),
filename_(out_filename)
{
// why does this not work with just the filename ???
stage_ = pxr::UsdStage::CreateNew(filename_ + ".usda");
stage_ = pxr::UsdStage::CreateNew(filename_);
if(!stage_)
throw std::runtime_error("Could not create USD stage");
@@ -51,10 +50,7 @@ USDSerializer::~USDSerializer() {
void USDSerializer::createLighting() {
const std::string& light_path = "/World/defaultLight";
pxr::UsdLuxDistantLight::Define(stage_, pxr::SdfPath(light_path));
pxr::UsdGeomXform xform(stage_->GetPrimAtPath(pxr::SdfPath(light_path)));
pxr::GfVec3f light_direction(0.0f, 0.0f, -1.0f);
pxr::UsdLuxDistantLight light(stage_->GetPrimAtPath(pxr::SdfPath(light_path)));
auto light = pxr::UsdLuxDistantLight::Define(stage_, pxr::SdfPath(light_path));
light.CreateIntensityAttr().Set(1000.0f);
light.CreateColorAttr().Set(pxr::GfVec3f(1.0f, 1.0f, 1.0f));
}