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)
}
+
/// 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,
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);
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*/)
const std::string & theFilePath,
const std::string & theAuthor = std::string(),
const std::string & theGeometryName = 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);
/// Constructor with values for XAO of selected result export.
EXCHANGEAPI_EXPORT
EXCHANGEAPI_EXPORT
virtual ~ExchangeAPI_Export();
- INTERFACE_7(ExchangePlugin_ExportFeature::ID(),
+ INTERFACE_15(ExchangePlugin_ExportFeature::ID(),
exportType, ExchangePlugin_ExportFeature::EXPORT_TYPE_ID(),
ModelAPI_AttributeString, /** ExportType */,
filePath, ExchangePlugin_ExportFeature::FILE_PATH_ID(),
xaoAuthor, ExchangePlugin_ExportFeature::XAO_AUTHOR_ID(),
ModelAPI_AttributeString, /** xao author */,
xaoGeometryName, ExchangePlugin_ExportFeature::XAO_GEOMETRY_NAME_ID(),
- ModelAPI_AttributeString, /** xao geometry name */)
+ 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, ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE_RELATIVE(),
+ ModelAPI_AttributeString, /** Type of the defelection */)
/// Dump wrapped feature
EXCHANGEAPI_EXPORT
const std::string & theAuthor = std::string(),
const std::string & theGeometryName = 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);
+
/**\ingroup CPPHighAPI
* \brief Exports to XAO file the selected result with groups parts related to it only.
*/
#include <ostream>
#endif
+
#include <Config_Common.h>
#include <Config_PropManager.h>
#include <GeomAlgoAPI_CompoundBuilder.h>
#include <GeomAlgoAPI_IGESExport.h>
#include <GeomAlgoAPI_STEPExport.h>
+#include <GeomAlgoAPI_STLExport.h>
#include <GeomAlgoAPI_Tools.h>
#include <GeomAlgoAPI_XAOExport.h>
#include <ModelAPI_AttributeStringArray.h>
#include <ModelAPI_AttributeIntArray.h>
#include <ModelAPI_AttributeTables.h>
+#include <ModelAPI_AttributeDouble.h>
#include <ModelAPI_Data.h>
#include <ModelAPI_Document.h>
#include <ModelAPI_Object.h>
ModelAPI_AttributeString::typeId());
data()->addAttribute(ExchangePlugin_ExportFeature::XAO_SELECTION_LIST_ID(),
ModelAPI_AttributeSelectionList::typeId());
+ data()->addAttribute(ExchangePlugin_ExportFeature::STL_FILE_PATH_ID(),
+ ModelAPI_AttributeString::typeId());
+ data()->addAttribute(ExchangePlugin_ExportFeature::STL_OBJECT_SELECTED(),
+ ModelAPI_AttributeSelection::typeId());
+ data()->addAttribute(ExchangePlugin_ExportFeature::STL_DEFLECTION_TYPE(),
+ ModelAPI_AttributeString::typeId());
+ data()->addAttribute(ExchangePlugin_ExportFeature::STL_RELATIVE(),
+ ModelAPI_AttributeDouble::typeId());
+ data()->addAttribute(ExchangePlugin_ExportFeature::STL_ABSOLUTE(),
+ ModelAPI_AttributeDouble::typeId());
+ data()->addAttribute(ExchangePlugin_ExportFeature::STL_FILE_TYPE(),
+ ModelAPI_AttributeString::typeId());
ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(),
ExchangePlugin_ExportFeature::XAO_FILE_PATH_ID());
+ ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(),
+ ExchangePlugin_ExportFeature::STL_FILE_PATH_ID());
ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(),
ExchangePlugin_ExportFeature::XAO_AUTHOR_ID());
ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(),
string(ExchangePlugin_ExportFeature::FILE_PATH_ID())->setValue(
string(ExchangePlugin_ExportFeature::XAO_FILE_PATH_ID())->value());
}
+ else if (theID == STL_FILE_PATH_ID()) {
+ string(ExchangePlugin_ExportFeature::FILE_PATH_ID())->setValue(
+ string(ExchangePlugin_ExportFeature::STL_FILE_PATH_ID())->value());
+ }
+
}
/*
if (aFormatName == "XAO") {
exportXAO(theFileName);
return;
+ }else if (aFormatName == "STL") {
+ exportSTL(theFileName);
+ return;
}
// make shape for export from selected shapes
return false;
}
+void ExchangePlugin_ExportFeature::exportSTL(const std::string& theFileName)
+{
+ // Get shape.
+ AttributeSelectionPtr aSelection = selection(STL_OBJECT_SELECTED());
+ GeomShapePtr aShape = aSelection->value();
+ if (!aShape.get()) {
+ aShape = aSelection->context()->shape();
+ }
+
+ // Get relative value and percent flag.
+ double aValue;
+ bool anIsRelative = false;
+ bool anIsASCII = false;
+
+ if (string(STL_DEFLECTION_TYPE())->value() == STL_DEFLECTION_TYPE_RELATIVE()) {
+ aValue = real(STL_RELATIVE())->value();
+ anIsRelative = true;
+ } else {
+ aValue = real(STL_ABSOLUTE())->value();
+ }
+
+ if (string(STL_FILE_TYPE())->value() == STL_FILE_TYPE_ASCII()) {
+ anIsASCII = true;
+ }
+ // Perform the export
+ std::string anError;
+ bool aResult = false;
+
+ aResult = STLExport(theFileName,
+ "STL",
+ aShape,
+ aValue,
+ anIsRelative,
+ anIsASCII,
+ anError);
+
+ if (!aResult || !anError.empty()) {
+ setError("An error occurred while exporting " + theFileName + ": " + anError);
+ return;
+ }
+}
+
+
void ExchangePlugin_ExportFeature::exportXAO(const std::string& theFileName)
{
try {
static const std::string MY_XAO_FILE_PATH_ID("xao_file_path");
return MY_XAO_FILE_PATH_ID;
}
+ /// attribute name of stl file path
+ inline static const std::string& STL_FILE_PATH_ID()
+ {
+ static const std::string MY_STL_FILE_PATH_ID("stl_file_path");
+ return MY_STL_FILE_PATH_ID;
+ }
+ /// Attribute name for selected object to export in stl file path.
+ inline static const std::string& STL_OBJECT_SELECTED()
+ {
+ static const std::string ATTR_ID("stl_object_selected");
+ return ATTR_ID;
+ }
+ /// Attribute name for deflection type.
+ inline static const std::string& STL_DEFLECTION_TYPE()
+ {
+ static const std::string ATTR_ID("stl_deflection_type");
+ return ATTR_ID;
+ }
+ /// Attribute name for deflection type relative.
+ inline static const std::string& STL_DEFLECTION_TYPE_RELATIVE()
+ {
+ static const std::string ATTR_ID("stl_deflection_type_relative");
+ return ATTR_ID;
+ }
+ /// Attribute name for deflection type absolute.
+ inline static const std::string& STL_DEFLECTION_TYPE_ABSOLUTE()
+ {
+ static const std::string ATTR_ID("stl_deflection_type_absolute");
+ return ATTR_ID;
+ }
+ /// Attribute name for relative.
+ inline static const std::string& STL_RELATIVE()
+ {
+ static const std::string ATTR_ID("stl_relative");
+ return ATTR_ID;
+ }
+ /// Attribute name for absolute.
+ inline static const std::string& STL_ABSOLUTE()
+ {
+ static const std::string ATTR_ID("stl_absolute");
+ return ATTR_ID;
+ }
+ /// Attribute name for stl file type.
+ inline static const std::string& STL_FILE_TYPE()
+ {
+ static const std::string ATTR_ID("stl_file_type");
+ return ATTR_ID;
+ }
+ /// Attribute name for stl file type ascii.
+ inline static const std::string& STL_FILE_TYPE_ASCII()
+ {
+ static const std::string ATTR_ID("stl_file_type_acii");
+ return ATTR_ID;
+ }
+ /// Attribute name for stl file type binary.
+ inline static const std::string& STL_FILE_TYPE_BINARY()
+ {
+ static const std::string ATTR_ID("stl_file_type_binary");
+ return ATTR_ID;
+ }
/// attribute name of file format
inline static const std::string& FILE_FORMAT_ID()
{
/// Performs export to XAO file
EXCHANGEPLUGIN_EXPORT void exportXAO(const std::string& theFileName);
+
+ /// Performs export to STL file
+ EXCHANGEPLUGIN_EXPORT void exportSTL(const std::string& theFileName);
};
#endif /* EXPORT_EXPORTFEATURE_H_ */
placeholder="Please input the geometry name">
</stringvalue>
</case>
+ <case id="STL" title="STL">
+ <export_file_selector id="stl_file_path"
+ type="save"
+ title="Export file"
+ path="">
+ <validator id="ExchangePlugin_ExportFormat"
+ parameters="stl:STL" />
+ </export_file_selector>
+ <shape_selector id="stl_object_selected"
+ label="Object"
+ tooltip="Object to export."
+ shape_types="vertices edges wires faces shells solids compsolids compounds">
+ <validator id="GeomValidators_Finite"/>
+ </shape_selector>
+ <groupbox title="Deflection">
+ <radiobox id="stl_deflection_type">
+ <radio id="stl_deflection_type_relative"
+ title="Relative"
+ tooltip="Calculate by size of shape">
+ <doublevalue id="stl_relative"
+ tooltip="Relative value."
+ min="0.0"
+ step="0.001"
+ default="0.001">
+ </doublevalue>
+ </radio>
+ <radio id="stl_deflection_type_absolute"
+ title="Absolute"
+ tooltip="Value indicate by user">
+ <doublevalue id="stl_absolute"
+ tooltip="Absolute value."
+ min="0.0"
+ max="1.0"
+ step="0.1"
+ default="0.5">
+ </doublevalue>
+ </radio>
+ </radiobox>
+ </groupbox >
+ <groupbox title="File type">
+ <radiobox id="stl_file_type">
+ <radio id="stl_file_type_binary"
+ title="Binary">
+ </radio>
+ <radio id="stl_file_type_acii"
+ title="ASCII">
+ </radio>
+ </radiobox>
+ </groupbox >
+ <!--stringvalue id="xao_author"
+ label="Author"
+ placeholder="Please input the author">
+ </stringvalue>
+ <stringvalue id="xao_geometry_name"
+ label="Geometry name"
+ placeholder="Please input the geometry name">
+ </stringvalue-->
+ </case>
</switch>
</source>
GeomAlgoAPI_IGESImport.h
GeomAlgoAPI_BREPExport.h
GeomAlgoAPI_STEPExport.h
+ GeomAlgoAPI_STLExport.h
GeomAlgoAPI_IGESExport.h
GeomAlgoAPI_Transform.h
GeomAlgoAPI_ShapeTools.h
GeomAlgoAPI_IGESImport.cpp
GeomAlgoAPI_BREPExport.cpp
GeomAlgoAPI_STEPExport.cpp
+ GeomAlgoAPI_STLExport.cpp
GeomAlgoAPI_IGESExport.cpp
GeomAlgoAPI_Transform.cpp
GeomAlgoAPI_ShapeTools.cpp
--- /dev/null
+// Copyright (C) 2014-2020 CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "GeomAlgoAPI_STLExport.h"
+
+#include "GeomAlgoAPI_Tools.h"
+
+#include <TopoDS_Shape.hxx>
+
+// OOCT includes
+#include <BRepBuilderAPI_Copy.hxx>
+#include <StlAPI_Writer.hxx>
+#include <TopoDS_Shape.hxx>
+#include <Bnd_Box.hxx>
+#include <BRepBndLib.hxx>
+#include <BRepTools.hxx>
+#include <BRepMesh_IncrementalMesh.hxx>
+
+
+
+#define MAX2(X, Y) ( Abs(X) > Abs(Y) ? Abs(X) : Abs(Y) )
+#define MAX3(X, Y, Z) ( MAX2 ( MAX2(X, Y) , Z ) )
+
+bool STLExport(const std::string& theFileName,
+ const std::string& /*theFormatName*/,
+ const std::shared_ptr<GeomAPI_Shape>& theShape,
+ const double aDeflection,
+ const bool anIsRelative,
+ const bool anIsASCII,
+ std::string& theError)
+{
+ #ifdef _DEBUG
+ std::cout << "Export STl into file " << theFileName << std::endl;
+ #endif
+
+ if (!theShape.get()) {
+ theError = "STl Export failed: An invalid argument";
+ return false;
+ }
+
+ try
+ {
+ // Set "C" numeric locale to save numbers correctly
+ GeomAlgoAPI_Tools::Localizer loc;
+
+ double lDeflection = aDeflection;
+ StlAPI_Writer aWriter;
+ // copy source shape
+ BRepBuilderAPI_Copy aCopy( theShape->impl<TopoDS_Shape>(), Standard_False );
+ TopoDS_Shape aCopyShape = aCopy.Shape();
+ // ASCII mode
+ aWriter.ASCIIMode() = anIsASCII;
+ if ( anIsRelative ) {
+ Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
+ Bnd_Box bndBox;
+ BRepBndLib::Add( theShape->impl<TopoDS_Shape>(), bndBox );
+ bndBox.Get( aXmin, aYmin, aZmin, aXmax, aYmax, aZmax );
+ lDeflection = MAX3( aXmax-aXmin, aYmax-aYmin, aZmax-aZmin ) * aDeflection;
+ }
+ //Compute triangulation
+ BRepTools::Clean( aCopyShape );
+ BRepMesh_IncrementalMesh aMesh( aCopyShape, lDeflection );
+ aWriter.Write( aCopyShape, theFileName.c_str() );
+
+ return true;
+ }
+ catch( Standard_Failure )
+ {
+ theError = "Exception catched in STlExport";
+ }
+ return false;
+}
--- /dev/null
+// Copyright (C) 2014-2020 CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef GEOMALGOAPI_STLEXPORT_H_
+#define GEOMALGOAPI_STLEXPORT_H_
+
+#include <GeomAlgoAPI.h>
+
+#include <string>
+
+#include <GeomAPI_Shape.h>
+
+/// Implementation of the export STL files algorithms
+GEOMALGOAPI_EXPORT
+bool STLExport(const std::string& theFileName,
+ const std::string& /*theFormatName*/,
+ const std::shared_ptr<GeomAPI_Shape>& theShape,
+ const double aDeflection,
+ const bool anIsRelative,
+ const bool anIsASCII,
+ std::string& theError);
+
+#endif /* GEOMALGOAPI_STLEXPORT_H_ */
SET_ATTRIBUTE(N_13, T_13, AN_13) \
END_INIT() \
public:
+//--------------------------------------------------------------------------------------
+#define INTERFACE_15(KIND, \
+ N_0, AN_0, T_0, C_0, \
+ N_1, AN_1, T_1, C_1, \
+ N_2, AN_2, T_2, C_2, \
+ N_3, AN_3, T_3, C_3, \
+ N_4, AN_4, T_4, C_4, \
+ N_5, AN_5, T_5, C_5, \
+ N_6, AN_6, T_6, C_6, \
+ N_7, AN_7, T_7, C_7, \
+ N_8, AN_8, T_8, C_8, \
+ N_9, AN_9, T_9, C_9, \
+ N_10, AN_10, T_10, C_10, \
+ N_11, AN_11, T_11, C_11, \
+ N_12, AN_12, T_12, C_12, \
+ N_13, AN_13, T_13, C_13, \
+ N_14, AN_14, T_14, C_14) \
+ public: \
+ INTERFACE_COMMON(KIND) \
+ DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
+ DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
+ DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
+ DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
+ DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
+ DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
+ DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
+ DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
+ DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
+ DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
+ DEFINE_ATTRIBUTE(N_10, T_10, C_10) \
+ DEFINE_ATTRIBUTE(N_11, T_11, C_11) \
+ DEFINE_ATTRIBUTE(N_12, T_12, C_12) \
+ DEFINE_ATTRIBUTE(N_13, T_13, C_13) \
+ DEFINE_ATTRIBUTE(N_14, T_14, C_14) \
+ protected: \
+ START_INIT() \
+ SET_ATTRIBUTE(N_0, T_0, AN_0) \
+ SET_ATTRIBUTE(N_1, T_1, AN_1) \
+ SET_ATTRIBUTE(N_2, T_2, AN_2) \
+ SET_ATTRIBUTE(N_3, T_3, AN_3) \
+ SET_ATTRIBUTE(N_4, T_4, AN_4) \
+ SET_ATTRIBUTE(N_5, T_5, AN_5) \
+ SET_ATTRIBUTE(N_6, T_6, AN_6) \
+ SET_ATTRIBUTE(N_7, T_7, AN_7) \
+ SET_ATTRIBUTE(N_8, T_8, AN_8) \
+ SET_ATTRIBUTE(N_9, T_9, AN_9) \
+ SET_ATTRIBUTE(N_10, T_10, AN_10) \
+ SET_ATTRIBUTE(N_11, T_11, AN_11) \
+ SET_ATTRIBUTE(N_12, T_12, AN_12) \
+ SET_ATTRIBUTE(N_13, T_13, AN_13) \
+ SET_ATTRIBUTE(N_14, T_14, AN_14) \
+ END_INIT() \
+ public:
//--------------------------------------------------------------------------------------
#define INTERFACE_16(KIND, \
"""Package for Exchange plugin for the Parametric Geometry API of the Modeler.
"""
-from ExchangeAPI import addImport, exportToFile, exportToXAO
+from ExchangeAPI import addImport, exportToFile, exportToXAO, exportToSTL
from ExchangeAPI import exportPart, importPart
from .tools import *