-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+// Copyright (C) 2014-2017 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<mailto:webmaster.salome@opencascade.com>
+//
-// File: GeomAlgoAPI_MakeShape.h
-// Created: 17 Oct 2014
-// Author: Sergey ZARITCHNY
#ifndef GeomAlgoAPI_MakeShape_H_
#define GeomAlgoAPI_MakeShape_H_
#include <list>
#include <memory>
+#include <map>
+#include <string>
/// \class GeomAlgoAPI_MakeShape
/// \ingroup DataAlgo
public:
/// Builder type enum
enum BuilderType {
+ Unknown,
OCCT_BRepBuilderAPI_MakeShape,
- OCCT_BOPAlgo_Builder,
- UNKNOWN
+ OCCT_BOPAlgo_Builder
};
public:
/// \brief Constructor by builder and builder type.
/// \param[in] theBuilder pointer to the builder.
/// \param[in] theBuilderType builder type.
- template<class T> explicit GeomAlgoAPI_MakeShape(T* theBuilder, const BuilderType theBuilderType = OCCT_BRepBuilderAPI_MakeShape)
+ template<class T> explicit GeomAlgoAPI_MakeShape(T* theBuilder,
+ const BuilderType theBuilderType = OCCT_BRepBuilderAPI_MakeShape)
: GeomAPI_Interface(theBuilder),
myBuilderType(theBuilderType)
{
/// \brief Initializes internals.
/// \param[in] theBuilder pointer to the builder.
/// \param[in] theBuilderType builder type.
- template<class T> void initialize(T* theBuilder, const BuilderType theBuilderType = OCCT_BRepBuilderAPI_MakeShape)
+ template<class T> void initialize(T* theBuilder,
+ const BuilderType theBuilderType = OCCT_BRepBuilderAPI_MakeShape)
{
setImpl(theBuilder);
- myBuilderType = theBuilder;
+ myBuilderType = theBuilderType;
initialize();
}
/// \return the list of shapes modified from the shape \a theShape.
/// \param[in] theShape base shape.
- /// \param[out] theHistory modified shapes.
+ /// \param[out] theHistory modified shapes. Does not cleared!
GEOMALGOAPI_EXPORT virtual void modified(const std::shared_ptr<GeomAPI_Shape> theShape,
ListOfShape& theHistory);
/// \param[in] theShape base shape.
GEOMALGOAPI_EXPORT virtual bool isDeleted(const std::shared_ptr<GeomAPI_Shape> theShape);
+ /// \return true if the data were correct.
+ GEOMALGOAPI_EXPORT virtual bool check() { return true; };
+
+ /// \return the list of created faces.
+ GEOMALGOAPI_EXPORT std::map< std::string, std::shared_ptr<GeomAPI_Shape> > getCreatedFaces()
+ {return myCreatedFaces;}
+
+ /// \return the error.
+ GEOMALGOAPI_EXPORT std::string getError() { return myError; }
+
+ /// \brief Prepare the naming of faces.
+ GEOMALGOAPI_EXPORT virtual void prepareNamingFaces();
+
+ /// \brief Check the validity of the produced shape.
+ GEOMALGOAPI_EXPORT bool checkValid(std::string theMessage);
+
protected:
/// \brief Sets builder type.
/// \param[in] theBuilderType new builder type.
/// \param[in] theShape new shape.
void setShape(const std::shared_ptr<GeomAPI_Shape> theShape);
+protected:
+ /// Data map to keep correct orientation of sub-shapes.
+ std::shared_ptr<GeomAPI_DataMapOfShapeShape> myMap;
+ /// Error occurred during the execution of an algorithm.
+ std::string myError;
+ /// Map of created faces with their name for naming.
+ std::map< std::string, std::shared_ptr<GeomAPI_Shape> > myCreatedFaces;
+
private:
/// \brief Initializes internals.
void initialize();
GeomAlgoAPI_MakeShape::BuilderType myBuilderType; ///< Type of make shape builder.
bool myDone; ///< Builder status.
std::shared_ptr<GeomAPI_Shape> myShape; ///< Resulting shape.
- std::shared_ptr<GeomAPI_DataMapOfShapeShape> myMap; ///< Data map to keep correct orientation of sub-shapes.
};
typedef std::list<std::shared_ptr<GeomAlgoAPI_MakeShape> > ListOfMakeShape;