|
|
|||
File indexing completed on 2026-09-15 09:14:57
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 _BOPAlgo_Splitter_HeaderFile 0016 #define _BOPAlgo_Splitter_HeaderFile 0017 0018 #include <Standard.hxx> 0019 #include <Standard_DefineAlloc.hxx> 0020 #include <Standard_Handle.hxx> 0021 0022 #include <BOPAlgo_ToolsProvider.hxx> 0023 0024 //! The **Splitter algorithm** is the algorithm for splitting a group of 0025 //! arbitrary shapes by the other group of arbitrary shapes. 0026 //! The arguments of the operation are divided on two groups: 0027 //! *Objects* - shapes that will be split; 0028 //! *Tools* - shapes by which the *Objects* will be split. 0029 //! The result of the operation contains only the split parts 0030 //! of the shapes from the group of *Objects*. 0031 //! The split parts of the shapes from the group of *Tools* are excluded 0032 //! from the result. 0033 //! The shapes can be split by the other shapes from the same group 0034 //! (in case these shapes are interfering). 0035 //! 0036 //! The class is a General Fuse based algorithm. Thus, all options 0037 //! of the General Fuse algorithm such as Fuzzy mode, safe processing mode, 0038 //! parallel processing mode, gluing mode and history support are also 0039 //! available in this algorithm. 0040 //! There is no requirement on the existence of the *Tools* shapes. 0041 //! And if there are no *Tools* shapes, the result of the splitting 0042 //! operation will be equivalent to the General Fuse result. 0043 //! 0044 //! The implementation of the algorithm is minimal - only the methods 0045 //! CheckData() and Perform() have been overridden. 0046 //! The method BOPAlgo_Builder::BuildResult(), which adds the split parts of the arguments 0047 //! into result, does not have to be overridden, because its native implementation 0048 //! performs the necessary actions for the Splitter algorithm - it adds 0049 //! the split parts of only Objects into result, avoiding the split parts of Tools. 0050 class BOPAlgo_Splitter : public BOPAlgo_ToolsProvider 0051 { 0052 public: 0053 DEFINE_STANDARD_ALLOC 0054 0055 //! Empty constructor 0056 Standard_EXPORT BOPAlgo_Splitter(); 0057 Standard_EXPORT ~BOPAlgo_Splitter() override; 0058 0059 Standard_EXPORT BOPAlgo_Splitter(const occ::handle<NCollection_BaseAllocator>& theAllocator); 0060 0061 //! Performs the operation 0062 Standard_EXPORT void Perform( 0063 const Message_ProgressRange& theRange = Message_ProgressRange()) override; 0064 0065 protected: 0066 //! Checks the input data 0067 Standard_EXPORT void CheckData() override; 0068 0069 //! Adds images of the argument shapes into result. 0070 //! When called the for the last time (for compound) it rebuilds the result 0071 //! shape to avoid multiple enclosure into compounds. 0072 Standard_EXPORT void BuildResult(const TopAbs_ShapeEnum theType) override; 0073 }; 0074 0075 #endif // _BOPAlgo_Splitter_HeaderFile
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|