X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FExchangePlugin%2FExchangePlugin_ImportFeature.h;h=e2cfd99aad7a96261ec4e47158b185b6ff529d7d;hb=fc72d43b677baa05ae7fd317346fd8b723b799ed;hp=2843e92e8ba8c387441f1cec933f880d929d7e81;hpb=7074394f8f08413d885f63be01df6bd5007b868c;p=modules%2Fshaper.git diff --git a/src/ExchangePlugin/ExchangePlugin_ImportFeature.h b/src/ExchangePlugin/ExchangePlugin_ImportFeature.h index 2843e92e8..e2cfd99aa 100644 --- a/src/ExchangePlugin/ExchangePlugin_ImportFeature.h +++ b/src/ExchangePlugin/ExchangePlugin_ImportFeature.h @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2023 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 @@ -12,10 +12,9 @@ // // 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 +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or -// email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #ifndef EXCHANGEPLUGIN_IMPORTFEATURE_H_ @@ -25,6 +24,7 @@ #include #include +#include #include @@ -35,15 +35,9 @@ * * The list of supported formats is defined in the configuration file. */ -class ExchangePlugin_ImportFeature : public ModelAPI_CompositeFeature +class ExchangePlugin_ImportFeatureBase : public ModelAPI_CompositeFeature { - public: - /// Feature kind - inline static const std::string& ID() - { - static const std::string MY_IMPORT_ID("Import"); - return MY_IMPORT_ID; - } +public: /// attribute name of file path inline static const std::string& FILE_PATH_ID() { @@ -56,22 +50,25 @@ class ExchangePlugin_ImportFeature : public ModelAPI_CompositeFeature static const std::string MY_FEATURES_ID("Features"); return MY_FEATURES_ID; } + /// attribute name of target part + inline static const std::string& TARGET_PART_ID() + { + static const std::string MY_TARGET_PART_ID("target_part"); + return MY_TARGET_PART_ID; + } /// Default constructor - EXCHANGEPLUGIN_EXPORT ExchangePlugin_ImportFeature(); + EXCHANGEPLUGIN_EXPORT ExchangePlugin_ImportFeatureBase() = default; /// Default destructor - EXCHANGEPLUGIN_EXPORT virtual ~ExchangePlugin_ImportFeature(); + EXCHANGEPLUGIN_EXPORT virtual ~ExchangePlugin_ImportFeatureBase() = default; /// Returns the unique kind of a feature - EXCHANGEPLUGIN_EXPORT virtual const std::string& getKind() - { - return ExchangePlugin_ImportFeature::ID(); - } + EXCHANGEPLUGIN_EXPORT virtual const std::string& getKind() = 0; /// Request for initialization of data model of the feature: adding all attributes EXCHANGEPLUGIN_EXPORT virtual void initAttributes(); /// Computes or recomputes the results - EXCHANGEPLUGIN_EXPORT virtual void execute(); + EXCHANGEPLUGIN_EXPORT virtual void execute() = 0; /// Reimplemented from ModelAPI_Feature::isPreviewNeeded(). Returns false. EXCHANGEPLUGIN_EXPORT virtual bool isPreviewNeeded() const { return false; } @@ -96,19 +93,123 @@ class ExchangePlugin_ImportFeature : public ModelAPI_CompositeFeature protected: /// Performs the import of the file - EXCHANGEPLUGIN_EXPORT void importFile(const std::string& theFileName); - - /// Performs the import of XAO file - EXCHANGEPLUGIN_EXPORT void importXAO(const std::string& theFileName); + EXCHANGEPLUGIN_EXPORT virtual void importFile(const std::string& theFileName) = 0; /// Creates and prepares a result body from the shape std::shared_ptr createResultBody( std::shared_ptr aGeomShape); -private: /// Loads Naming data structure to the document void loadNamingDS(std::shared_ptr theGeomShape, std::shared_ptr theResultBody); }; +class ExchangePlugin_ImportFeature : public ExchangePlugin_ImportFeatureBase +{ +public: + /// Feature kind + inline static const std::string& ID() + { + static const std::string MY_IMPORT_ID("Import"); + return MY_IMPORT_ID; + } + /// Feature kind + inline static const std::string& IMPORT_TYPE_ID() + { + static const std::string MY_IMPORT_TYPE_ID("ImportType"); + return MY_IMPORT_TYPE_ID; + } + /// attribute name of file path + inline static const std::string& STEP_FILE_PATH_ID() + { + static const std::string MY_STEP_FILE_PATH_ID("step_file_path"); + return MY_STEP_FILE_PATH_ID; + } + + /// Default constructor + EXCHANGEPLUGIN_EXPORT ExchangePlugin_ImportFeature() = default; + /// Default destructor + EXCHANGEPLUGIN_EXPORT virtual ~ExchangePlugin_ImportFeature() = default; + + /// attribute name of step Scale to International System Units + inline static const std::string& STEP_SCALE_INTER_UNITS_ID() + { + static const std::string MY_STEP_SCALE_INTER_UNITS_ID("step_scale_inter_units"); + return MY_STEP_SCALE_INTER_UNITS_ID; + } + /// attribute name of step materiels + inline static const std::string& STEP_MATERIALS_ID() + { + static const std::string MY_STEP_MATERIALS_ID("step_materials"); + return MY_STEP_MATERIALS_ID; + } + /// attribute name of step colors + inline static const std::string& STEP_COLORS_ID() + { + static const std::string MY_STEP_COLORS_ID("step_colors"); + return MY_STEP_COLORS_ID; + } + /// Returns the unique kind of a feature + EXCHANGEPLUGIN_EXPORT virtual const std::string& getKind() override + { + return ExchangePlugin_ImportFeature::ID(); + } + + /// Computes or recomputes the results + EXCHANGEPLUGIN_EXPORT virtual void execute() override; + + /// Request for initialization of data model of the feature: adding all attributes + EXCHANGEPLUGIN_EXPORT virtual void initAttributes(); + +protected: + /// Performs the import of the file + EXCHANGEPLUGIN_EXPORT void importFile(const std::string& theFileName) override; + + /// Performs the import of XAO file + EXCHANGEPLUGIN_EXPORT void importXAO(const std::string& theFileName); + +private: + /// Set groups of color + void setColorGroups(std::shared_ptr theResultBody); + + /// set a group of color + void setColorGroup(std::shared_ptr theResultBody, + std::vector& theColor, + const std::wstring& theName ); + + /// set Materiel group of color + void setMaterielGroup(std::shared_ptr theResultBody, + std::map< std::wstring, std::list>& theMaterialShape); + +}; + +class ExchangePlugin_Import_ImageFeature : public ExchangePlugin_ImportFeatureBase +{ + public: + /// Feature kind + inline static const std::string& ID() + { + static const std::string MY_IMPORT_ID("ImportImage"); + return MY_IMPORT_ID; + } + + /// Default constructor + EXCHANGEPLUGIN_EXPORT ExchangePlugin_Import_ImageFeature() = default; + /// Default destructor + EXCHANGEPLUGIN_EXPORT virtual ~ExchangePlugin_Import_ImageFeature() = default; + + /// Returns the unique kind of a feature + EXCHANGEPLUGIN_EXPORT virtual const std::string& getKind() override + { + return ExchangePlugin_Import_ImageFeature::ID(); + } + + /// Computes or recomputes the results + EXCHANGEPLUGIN_EXPORT virtual void execute() override; + +protected: + /// Performs the import of the file + EXCHANGEPLUGIN_EXPORT void importFile(const std::string& theFileName) override; + +}; #endif /* IMPORT_IMPORTFEATURE_H_ */