Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:03:06

0001 // Created by: Eugeny MALTCHIKOV
0002 // Copyright (c) 2017 OPEN CASCADE SAS
0003 //
0004 // This file is part of Open CASCADE Technology software library.
0005 //
0006 // This library is free software; you can redistribute it and/or modify it under
0007 // the terms of the GNU Lesser General Public License version 2.1 as published
0008 // by the Free Software Foundation, with special exception defined in the file
0009 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0010 // distribution for complete text of the license and disclaimer of any warranty.
0011 //
0012 // Alternatively, this file may be used under the terms of Open CASCADE
0013 // commercial license or contractual agreement.
0014 
0015 #ifndef _BRepAlgoAPI_Splitter_HeaderFile
0016 #define _BRepAlgoAPI_Splitter_HeaderFile
0017 
0018 #include <Standard.hxx>
0019 #include <Standard_DefineAlloc.hxx>
0020 #include <Standard_Handle.hxx>
0021 
0022 #include <BRepAlgoAPI_BuilderAlgo.hxx>
0023 
0024 //! The class contains API level of the **Splitter** algorithm,
0025 //! which allows splitting a group of arbitrary shapes by the
0026 //! other group of arbitrary shapes.<br>
0027 //! The arguments of the operation are divided on two groups:<br>
0028 //! *Objects* - shapes that will be split;<br>
0029 //! *Tools*   - shapes by which the *Objects* will be split.<br>
0030 //! The result of the operation contains only the split parts
0031 //! of the shapes from the group of *Objects*.<br>
0032 //! The split parts of the shapes from the group of *Tools* are excluded
0033 //! from the result.<br>
0034 //! The shapes can be split by the other shapes from the same group
0035 //! (in case these shapes are interfering).
0036 //!
0037 //! The class is a General Fuse based algorithm. Thus, all options
0038 //! of the General Fuse algorithm such as Fuzzy mode, safe processing mode,
0039 //! parallel processing mode, gluing mode and history support are also
0040 //! available in this algorithm.<br>
0041 //! There is no requirement on the existence of the *Tools* shapes.
0042 //! And if there are no *Tools* shapes, the result of the splitting
0043 //! operation will be equivalent to the General Fuse result.
0044 //!
0045 //! The algorithm returns the following Error statuses:<br>
0046 //! - 0 - in case of success;<br>
0047 //! - *BOPAlgo_AlertTooFewArguments*    - in case there is no enough arguments for the operation;<br>
0048 //! - *BOPAlgo_AlertIntersectionFailed* - in case the Intersection of the arguments has failed;<br>
0049 //! - *BOPAlgo_AlertBuilderFailed*      - in case the Building of the result has failed.
0050 class BRepAlgoAPI_Splitter : public BRepAlgoAPI_BuilderAlgo
0051 {
0052 public:
0053 
0054   DEFINE_STANDARD_ALLOC
0055 
0056 public: //! @name Constructors
0057 
0058   //! Empty constructor
0059   Standard_EXPORT BRepAlgoAPI_Splitter();
0060 
0061   //! Constructor with already prepared intersection tool - PaveFiller
0062   Standard_EXPORT BRepAlgoAPI_Splitter(const BOPAlgo_PaveFiller& thePF);
0063 
0064 
0065 public: //! @name Setters/Getters for the Tools
0066 
0067   //! Sets the Tool arguments
0068   void SetTools (const TopTools_ListOfShape& theLS)
0069   {
0070     myTools = theLS;
0071   }
0072 
0073   //! Returns the Tool arguments
0074   const TopTools_ListOfShape& Tools() const
0075   {
0076     return myTools;
0077   }
0078 
0079 
0080 public: //! @name Performing the operation
0081 
0082   //! Performs the Split operation.
0083   //! Performs the intersection of the argument shapes (both objects and tools)
0084   //! and splits objects by the tools.
0085   Standard_EXPORT virtual void Build(const Message_ProgressRange& theRange = Message_ProgressRange()) Standard_OVERRIDE;
0086 
0087 
0088 protected: //! @name Fields
0089 
0090   TopTools_ListOfShape myTools; //!< Tool arguments of the operation
0091 
0092 };
0093 
0094 #endif // _BRepAlgoAPI_Splitter_HeaderFile