]> SALOME platform Git repositories - modules/shaper.git/blobdiff - src/ExchangeAPI/ExchangeAPI_Export.cpp
Salome HOME
Implementation Export STL
[modules/shaper.git] / src / ExchangeAPI / ExchangeAPI_Export.cpp
index 000e178abdc874dff99814310bae3a905abbb4c6..4e9b4b9c3a179b7483b33ff121301d5f3690df0e 100644 (file)
@@ -53,6 +53,51 @@ ExchangeAPI_Export::ExchangeAPI_Export(const std::shared_ptr<ModelAPI_Feature>&
   apply(); // finish operation to make sure the export is done on the current state of the history
 }
 
+// Constructor with values for STL of selected result export.
+ExchangeAPI_Export::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)
+  : ModelHighAPI_Interface(theFeature)
+{
+  initialize();
+  fillAttribute("STL", theFeature->string(ExchangePlugin_ExportFeature::EXPORT_TYPE_ID()));
+  fillAttribute(theFilePath, theFeature->string(ExchangePlugin_ExportFeature::STL_FILE_PATH_ID()));
+   
+  if (anIsRelative) {
+    fillAttribute(ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE_RELATIVE(), 
+      theFeature->string(ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE()) );
+    fillAttribute(aDeflectionRelative, 
+      theFeature->real(ExchangePlugin_ExportFeature::STL_RELATIVE()) ); 
+  }
+  else {
+    fillAttribute(ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE_ABSOLUTE(), 
+      theFeature->string(ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE()) );
+    fillAttribute(aDeflectionAbsolute, 
+      theFeature->real(ExchangePlugin_ExportFeature::STL_ABSOLUTE()) );
+  }
+
+  if(anIsASCII){
+    fillAttribute(ExchangePlugin_ExportFeature::STL_FILE_TYPE_ASCII(), 
+      theFeature->string(ExchangePlugin_ExportFeature::STL_FILE_TYPE()));
+  }
+  else
+  {
+    fillAttribute(ExchangePlugin_ExportFeature::STL_FILE_TYPE_BINARY(), 
+      theFeature->string(ExchangePlugin_ExportFeature::STL_FILE_TYPE()));
+  }
+  
+  fillAttribute(theSelectedShape,theFeature->selection(ExchangePlugin_ExportFeature::STL_OBJECT_SELECTED()));
+  fillAttribute("STL", theFeature->string(ExchangePlugin_ExportFeature::FILE_FORMAT_ID()));
+  execute();
+  apply(); // finish operation to make sure the export is done on the current state of the history
+}
+
+
+
 ExchangeAPI_Export::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)
@@ -74,6 +119,7 @@ ExchangeAPI_Export::ExchangeAPI_Export(const std::shared_ptr<ModelAPI_Feature>&
 }
 
 
+
 /// Constructor with values for export in other formats than XAO.
 ExchangeAPI_Export::ExchangeAPI_Export(const std::shared_ptr<ModelAPI_Feature>& theFeature,
                               const std::string & theFilePath,
@@ -144,6 +190,33 @@ void ExchangeAPI_Export::dump(ModelHighAPI_Dumper& theDumper) const
       theDumper << ", '" << theGeometryName << "'";
     theDumper << ")" << std::endl;
   }
+  else if (exportType == "STL") {
+    std::string aTmpSTLFile =
+                aBase->string(ExchangePlugin_ExportFeature::STL_FILE_PATH_ID())->value();
+    correctSeparators(aTmpSTLFile);
+    theDumper << "exportToSTL(" << aDocName << ", '" << aTmpSTLFile << "'" ;
+    AttributeSelectionPtr aShapeSelected =
+      aBase->selection(ExchangePlugin_ExportFeature::STL_OBJECT_SELECTED());
+
+    theDumper<<","<< aShapeSelected;
+    
+    theDumper <<","<<  stlabsolute() <<","<< stlrelative();
+
+    if (stldeflectionType()->value() == ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE_RELATIVE()) {
+      theDumper <<","<< "True";
+    }
+    else {
+      theDumper <<","<< "False";
+    }
+    
+    if (stlfileType()->value() == ExchangePlugin_ExportFeature::STL_FILE_TYPE_BINARY()) {
+      theDumper << "False";
+    }
+    else {
+      theDumper <<  "True";
+    }
+    theDumper << ")" << std::endl;
+  }
   else {
     std::string aFilePath = aBase->string(ExchangePlugin_ExportFeature::FILE_PATH_ID())->value();
     correctSeparators(aFilePath);
@@ -179,6 +252,27 @@ ExportPtr exportToXAO(const std::shared_ptr<ModelAPI_Document> & thePart,
   return ExportPtr(new ExchangeAPI_Export(aFeature, theFilePath, theAuthor, theGeometryName));
 }
 
+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)
+{
+  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,
+                                          theSelectedShape,
+                                          aDeflectionRelative,
+                                          aDeflectionAbsolute,
+                                          anIsRelative,
+                                          anIsASCII));                                    
+}
+
 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*/)