From cac95b57f2423d30e627c77c916c1bd5f509112c Mon Sep 17 00:00:00 2001 From: dbv Date: Tue, 28 Mar 2017 16:43:35 +0300 Subject: [PATCH] Issue #1868: Crash with dump python when I translate a same object several times Dump will show error window if history line not at the end. --- src/ExchangePlugin/ExchangePlugin_Dump.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/ExchangePlugin/ExchangePlugin_Dump.cpp b/src/ExchangePlugin/ExchangePlugin_Dump.cpp index 5c5ee4665..d9effab93 100644 --- a/src/ExchangePlugin/ExchangePlugin_Dump.cpp +++ b/src/ExchangePlugin/ExchangePlugin_Dump.cpp @@ -50,6 +50,27 @@ void ExchangePlugin_Dump::dump(const std::string& theFileName) 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(); -- 2.39.2