- public:
- /* \brief Creates cut boolean operation
- * \param[in] theShape the main shape
- * \param[in] theTool toole shape for boolean
- * \return a solid as result of operation
- */
- static boost::shared_ptr<GeomAPI_Shape> makeCut(boost::shared_ptr<GeomAPI_Shape> theShape,
- boost::shared_ptr<GeomAPI_Shape> theTool);
-
- /* \brief Creates fuse boolean operation
- * \param[in] theShape the main shape
- * \param[in] theTool second shape
- * \return a solid as result of operation
- */
- static boost::shared_ptr<GeomAPI_Shape> makeFuse(boost::shared_ptr<GeomAPI_Shape> theShape,
- boost::shared_ptr<GeomAPI_Shape> theTool);
-
- /* \brief Creates common boolean operation
- * \param[in] theShape the main shape
- * \param[in] theTool second shape
- * \return a solid as result of operation
- */
- static boost::shared_ptr<GeomAPI_Shape> makeCommon(boost::shared_ptr<GeomAPI_Shape> theShape,
- boost::shared_ptr<GeomAPI_Shape> theTool);
+public:
+
+ /// Constructor.
+ GEOMALGOAPI_EXPORT GeomAlgoAPI_Boolean(const GeomShapePtr theObject,
+ const GeomShapePtr theTool,
+ const GeomAlgoAPI_Tools::BOPType theOperationType);
+
+ /// Constructor.
+ GEOMALGOAPI_EXPORT GeomAlgoAPI_Boolean(const GeomShapePtr theObject,
+ const ListOfShape& theTools,
+ const GeomAlgoAPI_Tools::BOPType theOperationType);
+
+
+ /// Constructor.
+ GEOMALGOAPI_EXPORT GeomAlgoAPI_Boolean(const ListOfShape& theObjects,
+ const ListOfShape& theTools,
+ const GeomAlgoAPI_Tools::BOPType theOperationType);
+
+ /// Redefinition of the generic method for the Fuse problem: OCCT 30481
+ GEOMALGOAPI_EXPORT virtual void modified(const GeomShapePtr theOldShape,
+ ListOfShape& theNewShapes);
+
+private:
+ /// Builds resulting shape.
+ void build(const ListOfShape& theObjects,
+ const ListOfShape& theTools,
+ const GeomAlgoAPI_Tools::BOPType theOperationType);