X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FExchangePlugin%2FExchangePlugin_Dump.cpp;h=d9effab930aee2af11c5e5845650d4fc76184be0;hb=b5893b0a30fac08134c24de4565cb513a43affa6;hp=168e9dc197756f19592aab502c1ae363d94d6b2d;hpb=d34842c50d5f335cca443c78910c16c54139c7d0;p=modules%2Fshaper.git diff --git a/src/ExchangePlugin/ExchangePlugin_Dump.cpp b/src/ExchangePlugin/ExchangePlugin_Dump.cpp index 168e9dc19..d9effab93 100644 --- a/src/ExchangePlugin/ExchangePlugin_Dump.cpp +++ b/src/ExchangePlugin/ExchangePlugin_Dump.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include @@ -43,11 +44,47 @@ void ExchangePlugin_Dump::execute() void ExchangePlugin_Dump::dump(const std::string& theFileName) { // load DumpAssistant from Python side - Config_ModuleReader::loadScript("model.dump"); + Config_ModuleReader::loadScript("salome.shaper.model.dump"); ModelHighAPI_Dumper* aDumper = ModelHighAPI_Dumper::getInstance(); aDumper->clear(); DocumentPtr aDoc = ModelAPI_Session::get()->moduleDocument(); + + int aFeaturesNb = aDoc->size(ModelAPI_Feature::group()); + if(aFeaturesNb > 1) { + FeaturePtr aLastFeature = + ModelAPI_Feature::feature(aDoc->object(ModelAPI_Feature::group(), aFeaturesNb - 1)); + if(aDoc->currentFeature(true) != aLastFeature) { + setError("Dump cannot be done. Please move the history line to the end before dumping."); + return; + } + } + + DocumentPtr anActiveDoc = ModelAPI_Session::get()->activeDocument(); + aFeaturesNb = anActiveDoc->size(ModelAPI_Feature::group()); + if(aFeaturesNb > 1) { + FeaturePtr aLastFeature = + ModelAPI_Feature::feature(anActiveDoc->object(ModelAPI_Feature::group(), aFeaturesNb - 1)); + if(anActiveDoc->currentFeature(true) != aLastFeature) { + setError("Dump cannot be done. Please move the history line to the end before dumping."); + return; + } + } + + std::list aFeatures = aDoc->allFeatures(); + for(std::list::const_iterator aFeatIt = aFeatures.begin(); + aFeatIt != aFeatures.end(); + ++aFeatIt) { + ResultPartPtr aResultPart = + std::dynamic_pointer_cast((*aFeatIt)->firstResult()); + if(aResultPart.get()) { + if(!aResultPart->isActivated()) { + setError("Error: Not all parts are loaded. Can not dump."); + return; + } + } + } + if (!aDumper || !aDumper->process(aDoc, theFileName)) setError("An error occured while dumping to " + theFileName); }