Back to home page

EIC code displayed by LXR

 
 

    


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

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 _BOPDS_IteratorSI_HeaderFile
0019 #define _BOPDS_IteratorSI_HeaderFile
0020 
0021 #include <Standard.hxx>
0022 #include <Standard_DefineAlloc.hxx>
0023 #include <Standard_Handle.hxx>
0024 
0025 #include <BOPDS_Iterator.hxx>
0026 #include <NCollection_BaseAllocator.hxx>
0027 #include <Standard_Integer.hxx>
0028 
0029 
0030 
0031 //! The class BOPDS_IteratorSI is
0032 //! 1.to compute self-intersections between BRep sub-shapes
0033 //! of each argument of an operation (see the class BOPDS_DS)
0034 //! in terms of theirs bounding boxes
0035 //! 2.provides interface to iterare the pairs of
0036 //! intersected sub-shapes of given type
0037 class BOPDS_IteratorSI  : public BOPDS_Iterator
0038 {
0039 public:
0040 
0041   DEFINE_STANDARD_ALLOC
0042 
0043   
0044 
0045   //! Empty constructor
0046   Standard_EXPORT BOPDS_IteratorSI();
0047 
0048   Standard_EXPORT virtual ~BOPDS_IteratorSI();
0049 
0050   //! Constructor
0051   //! @param theAllocator the allocator to manage the memory
0052   Standard_EXPORT BOPDS_IteratorSI(const Handle(NCollection_BaseAllocator)& theAllocator);
0053   
0054   //! Updates the lists of possible intersections
0055   //! according to the value of <theLevel>.
0056   //! It defines which interferferences will be checked:
0057   //! 0 - only V/V;
0058   //! 1 - V/V and V/E;
0059   //! 2 - V/V, V/E and E/E;
0060   //! 3 - V/V, V/E, E/E and V/F;
0061   //! 4 - V/V, V/E, E/E, V/F and E/F;
0062   //! other - all interferences.
0063   Standard_EXPORT void UpdateByLevelOfCheck (const Standard_Integer theLevel);
0064 
0065 
0066 
0067 
0068 protected:
0069 
0070   
0071   Standard_EXPORT virtual void Intersect(const Handle(IntTools_Context)& theCtx = Handle(IntTools_Context)(),
0072                                          const Standard_Boolean theCheckOBB = Standard_False,
0073                                          const Standard_Real theFuzzyValue = Precision::Confusion()) Standard_OVERRIDE;
0074 
0075 
0076 
0077 
0078 private:
0079 
0080 
0081 
0082 
0083 
0084 };
0085 
0086 
0087 
0088 
0089 
0090 
0091 
0092 #endif // _BOPDS_IteratorSI_HeaderFile