X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FExchangeAPI%2FExchangeAPI_Export.cpp;h=8ee3b8bd7d86114af5628b477fd5cf625e50cec3;hb=refs%2Fheads%2FV9_11_BR;hp=6165c8fa62e8cfa958cb6ba5f2090320e72a0276;hpb=e805b718c368fab6c95496d7f1e6e65f466334a1;p=modules%2Fshaper.git diff --git a/src/ExchangeAPI/ExchangeAPI_Export.cpp b/src/ExchangeAPI/ExchangeAPI_Export.cpp index 6165c8fa6..8ee3b8bd7 100644 --- a/src/ExchangeAPI/ExchangeAPI_Export.cpp +++ b/src/ExchangeAPI/ExchangeAPI_Export.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2023 CEA, EDF // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -12,19 +12,21 @@ // // 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 "ExchangeAPI_Export.h" //-------------------------------------------------------------------------------------- +#include +//-------------------------------------------------------------------------------------- #include #include #include #include #include +#include //-------------------------------------------------------------------------------------- ExchangeAPI_Export::ExchangeAPI_Export(const std::shared_ptr& theFeature) @@ -51,6 +53,74 @@ ExchangeAPI_Export::ExchangeAPI_Export(const std::shared_ptr& apply(); // finish operation to make sure the export is done on the current state of the history } +// Constructor with values for STL of selected result export. +ExchangeAPI_Export::ExchangeAPI_Export(const std::shared_ptr& theFeature, + const std::string & theFilePath, + const ModelHighAPI_Selection& theSelectedShape, + const ModelHighAPI_Double& theDeflectionRelative, + const ModelHighAPI_Double& theDeflectionAbsolute, + const bool theIsRelative, + const bool theIsASCII) + : ModelHighAPI_Interface(theFeature) +{ + initialize(); + fillAttribute("STL", theFeature->string(ExchangePlugin_ExportFeature::EXPORT_TYPE_ID())); + fillAttribute(theFilePath, theFeature->string(ExchangePlugin_ExportFeature::STL_FILE_PATH_ID())); + + if (theIsRelative) { + fillAttribute(ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE_RELATIVE(), + theFeature->string(ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE()) ); + fillAttribute(theDeflectionRelative, + theFeature->real(ExchangePlugin_ExportFeature::STL_RELATIVE()) ); + } + else { + fillAttribute(ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE_ABSOLUTE(), + theFeature->string(ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE()) ); + fillAttribute(theDeflectionAbsolute, + theFeature->real(ExchangePlugin_ExportFeature::STL_ABSOLUTE()) ); + } + + if(theIsASCII){ + fillAttribute(ExchangePlugin_ExportFeature::STL_FILE_TYPE_ASCII(), + theFeature->string(ExchangePlugin_ExportFeature::STL_FILE_TYPE())); + } + else + { + fillAttribute(ExchangePlugin_ExportFeature::STL_FILE_TYPE_BINARY(), + theFeature->string(ExchangePlugin_ExportFeature::STL_FILE_TYPE())); + } + + fillAttribute(theSelectedShape, + theFeature->selection(ExchangePlugin_ExportFeature::STL_OBJECT_SELECTED())); + fillAttribute("STL", theFeature->string(ExchangePlugin_ExportFeature::FILE_FORMAT_ID())); + execute(); + apply(); // finish operation to make sure the export is done on the current state of the history +} + + + +ExchangeAPI_Export::ExchangeAPI_Export(const std::shared_ptr& theFeature, + const std::string & theFilePath, const ModelHighAPI_Selection& theResult, + const std::string & theAuthor, const std::string & theGeometryName) + : ModelHighAPI_Interface(theFeature) +{ + initialize(); + fillAttribute("XAO", theFeature->string(ExchangePlugin_ExportFeature::EXPORT_TYPE_ID())); + fillAttribute(theFilePath, theFeature->string(ExchangePlugin_ExportFeature::XAO_FILE_PATH_ID())); + fillAttribute(theAuthor, theFeature->string(ExchangePlugin_ExportFeature::XAO_AUTHOR_ID())); + fillAttribute(theGeometryName, + theFeature->string(ExchangePlugin_ExportFeature::XAO_GEOMETRY_NAME_ID())); + fillAttribute("XAO", theFeature->string(ExchangePlugin_ExportFeature::FILE_FORMAT_ID())); + std::list aListOfOneSel; + aListOfOneSel.push_back(theResult); + fillAttribute(aListOfOneSel, + theFeature->selectionList(ExchangePlugin_ExportFeature::XAO_SELECTION_LIST_ID())); + execute(); + apply(); // finish operation to make sure the export is done on the current state of the history +} + + + /// Constructor with values for export in other formats than XAO. ExchangeAPI_Export::ExchangeAPI_Export(const std::shared_ptr& theFeature, const std::string & theFilePath, @@ -106,6 +176,12 @@ void ExchangeAPI_Export::dump(ModelHighAPI_Dumper& theDumper) const aBase->string(ExchangePlugin_ExportFeature::XAO_FILE_PATH_ID())->value(); correctSeparators(aTmpXAOFile); theDumper << "exportToXAO(" << aDocName << ", '" << aTmpXAOFile << "'" ; + AttributeSelectionListPtr aShapeSelected = + aBase->selectionList(ExchangePlugin_ExportFeature::XAO_SELECTION_LIST_ID()); + if (aShapeSelected->isInitialized() && aShapeSelected->size() == 1) { + theDumper<<", "<value(0); + } + std::string theAuthor = aBase->string(ExchangePlugin_ExportFeature::XAO_AUTHOR_ID())->value(); if (! theAuthor.empty()) theDumper << ", '" << theAuthor << "'"; @@ -115,6 +191,34 @@ void ExchangeAPI_Export::dump(ModelHighAPI_Dumper& theDumper) const theDumper << ", '" << theGeometryName << "'"; theDumper << ")" << std::endl; } + else if (exportType == "STL") { + std::string aTmpSTLFile = + aBase->string(ExchangePlugin_ExportFeature::STL_FILE_PATH_ID())->value(); + correctSeparators(aTmpSTLFile); + theDumper << "exportToSTL(" << aDocName << ", '" << aTmpSTLFile << "'" ; + AttributeSelectionPtr aShapeSelected = + aBase->selection(ExchangePlugin_ExportFeature::STL_OBJECT_SELECTED()); + + theDumper<<","<< aShapeSelected; + + theDumper <<","<< stlabsolute() <<","<< stlrelative(); + + if (stldeflectionType()->value() + == ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE_RELATIVE()){ + theDumper <<","<< "True"; + } + else { + theDumper <<","<< "False"; + } + + if (stlfileType()->value() == ExchangePlugin_ExportFeature::STL_FILE_TYPE_BINARY()) { + theDumper << "False"; + } + else { + theDumper << "True"; + } + theDumper << ")" << std::endl; + } else { std::string aFilePath = aBase->string(ExchangePlugin_ExportFeature::FILE_PATH_ID())->value(); correctSeparators(aFilePath); @@ -150,4 +254,49 @@ ExportPtr exportToXAO(const std::shared_ptr & thePart, return ExportPtr(new ExchangeAPI_Export(aFeature, theFilePath, theAuthor, theGeometryName)); } +ExportPtr exportToSTL(const std::shared_ptr & thePart, + const std::string & theFilePath, + const ModelHighAPI_Selection& theSelectedShape, + const ModelHighAPI_Double& theDeflectionRelative, + const ModelHighAPI_Double& theDeflectionAbsolute, + const bool theIsRelative, + const bool theIsASCII) +{ + apply(); // finish previous operation to make sure all previous operations are done + std::shared_ptr aFeature = + thePart->addFeature(ExchangePlugin_ExportFeature::ID()); + + return ExportPtr(new ExchangeAPI_Export(aFeature, + theFilePath, + theSelectedShape, + theDeflectionRelative, + theDeflectionAbsolute, + theIsRelative, + theIsASCII)); +} + +ExportPtr exportToXAO(const std::shared_ptr & thePart, + const std::string & theFilePath, const ModelHighAPI_Selection& theSelectedShape, + const std::string & /*theAuthor*/, const std::string & /*theGeometryName*/) +{ + apply(); // finish previous operation to make sure all previous operations are done + std::shared_ptr aFeature = + thePart->addFeature(ExchangePlugin_ExportFeature::ID()); + // special internal case when for XAO a selection list is filled + return ExportPtr(new ExchangeAPI_Export(aFeature, theFilePath, theSelectedShape, "XAO")); +} + +void exportPart(const std::shared_ptr & thePart, + const std::string & theFilePath, + const std::list & theSelected) +{ + FeaturePtr aFeature = thePart->addFeature(ExchangePlugin_ExportPart::ID()); + aFeature->string(ExchangePlugin_ExportPart::FILE_PATH_ID())->setValue(theFilePath); + if (!theSelected.empty()) { + fillAttribute(theSelected, + aFeature->selectionList(ExchangePlugin_ExportPart::SELECTION_LIST_ID())); + } + // restart transaction to execute and delete the macro-feature + apply(); +} //--------------------------------------------------------------------------------------