Salome HOME
[bos #40620] [CEA] XAO export for SHAPER: Allow export of brep in a separate file
[modules/shaper.git] / src / ExchangeAPI / ExchangeAPI_Export.cpp
index 6390b6d973a78fa5815a9c8c3bba5fa5716c2cfd..cda585a2d7ead5f4db7aadf1572f719d37ca10e7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2023  CEA, EDF
+// Copyright (C) 2014-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -41,14 +41,17 @@ ExchangeAPI_Export::ExchangeAPI_Export(const std::shared_ptr<ModelAPI_Feature>&
 
 /// Constructor with values for XAO export.
 ExchangeAPI_Export::ExchangeAPI_Export(const std::shared_ptr<ModelAPI_Feature>& theFeature,
-                              const std::string & theFilePath,
-                              const std::string & theAuthor,
-                              const std::string & theGeometryName)
+                                       const std::string & theFilePath,
+                                       const std::string & theAuthor,
+                                       const std::string & theGeometryName,
+                                       const std::string & theShapeFilePath)
 : ModelHighAPI_Interface(theFeature)
 {
   initialize();
   fillAttribute("XAO", theFeature->string(ExchangePlugin_ExportFeature::EXPORT_TYPE_ID()));
   fillAttribute(theFilePath, theFeature->string(ExchangePlugin_ExportFeature::XAO_FILE_PATH_ID()));
+  fillAttribute(theShapeFilePath,
+                theFeature->string(ExchangePlugin_ExportFeature::XAO_SHAPE_FILE_PATH_ID()));
   fillAttribute(theAuthor, theFeature->string(ExchangePlugin_ExportFeature::XAO_AUTHOR_ID()));
   fillAttribute(theGeometryName,
                 theFeature->string(ExchangePlugin_ExportFeature::XAO_GEOMETRY_NAME_ID()));
@@ -106,20 +109,23 @@ ExchangeAPI_Export::ExchangeAPI_Export(const std::shared_ptr<ModelAPI_Feature>&
                                        const std::string & theFilePath,
                                        const ModelHighAPI_Selection& theResult,
                                        const std::string & theAuthor,
-                                       const std::string & theGeometryName)
+                                       const std::string & theGeometryName,
+                                       const std::string & theShapeFilePath)
   : ModelHighAPI_Interface(theFeature)
 {
   initialize();
   fillAttribute("XAO", theFeature->string(ExchangePlugin_ExportFeature::EXPORT_TYPE_ID()));
   fillAttribute(theFilePath, theFeature->string(ExchangePlugin_ExportFeature::XAO_FILE_PATH_ID()));
+  fillAttribute(theShapeFilePath,
+                theFeature->string(ExchangePlugin_ExportFeature::XAO_SHAPE_FILE_PATH_ID()));
   fillAttribute(theAuthor, theFeature->string(ExchangePlugin_ExportFeature::XAO_AUTHOR_ID()));
   fillAttribute(theGeometryName,
-    theFeature->string(ExchangePlugin_ExportFeature::XAO_GEOMETRY_NAME_ID()));
+                theFeature->string(ExchangePlugin_ExportFeature::XAO_GEOMETRY_NAME_ID()));
   fillAttribute("XAO", theFeature->string(ExchangePlugin_ExportFeature::FILE_FORMAT_ID()));
   std::list<ModelHighAPI_Selection> aListOfOneSel;
   aListOfOneSel.push_back(theResult);
   fillAttribute(aListOfOneSel,
-    theFeature->selectionList(ExchangePlugin_ExportFeature::XAO_SELECTION_LIST_ID()));
+                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
 }
@@ -141,7 +147,7 @@ ExchangeAPI_Export::ExchangeAPI_Export(const std::shared_ptr<ModelAPI_Feature>&
   aListOfOneSel.push_back(theResult);
   fillAttribute(aListOfOneSel,
                 theFeature->selectionList(ExchangePlugin_ExportFeature::XAO_SELECTION_LIST_ID()));
-  execute(true);
+  execute();
   apply(); // finish operation to make sure the export is done on the current state of the history
 }
 
@@ -301,14 +307,15 @@ ExportPtr exportToFile(const std::shared_ptr<ModelAPI_Document> & thePart,
 }
 
 ExportPtr exportToXAO(const std::shared_ptr<ModelAPI_Document> & thePart,
-                 const std::string & theFilePath,
-                 const std::string & theAuthor,
-                 const std::string & theGeometryName)
+                      const std::string & theFilePath,
+                      const std::string & theAuthor,
+                      const std::string & theGeometryName,
+                      const std::string & theShapeFilePath)
 {
   apply(); // finish previous operation to make sure all previous operations are done
   std::shared_ptr<ModelAPI_Feature> aFeature =
     thePart->addFeature(ExchangePlugin_ExportFeature::ID());
-  return ExportPtr(new ExchangeAPI_Export(aFeature, theFilePath, theAuthor, theGeometryName));
+  return ExportPtr(new ExchangeAPI_Export(aFeature, theFilePath, theAuthor, theGeometryName, theShapeFilePath));
 }
 
 ExportPtr exportToSTL(const std::shared_ptr<ModelAPI_Document> & thePart,
@@ -336,13 +343,14 @@ ExportPtr exportToXAO(const std::shared_ptr<ModelAPI_Document> & thePart,
                       const std::string & theFilePath,
                       const ModelHighAPI_Selection& theSelectedShape,
                       const std::string & /*theAuthor*/,
-                      const std::string & /*theGeometryName*/)
+                      const std::string & /*theGeometryName*/,
+                      const std::string & theShapeFilePath)
 {
   apply(); // finish previous operation to make sure all previous operations are done
   std::shared_ptr<ModelAPI_Feature> 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"));
+  return ExportPtr(new ExchangeAPI_Export(aFeature, theFilePath, theSelectedShape, "XAO", "", theShapeFilePath));
 }
 
 PyObject* exportToXAOMem(const std::shared_ptr<ModelAPI_Document> & thePart,