X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGeomAlgoAPI%2FGeomAlgoAPI_Tools.cpp;h=006a9a12ef4a35201461fd2a6cdae0a57675dba7;hb=c564630a9aa1a9197b5faa884b42ad777319e6a6;hp=5a893f50b218d813a3530f39685d26f19ce924ed;hpb=7074394f8f08413d885f63be01df6bd5007b868c;p=modules%2Fshaper.git diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_Tools.cpp b/src/GeomAlgoAPI/GeomAlgoAPI_Tools.cpp index 5a893f50b..006a9a12e 100644 --- a/src/GeomAlgoAPI/GeomAlgoAPI_Tools.cpp +++ b/src/GeomAlgoAPI/GeomAlgoAPI_Tools.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2022 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -12,13 +12,13 @@ // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or -// email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "GeomAlgoAPI_Tools.h" +#include "GeomAlgoAPI_MakeShape.h" #include @@ -45,6 +45,8 @@ std::string File_Tools::extension(const std::string& theFileName) TCollection_AsciiString aFileName(theFileName.c_str()); OSD_Path aPath(aFileName); TCollection_AsciiString anExtension = aPath.Extension(); + if (anExtension.Length() < 2) + return ""; // TCollection_AsciiString are numbered from 1 anExtension = anExtension.SubString(2, anExtension.Length()); anExtension.UpperCase(); @@ -58,3 +60,40 @@ std::string File_Tools::name(const std::string& theFileName) OSD_Path aPath(aFileName); return aPath.Name().ToCString(); } + +std::string File_Tools::path(const std::string& theFileName) +{ + OSD_Path aPath (theFileName.c_str()); + Standard_Integer aTrekLen = + int(theFileName.size()) - aPath.Extension().Length() - aPath.Name().Length(); + return theFileName.substr(0, aTrekLen); +} + +bool AlgoError::isAlgorithmFailed(const GeomMakeShapePtr& theAlgorithm, + const std::string& theFeature, + std::string& theError) +{ + theError.clear(); + if (!theAlgorithm->isDone()) { + theError = "Error: " + (theFeature.empty() ? "The" : theFeature) + " algorithm failed."; + std::string anAlgoError = theAlgorithm->getError(); + if (!anAlgoError.empty()) + theError += " " + anAlgoError; + return true; + } + if (!theAlgorithm->shape() || theAlgorithm->shape()->isNull()) { + theError = "Error: Resulting shape"; + if (!theFeature.empty()) + theError += " of " + theFeature; + theError += " is Null."; + return true; + } + if (!theAlgorithm->isValid()) { + theError = "Error: Resulting shape"; + if (!theFeature.empty()) + theError += " of " + theFeature; + theError += " is not valid."; + return true; + } + return false; +}