X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FExchangePlugin%2FExchangePlugin_ExportFeature.cpp;h=a341a001558d9372717de629895419307edff34c;hb=13d59fc8ddcea476ed664e05839a6025ebb6be7b;hp=a399b646ee9ac6108fad65f45bfc9896a973ec7e;hpb=cbde248859fb0072f6012907391ea90cfc254574;p=modules%2Fshaper.git diff --git a/src/ExchangePlugin/ExchangePlugin_ExportFeature.cpp b/src/ExchangePlugin/ExchangePlugin_ExportFeature.cpp index a399b646e..a341a0015 100644 --- a/src/ExchangePlugin/ExchangePlugin_ExportFeature.cpp +++ b/src/ExchangePlugin/ExchangePlugin_ExportFeature.cpp @@ -6,16 +6,23 @@ #include -#include +#include +#include +#include +#ifdef _DEBUG +#include +#include +#endif + +#include +#include #include #include #include #include #include - -#include -#include +#include #include @@ -25,14 +32,12 @@ #include #include #include +#include +#include -#include -#include -#include -#ifdef _DEBUG -#include -#include -#endif +#include + +#include ExchangePlugin_ExportFeature::ExchangePlugin_ExportFeature() { @@ -43,22 +48,18 @@ ExchangePlugin_ExportFeature::~ExchangePlugin_ExportFeature() // TODO Auto-generated destructor stub } -/* - * Returns the unique kind of a feature - */ -const std::string& ExchangePlugin_ExportFeature::getKind() -{ - return ExchangePlugin_ExportFeature::ID(); -} - /* * Request for initialization of data model of the feature: adding all attributes */ void ExchangePlugin_ExportFeature::initAttributes() { + data()->addAttribute(ExchangePlugin_ExportFeature::EXPORT_TYPE_ID(), ModelAPI_AttributeString::typeId()); data()->addAttribute(ExchangePlugin_ExportFeature::FILE_PATH_ID(), ModelAPI_AttributeString::typeId()); data()->addAttribute(ExchangePlugin_ExportFeature::FILE_FORMAT_ID(), ModelAPI_AttributeString::typeId()); data()->addAttribute(ExchangePlugin_ExportFeature::SELECTION_LIST_ID(), ModelAPI_AttributeSelectionList::typeId()); + data()->addAttribute(ExchangePlugin_ExportFeature::XAO_AUTHOR_ID(), ModelAPI_AttributeString::typeId()); + + ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), ExchangePlugin_ExportFeature::XAO_AUTHOR_ID()); } /* @@ -90,20 +91,25 @@ void ExchangePlugin_ExportFeature::execute() if (aCurShape.get() != NULL) aShapes.push_back(aCurShape); } - std::shared_ptr aShape = - GeomAlgoAPI_CompoundBuilder::compound(aShapes); + + // Store compound if we have more than one shape. + std::shared_ptr aShape; + if(aShapes.size() == 1) { + aShape = aShapes.front(); + } else { + aShape = GeomAlgoAPI_CompoundBuilder::compound(aShapes); + } exportFile(aFilePath, aFormat, aShape); } -bool ExchangePlugin_ExportFeature::exportFile(const std::string& theFileName, +void ExchangePlugin_ExportFeature::exportFile(const std::string& theFileName, const std::string& theFormat, std::shared_ptr theShape) { - // retrieve the file and plugin library names std::string aFormatName = theFormat; - if (theFormat.empty()) { // look at extension + if (aFormatName.empty()) { // get default format for the extension // ".brep" -> "BREP" std::string anExtension = GeomAlgoAPI_Tools::File_Tools::extension(theFileName); if (anExtension == "BREP" || anExtension == "BRP") { @@ -112,11 +118,18 @@ bool ExchangePlugin_ExportFeature::exportFile(const std::string& theFileName, aFormatName = "STEP"; } else if (anExtension == "IGES" || anExtension == "IGS") { aFormatName = "IGES-5.1"; + } else if (anExtension == "XAO") { + aFormatName = "XAO"; } else { aFormatName = anExtension; } } + if (aFormatName == "XAO") { + exportXAO(theFileName, theShape); + return; + } + // Perform the export std::string anError; bool aResult = false; @@ -127,15 +140,28 @@ bool ExchangePlugin_ExportFeature::exportFile(const std::string& theFileName, } else if (aFormatName.substr(0, 4) == "IGES") { aResult = IGESExport(theFileName, aFormatName, theShape, anError); } else { - anError = "Unsupported format " + aFormatName; + anError = "Unsupported format: " + aFormatName; } - if (!aResult) { - std::string aShapeError = - "An error occurred while exporting " + theFileName + ": " + anError; - setError(aShapeError); - return false; + if (!anError.empty()) { + setError("An error occurred while exporting " + theFileName + ": " + anError); + return; } +} + +void ExchangePlugin_ExportFeature::exportXAO(const std::string& theFileName, + std::shared_ptr theShape) +{ + std::string anAuthor = string(ExchangePlugin_ExportFeature::XAO_AUTHOR_ID())->value(); + + XAO::Xao aXao(anAuthor, "1.0"); - return true; + std::string anError; + XAOExport(theFileName, theShape, &aXao, anError); + + if (!anError.empty()) { + setError("An error occurred while exporting " + theFileName + ": " + anError); + return; + } } +