#include <GeomAPI_DataMapOfShapeShape.h>
#include <memory>
-/**\class GeomAlgoAPI_Prism
- * \ingroup DataAlgo
- * \brief Allows to create the prism based on a given face and bounding planes
+/** \class GeomAlgoAPI_Prism
+ * \ingroup DataAlgo
+ * \brief Allows to create the prism based on a given face and bounding planes.
+ * \n Note that only planar faces are allowed as bounding faces and resulting
+ * extrusion will be bounded by the infinite planes taken from the faces.
*/
-
class GeomAlgoAPI_Prism : public GeomAPI_Interface
{
public:
- /* \brief Creates extrusion for the given shape along the normal for this shape
- * \param[in] theBasis face or wire to be extruded
- * \param[in] theFromShape bottom bounding shape
- * \param[in] theToShape top bounding shape
- * \return a solid or a face/shell which is obtained from specified one
+ /** \brief Creates extrusion for the given shape along the normal for this shape.
+ * \param[in] theBasis face or wire to be extruded.
+ * \param[in] theToSize offset for "to" plane.
+ * \param[in] theFromSize offset for "from" plane.
+ */
+ GEOMALGOAPI_EXPORT GeomAlgoAPI_Prism(std::shared_ptr<GeomAPI_Shape> theBasis,
+ double theToSize,
+ double theFromSize);
+
+ /** \brief Creates extrusion for the given shape along the normal for this shape.
+ * \param[in] theBasis face or wire to be extruded.
+ * \param[in] theToShape top bounding shape. Can be empty. In this case offset will be applied to the basis.
+ * \param[in] theToSize offset for "to" plane.
+ * \param[in] theFromShape bottom bounding shape. Can be empty. In this case offset will be applied to the basis.
+ * \param[in] theFromSize offset for "from" plane.
*/
- /// Constructor
GEOMALGOAPI_EXPORT GeomAlgoAPI_Prism(std::shared_ptr<GeomAPI_Shape> theBasis,
+ std::shared_ptr<GeomAPI_Shape> theToShape,
+ double theToSize,
std::shared_ptr<GeomAPI_Shape> theFromShape,
- std::shared_ptr<GeomAPI_Shape> theToShape);
+ double theFromSize);
- /// Returns True if algorithm succeed
- GEOMALGOAPI_EXPORT const bool isDone() const;
+ /// \return true if algorithm succeed.
+ GEOMALGOAPI_EXPORT bool isDone() const;
- /// Returns True if resulting shape is valid
- GEOMALGOAPI_EXPORT const bool isValid() const;
+ /// \return true if resulting shape is valid.
+ GEOMALGOAPI_EXPORT bool isValid() const;
- /// Returns True if resulting shape has volume
- GEOMALGOAPI_EXPORT const bool hasVolume() const;
+ /// \return true if resulting shape has volume.
+ GEOMALGOAPI_EXPORT bool hasVolume() const;
- /// Returns result of the Prism algorithm which may be a Solid or a Face
- GEOMALGOAPI_EXPORT const std::shared_ptr<GeomAPI_Shape>& shape() const;
+ /// \return result of the Prism algorithm.
+ GEOMALGOAPI_EXPORT std::shared_ptr<GeomAPI_Shape> shape() const;
- /// Returns the first shape
- GEOMALGOAPI_EXPORT const std::shared_ptr<GeomAPI_Shape>& firstShape();
+ /// \returns the list of from faces.
+ GEOMALGOAPI_EXPORT const ListOfShape& fromFaces() const;
- /// returns last shape
- GEOMALGOAPI_EXPORT const std::shared_ptr<GeomAPI_Shape>& lastShape();
-
- /// Returns map of sub-shapes of the result. To be used for History keeping
- GEOMALGOAPI_EXPORT void mapOfShapes(GeomAPI_DataMapOfShapeShape& theMap) const;
+ /// \return the list of to faces.
+ GEOMALGOAPI_EXPORT const ListOfShape& toFaces() const;
- /// Return interface for for History processing
- GEOMALGOAPI_EXPORT GeomAlgoAPI_MakeShape* makeShape() const;
+ /// \return map of sub-shapes of the result. To be used for History keeping.
+ GEOMALGOAPI_EXPORT std::shared_ptr<GeomAPI_DataMapOfShapeShape> mapOfShapes() const;
+
+ /// \return interface for History processing.
+ GEOMALGOAPI_EXPORT std::shared_ptr<GeomAlgoAPI_MakeShape> makeShape() const;
+
+private:
+ /// Builds resulting shape.
+ void build(const std::shared_ptr<GeomAPI_Shape>& theBasis,
+ const std::shared_ptr<GeomAPI_Shape>& theToShape,
+ double theToSize,
+ const std::shared_ptr<GeomAPI_Shape>& theFromShape,
+ double theFromSize);
- /// Destructor
- GEOMALGOAPI_EXPORT ~GeomAlgoAPI_Prism();
private:
- /// builds resulting shape
- void build(const std::shared_ptr<GeomAPI_Shape>& theBasis);
- /// fields
- std::shared_ptr<GeomAPI_Shape> myFromShape;
- std::shared_ptr<GeomAPI_Shape> myToShape;
+ /// Fields.
bool myDone;
std::shared_ptr<GeomAPI_Shape> myShape;
- std::shared_ptr<GeomAPI_Shape> myFirst;
- std::shared_ptr<GeomAPI_Shape> myLast;
- GeomAPI_DataMapOfShapeShape myMap;
- GeomAlgoAPI_MakeShape* myMkShape;
+ ListOfShape myFromFaces;
+ ListOfShape myToFaces;
+ std::shared_ptr<GeomAPI_DataMapOfShapeShape> myMap;
+ std::shared_ptr<GeomAlgoAPI_MakeShape> myMkShape;
};
#endif