X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSHAPERGUI%2FSHAPERGUI_DataModel.cpp;h=3d8defd9248211582e07044099914c93ebdb7ce7;hb=38dd97c8f7a3605ec6c362c3aefdefa3ee2675be;hp=df6a6ae3fc9e2b57234cb7bda2df30b36812afe5;hpb=d31b2834853f65576fceedcb8dd2ee8fd94d65a0;p=modules%2Fshaper.git diff --git a/src/SHAPERGUI/SHAPERGUI_DataModel.cpp b/src/SHAPERGUI/SHAPERGUI_DataModel.cpp index df6a6ae3f..3d8defd92 100644 --- a/src/SHAPERGUI/SHAPERGUI_DataModel.cpp +++ b/src/SHAPERGUI/SHAPERGUI_DataModel.cpp @@ -6,6 +6,8 @@ #include #include +#include +#include #include #include @@ -15,6 +17,10 @@ #include #include +#include + +#define DUMP_NAME "shaper_dump.py" + SHAPERGUI_DataModel::SHAPERGUI_DataModel(SHAPERGUI* theModule) : LightApp_DataModel(theModule), myStudyPath(""), myModule(theModule) @@ -153,3 +159,65 @@ void SHAPERGUI_DataModel::removeDirectory(const QString& theDirectoryName) Qtx::rmDir(theDirectoryName); } +bool SHAPERGUI_DataModel::dumpPython(const QString& thePath, CAM_Study* theStudy, + bool isMultiFile, QStringList& theListOfFiles) +{ + LightApp_Study* aStudy = dynamic_cast(theStudy); + if (!aStudy) + return false; + + std::shared_ptr aDoc = ModelAPI_Session::get()->activeDocument(); + ModelAPI_Session::get()->startOperation(ExchangePlugin_Dump::ID()); + FeaturePtr aFeature = aDoc->addFeature(ExchangePlugin_Dump::ID()); + if (aFeature.get()) { + std::string aTmpDir = aStudy->GetTmpDir(thePath.toStdString().c_str(), isMultiFile); + std::string aFileName = aTmpDir + DUMP_NAME; + + if (QFile::exists(aFileName.c_str())) { + QFile::remove(aFileName.c_str()); + } + + AttributeStringPtr aAttr = aFeature->string(ExchangePlugin_Dump::FILE_PATH_ID()); + if (aAttr.get()) + aAttr->setValue(aFileName); + + aAttr = aFeature->string(ExchangePlugin_Dump::FILE_FORMAT_ID()); + if (aAttr.get()) + aAttr->setValue(".py"); + ModelAPI_Session::get()->finishOperation(); + + if (QFile::exists(aFileName.c_str())) { + if (isMultiFile) { + QFile aInFile(aFileName.c_str()); + if (!aInFile.open(QIODevice::ReadOnly | QIODevice::Text)) + return false; + QTextStream aText(&aInFile); + QString aTrace(aText.readAll()); + aInFile.close(); + + QStringList aBuffer; + aBuffer.push_back(QString("def RebuildData( theStudy ):")); + QStringList aList(aTrace.split("\n")); + foreach(QString aStr, aList) { + QString s = " " + aStr; + aBuffer.push_back(s); + } + aTrace = aBuffer.join("\n"); + + QFile aOutFile(aFileName.c_str()); + if (!aOutFile.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) + return false; + + QTextStream aOut(&aOutFile); + aOut << aTrace.toStdString().c_str() << "\n"; + aOut.flush(); + aOutFile.close(); + } + theListOfFiles.append(aTmpDir.c_str()); + theListOfFiles.append(DUMP_NAME); + return true; + } + } + return false; +} +