diff --git a/VirtualRobot/Visualization/CoinVisualization/CoinVisualizationNode.cpp b/VirtualRobot/Visualization/CoinVisualization/CoinVisualizationNode.cpp index d2efce35ed8fa81f926e96f36fb511f57fd52a0c..6e7da7e30cc5c0168c589a6ac7c7157dbd18089f 100644 --- a/VirtualRobot/Visualization/CoinVisualization/CoinVisualizationNode.cpp +++ b/VirtualRobot/Visualization/CoinVisualization/CoinVisualizationNode.cpp @@ -27,6 +27,15 @@ #include <Inventor/VRMLnodes/SoVRMLGroup.h> +namespace +{ + namespace fs = std::filesystem; + inline fs::path remove_trailing_separator(fs::path p) + { + p /= "dummy"; + return p.parent_path(); + } +} namespace VirtualRobot @@ -435,8 +444,8 @@ namespace VirtualRobot std::string outFile = filename; bool vrml = true; // may be changed later according to file extension - std::filesystem::path completePath(modelPath); - std::filesystem::path fn(outFile); + auto completePath = remove_trailing_separator(modelPath); + auto fn = remove_trailing_separator(outFile); if (!std::filesystem::is_directory(completePath)) { diff --git a/VirtualRobot/Visualization/VisualizationNode.cpp b/VirtualRobot/Visualization/VisualizationNode.cpp index 90fa13db486b90600788805b83824d5b3ca97965..d3964c04448899a2056fb5592aefc13e71b2b1ef 100644 --- a/VirtualRobot/Visualization/VisualizationNode.cpp +++ b/VirtualRobot/Visualization/VisualizationNode.cpp @@ -13,6 +13,15 @@ #include "VirtualRobot/VirtualRobotException.h" #include "VirtualRobot/XML/BaseIO.h" +namespace +{ + namespace fs = std::filesystem; + inline fs::path remove_trailing_separator(fs::path p) + { + p /= "dummy"; + return p.parent_path(); + } +} namespace VirtualRobot { @@ -258,7 +267,7 @@ namespace VirtualRobot bool VisualizationNode::saveModel(const std::string& modelPath, const std::string& filename) { - const std::filesystem::path completePath(modelPath); + const auto completePath = remove_trailing_separator(modelPath); if (!std::filesystem::is_directory(completePath)) { diff --git a/VirtualRobot/XML/RobotIO.cpp b/VirtualRobot/XML/RobotIO.cpp index 79daf30f720115fe5105519277119fbc97aa86ca..23e3ee8c67e9e00f05d6ca2806eaab6b97b6ce87 100644 --- a/VirtualRobot/XML/RobotIO.cpp +++ b/VirtualRobot/XML/RobotIO.cpp @@ -22,6 +22,16 @@ #include <fstream> #include <iostream> +namespace +{ + namespace fs = std::filesystem; + inline fs::path remove_trailing_separator(fs::path p) + { + p /= "dummy"; + return p.parent_path(); + } +} + namespace VirtualRobot { @@ -1467,11 +1477,11 @@ namespace VirtualRobot THROW_VR_EXCEPTION_IF(!robot, "NULL data"); - std::filesystem::path p(basePath); - std::filesystem::path fn(filename); - std::filesystem::path pModelDir(modelDir); - std::filesystem::path fnComplete = std::filesystem::operator/(p, fn); - std::filesystem::path modelDirComplete = std::filesystem::operator/(p, pModelDir); + std::filesystem::path p = remove_trailing_separator(basePath); + std::filesystem::path fn = remove_trailing_separator(filename); + std::filesystem::path pModelDir = remove_trailing_separator(modelDir); + std::filesystem::path fnComplete = p / fn; + std::filesystem::path modelDirComplete = p / pModelDir; if (std::filesystem::exists(modelDirComplete) && !std::filesystem::is_directory(modelDirComplete)) { diff --git a/VirtualRobot/XML/mujoco/MujocoIO.cpp b/VirtualRobot/XML/mujoco/MujocoIO.cpp index 132eba206b152937b7de143bd4b40348b77c4d0a..83aeb56977c0d99a27a0b031392460e7e02f4e88 100644 --- a/VirtualRobot/XML/mujoco/MujocoIO.cpp +++ b/VirtualRobot/XML/mujoco/MujocoIO.cpp @@ -13,6 +13,18 @@ namespace fs = std::filesystem; +namespace +{ + namespace fs = std::filesystem; + inline fs::path removeTrailingSeparator(fs::path p) + { + p /= "dummy"; + return p.parent_path(); + } +} + + + namespace VirtualRobot::mujoco { @@ -131,7 +143,7 @@ void MujocoIO::ensureDirectoriesExist() if (!fs::is_directory(dir)) { std::cout << "Creating directory: " << dir << std::endl; - bool success = fs::create_directories(dir); + bool success = fs::create_directories(removeTrailingSeparator(dir)); THROW_VR_EXCEPTION_IF(!success, "Could not create " << errMsgName << ": " << dir); } };