Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // Created by: Peter KURNEV
0002 // Copyright (c) 2010-2014 OPEN CASCADE SAS
0003 // Copyright (c) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
0004 // Copyright (c) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT,
0005 //                         EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
0006 //
0007 // This file is part of Open CASCADE Technology software library.
0008 //
0009 // This library is free software; you can redistribute it and/or modify it under
0010 // the terms of the GNU Lesser General Public License version 2.1 as published
0011 // by the Free Software Foundation, with special exception defined in the file
0012 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0013 // distribution for complete text of the license and disclaimer of any warranty.
0014 //
0015 // Alternatively, this file may be used under the terms of Open CASCADE
0016 // commercial license or contractual agreement.
0017 
0018 #ifndef _BOPAlgo_BuilderArea_HeaderFile
0019 #define _BOPAlgo_BuilderArea_HeaderFile
0020 
0021 #include <Standard.hxx>
0022 #include <Standard_DefineAlloc.hxx>
0023 #include <Standard_Handle.hxx>
0024 
0025 #include <BOPAlgo_Algo.hxx>
0026 #include <NCollection_BaseAllocator.hxx>
0027 #include <TopTools_ListOfShape.hxx>
0028 #include <TopTools_IndexedMapOfOrientedShape.hxx>
0029 class IntTools_Context;
0030 
0031 
0032 //! The root class for algorithms to build
0033 //! faces/solids from set of edges/faces
0034 class BOPAlgo_BuilderArea  : public BOPAlgo_Algo
0035 {
0036 public:
0037 
0038   DEFINE_STANDARD_ALLOC
0039 
0040   //! Sets the context for the algorithms
0041   void SetContext (const Handle(IntTools_Context)& theContext) {
0042     myContext = theContext;
0043   }
0044 
0045   //! Returns the input shapes
0046   const TopTools_ListOfShape& Shapes() const {
0047     return myShapes;
0048   }
0049 
0050   //! Sets the shapes for building areas
0051   void SetShapes(const TopTools_ListOfShape& theLS) {
0052     myShapes = theLS;
0053   }
0054 
0055   //! Returns the found loops
0056   const TopTools_ListOfShape& Loops() const {
0057     return myLoops;
0058   }
0059 
0060   //! Returns the found areas
0061   const TopTools_ListOfShape& Areas() const {
0062     return myAreas;
0063   }
0064 
0065   //! Defines the preventing of addition of internal parts into result.
0066   //! The default value is FALSE, i.e. the internal parts are added into result.
0067   void SetAvoidInternalShapes(const Standard_Boolean theAvoidInternal) {
0068     myAvoidInternalShapes = theAvoidInternal;
0069   }
0070 
0071   //! Returns the AvoidInternalShapes flag
0072   Standard_Boolean IsAvoidInternalShapes() const {
0073     return myAvoidInternalShapes;
0074   }
0075 
0076 protected:
0077 
0078   Standard_EXPORT BOPAlgo_BuilderArea();
0079   Standard_EXPORT virtual ~BOPAlgo_BuilderArea();
0080   
0081   Standard_EXPORT BOPAlgo_BuilderArea(const Handle(NCollection_BaseAllocator)& theAllocator);
0082   
0083   virtual void PerformShapesToAvoid(const Message_ProgressRange& theRange) = 0;
0084   
0085   virtual void PerformLoops(const Message_ProgressRange& theRange) = 0;
0086   
0087   virtual void PerformAreas(const Message_ProgressRange& theRange) = 0;
0088   
0089   virtual void PerformInternalShapes(const Message_ProgressRange& theRange) = 0;
0090 
0091 
0092   Handle(IntTools_Context) myContext;
0093   TopTools_ListOfShape myShapes;
0094   TopTools_ListOfShape myLoops;
0095   TopTools_ListOfShape myLoopsInternal;
0096   TopTools_ListOfShape myAreas;
0097   TopTools_IndexedMapOfOrientedShape myShapesToAvoid;
0098   Standard_Boolean myAvoidInternalShapes;
0099 
0100 private:
0101 
0102 };
0103 
0104 #endif // _BOPAlgo_BuilderArea_HeaderFile