Salome HOME
[bos #40620] [CEA] XAO export for SHAPER: Allow export of brep in a separate file
[modules/shaper.git] / src / ExchangeAPI / ExchangeAPI_Export.h
index fb6784f57938ba3ff413813d88a993c5e404d350..4500c95dbf9e7aa10defc96cfa21e8e1bfab4635 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2020  CEA/DEN, EDF R&D
+// 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
 #include <ModelHighAPI_Macro.h>
 
 #include <ExchangePlugin_ExportFeature.h>
+
+#include <Python.h>
+
 //--------------------------------------------------------------------------------------
 class ModelHighAPI_Selection;
+class ModelHighAPI_Double;
 //--------------------------------------------------------------------------------------
 
 
@@ -50,25 +54,34 @@ public:
   explicit ExchangeAPI_Export(const std::shared_ptr<ModelAPI_Feature>& theFeature,
                               const std::string & theFilePath,
                               const std::string & theAuthor = std::string(),
-                              const std::string & theGeometryName = std::string());
+                              const std::string & theGeometryName = std::string(),
+                              const std::string & theShapeFilePath = std::string());
 
   /// Constructor with values for STL of selected result export.
   EXCHANGEAPI_EXPORT
-    explicit ExchangeAPI_Export(const std::shared_ptr<ModelAPI_Feature>& theFeature,
-                                const std::string & theFilePath,
-                                const ModelHighAPI_Selection& theSelectedShape,
-                                double  aDeflectionRelative ,
-                                double  aDeflectionAbsolute,
-                                const bool anIsRelative,
-                                const bool anIsASCII);
+  explicit ExchangeAPI_Export(const std::shared_ptr<ModelAPI_Feature>& theFeature,
+                              const std::string & theFilePath,
+                              const ModelHighAPI_Selection& theSelectedShape,
+                              const ModelHighAPI_Double&  theDeflectionRelative ,
+                              const ModelHighAPI_Double&  theDeflectionAbsolute,
+                              const bool theIsRelative,
+                              const bool theIsASCII);
 
   /// Constructor with values for XAO of selected result export.
   EXCHANGEAPI_EXPORT
-    explicit ExchangeAPI_Export(const std::shared_ptr<ModelAPI_Feature>& theFeature,
-      const std::string & theFilePath,
-      const ModelHighAPI_Selection& theResult,
-      const std::string & theAuthor,
-      const std::string & theGeometryName = std::string());
+  explicit ExchangeAPI_Export(const std::shared_ptr<ModelAPI_Feature>& theFeature,
+                              const std::string & theFilePath,
+                              const ModelHighAPI_Selection& theResult,
+                              const std::string & theAuthor,
+                              const std::string & theGeometryName = std::string(),
+                              const std::string & theShapeFilePath = std::string());
+
+  /// Constructor with values for XAO of selected result export to memory buffer.
+  EXCHANGEAPI_EXPORT
+  explicit ExchangeAPI_Export(const std::shared_ptr<ModelAPI_Feature>& theFeature,
+                              const ModelHighAPI_Selection& theResult,
+                              const std::string & theAuthor,
+                              const std::string & theGeometryName = std::string());
 
   /// Constructor with values for export in other formats than XAO.
   EXCHANGEAPI_EXPORT
@@ -81,39 +94,43 @@ public:
   EXCHANGEAPI_EXPORT
   virtual ~ExchangeAPI_Export();
 
-  INTERFACE_15(ExchangePlugin_ExportFeature::ID(),
-             exportType, ExchangePlugin_ExportFeature::EXPORT_TYPE_ID(),
-             ModelAPI_AttributeString, /** ExportType */,
-             filePath, ExchangePlugin_ExportFeature::FILE_PATH_ID(),
-             ModelAPI_AttributeString, /** file path */,
-             xaoFilePath, ExchangePlugin_ExportFeature::XAO_FILE_PATH_ID(),
-             ModelAPI_AttributeString, /** xao_file_path */,
-             fileFormat, ExchangePlugin_ExportFeature::FILE_FORMAT_ID(),
-             ModelAPI_AttributeString, /** file format */,
-             selectionList, ExchangePlugin_ExportFeature::SELECTION_LIST_ID(),
-             ModelAPI_AttributeString, /** selection list */,
-             xaoAuthor, ExchangePlugin_ExportFeature::XAO_AUTHOR_ID(),
-             ModelAPI_AttributeString, /** xao author */,
-             xaoGeometryName, ExchangePlugin_ExportFeature::XAO_GEOMETRY_NAME_ID(),
-             ModelAPI_AttributeString, /** xao geometry name */,
-             stlFilePath, ExchangePlugin_ExportFeature::STL_FILE_PATH_ID(),
-             ModelAPI_AttributeString, /** stl_file_path */,
-             stlobjectselected, ExchangePlugin_ExportFeature::STL_OBJECT_SELECTED(),
-             ModelAPI_AttributeSelection, /** Object selected to export in stl file*/,
-             stldeflectionType, ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE(),
-             ModelAPI_AttributeString, /** Type of the defelection */,
-             stlrelative, ExchangePlugin_ExportFeature::STL_RELATIVE(),
-             ModelAPI_AttributeDouble, /** Relative*/,
-             stlabsolute, ExchangePlugin_ExportFeature::STL_ABSOLUTE(),
-             ModelAPI_AttributeDouble, /** Absolute */,
-             stlfileType, ExchangePlugin_ExportFeature::STL_FILE_TYPE(),
-             ModelAPI_AttributeString, /** Type of the stl file*/,
-             stldeflectionTypeabsolute,
+  INTERFACE_17(ExchangePlugin_ExportFeature::ID(),
+               exportType, ExchangePlugin_ExportFeature::EXPORT_TYPE_ID(),
+               ModelAPI_AttributeString, /** ExportType */,
+               filePath, ExchangePlugin_ExportFeature::FILE_PATH_ID(),
+               ModelAPI_AttributeString, /** file path */,
+               xaoFilePath, ExchangePlugin_ExportFeature::XAO_FILE_PATH_ID(),
+               ModelAPI_AttributeString, /** xao_file_path */,
+               fileFormat, ExchangePlugin_ExportFeature::FILE_FORMAT_ID(),
+               ModelAPI_AttributeString, /** file format */,
+               selectionList, ExchangePlugin_ExportFeature::SELECTION_LIST_ID(),
+               ModelAPI_AttributeString, /** selection list */,
+               xaoAuthor, ExchangePlugin_ExportFeature::XAO_AUTHOR_ID(),
+               ModelAPI_AttributeString, /** xao author */,
+               xaoGeometryName, ExchangePlugin_ExportFeature::XAO_GEOMETRY_NAME_ID(),
+               ModelAPI_AttributeString, /** xao geometry name */,
+               stlFilePath, ExchangePlugin_ExportFeature::STL_FILE_PATH_ID(),
+               ModelAPI_AttributeString, /** stl_file_path */,
+               stlobjectselected, ExchangePlugin_ExportFeature::STL_OBJECT_SELECTED(),
+               ModelAPI_AttributeSelection, /** Object selected to export in stl file*/,
+               stldeflectionType, ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE(),
+               ModelAPI_AttributeString, /** Type of the defelection */,
+               stlrelative, ExchangePlugin_ExportFeature::STL_RELATIVE(),
+               ModelAPI_AttributeDouble, /** Relative*/,
+               stlabsolute, ExchangePlugin_ExportFeature::STL_ABSOLUTE(),
+               ModelAPI_AttributeDouble, /** Absolute */,
+               stlfileType, ExchangePlugin_ExportFeature::STL_FILE_TYPE(),
+               ModelAPI_AttributeString, /** Type of the stl file*/,
+               stldeflectionTypeabsolute,
                       ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE_ABSOLUTE(),
-             ModelAPI_AttributeString, /** Type of the defelection */,
-             stldeflectionTyperelative,
+               ModelAPI_AttributeString, /** Type of the defelection */,
+               stldeflectionTyperelative,
                       ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE_RELATIVE(),
-             ModelAPI_AttributeString, /** Type of the defelection */)
+               ModelAPI_AttributeString, /** Type of the defelection */,
+               memoryBuff, ExchangePlugin_ExportFeature::MEMORY_BUFFER_ID(),
+               ModelAPI_AttributeString, /** Bytes*/,
+               xaoShapeFilePath, ExchangePlugin_ExportFeature::XAO_SHAPE_FILE_PATH_ID(),
+               ModelAPI_AttributeString, /** xao shape file path */)
 
   /// Dump wrapped feature
   EXCHANGEAPI_EXPORT
@@ -137,31 +154,42 @@ ExportPtr exportToFile(const std::shared_ptr<ModelAPI_Document> & thePart,
  */
 EXCHANGEAPI_EXPORT
 ExportPtr exportToXAO(const std::shared_ptr<ModelAPI_Document> & thePart,
-                 const std::string & theFilePath,
-                 const std::string & theAuthor = std::string(),
-                 const std::string & theGeometryName = std::string());
+                      const std::string & theFilePath,
+                      const std::string & theAuthor = std::string(),
+                      const std::string & theGeometryName = std::string(),
+                      const std::string & theShapeFilePath = std::string());
 
 /**\ingroup CPPHighAPI
  * \brief Exports to STL file the result of the current document
  */
 EXCHANGEAPI_EXPORT
 ExportPtr exportToSTL(const std::shared_ptr<ModelAPI_Document> & thePart,
-      const std::string & theFilePath,
-      const ModelHighAPI_Selection& theSelectedShape,
-      double  aDeflectionRelative,
-      double  aDeflectionAbsolute,
-      const bool anIsRelative,
-      const bool anIsASCII);
+                      const std::string & theFilePath,
+                      const ModelHighAPI_Selection& theSelectedShape,
+                      const ModelHighAPI_Double&  theDeflectionRelative,
+                      const ModelHighAPI_Double&  theDeflectionAbsolute,
+                      const bool theIsRelative,
+                      const bool theIsASCII);
 
 /**\ingroup CPPHighAPI
 * \brief Exports to XAO file the selected result with groups parts related to it only.
 */
 EXCHANGEAPI_EXPORT
 ExportPtr exportToXAO(const std::shared_ptr<ModelAPI_Document> & thePart,
-  const std::string & theFilePath,
-  const ModelHighAPI_Selection& theSelectedShape,
-  const std::string & theAuthor = std::string(),
-  const std::string & theGeometryName = std::string());
+                      const std::string & theFilePath,
+                      const ModelHighAPI_Selection& theSelectedShape,
+                      const std::string & theAuthor = std::string(),
+                      const std::string & theGeometryName = std::string(),
+                      const std::string & theShapeFilePath = std::string());
+
+/**\ingroup CPPHighAPI
+* \brief Exports to XAO format buffer the selected result with groups parts related to it only.
+*/
+EXCHANGEAPI_EXPORT
+PyObject* exportToXAOMem(const std::shared_ptr<ModelAPI_Document> & thePart,
+                           const ModelHighAPI_Selection& theSelectedShape,
+                           const std::string & theAuthor = std::string(),
+                           const std::string & theGeometryName = std::string());
 
 
 /** \ingroup CPPHighAPI