|
||||
File indexing completed on 2025-01-18 10:03:04
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.<br> 0026 //! The arguments of the operation are divided on two groups:<br> 0027 //! *Objects* - shapes that will be split;<br> 0028 //! *Tools* - shapes by which the *Objects* will be split.<br> 0029 //! The result of the operation contains only the split parts 0030 //! of the shapes from the group of *Objects*.<br> 0031 //! The split parts of the shapes from the group of *Tools* are excluded 0032 //! from the result.<br> 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.<br> 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.<br> 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 0054 DEFINE_STANDARD_ALLOC 0055 0056 //! Empty constructor 0057 Standard_EXPORT BOPAlgo_Splitter(); 0058 Standard_EXPORT virtual ~BOPAlgo_Splitter(); 0059 0060 Standard_EXPORT BOPAlgo_Splitter(const Handle(NCollection_BaseAllocator)& theAllocator); 0061 0062 //! Performs the operation 0063 Standard_EXPORT virtual void Perform(const Message_ProgressRange& theRange = Message_ProgressRange()) Standard_OVERRIDE; 0064 0065 protected: 0066 0067 //! Checks the input data 0068 Standard_EXPORT virtual void CheckData() Standard_OVERRIDE; 0069 0070 //! Adds images of the argument shapes into result. 0071 //! When called the for the last time (for compound) it rebuilds the result 0072 //! shape to avoid multiple enclosure into compounds. 0073 Standard_EXPORT virtual void BuildResult(const TopAbs_ShapeEnum theType) Standard_OVERRIDE; 0074 0075 }; 0076 0077 #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 |