summaryrefslogtreecommitdiff
path: root/inc/BRepAlgo_BooleanOperations.hxx
blob: a34299f80d2b251207ea73ef4e775eac8e46fd25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _BRepAlgo_BooleanOperations_HeaderFile
#define _BRepAlgo_BooleanOperations_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif

#ifndef _BRepAlgo_DSAccess_HeaderFile
#include <BRepAlgo_DSAccess.hxx>
#endif
#ifndef _TopoDS_Shape_HeaderFile
#include <TopoDS_Shape.hxx>
#endif
#ifndef _TopTools_MapOfShape_HeaderFile
#include <TopTools_MapOfShape.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _TopAbs_State_HeaderFile
#include <TopAbs_State.hxx>
#endif
#ifndef _Handle_TopOpeBRepDS_HDataStructure_HeaderFile
#include <Handle_TopOpeBRepDS_HDataStructure.hxx>
#endif
#ifndef _Handle_TopOpeBRepBuild_HBuilder_HeaderFile
#include <Handle_TopOpeBRepBuild_HBuilder.hxx>
#endif
class TopoDS_Shape;
class TopOpeBRepDS_HDataStructure;
class TopTools_ListOfShape;
class TopOpeBRepBuild_HBuilder;
class BRepAlgo_DSAccess;



class BRepAlgo_BooleanOperations  {
public:

  void* operator new(size_t,void* anAddress) 
  {
    return anAddress;
  }
  void* operator new(size_t size) 
  {
    return Standard::Allocate(size); 
  }
  void  operator delete(void *anAddress) 
  {
    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
  }

  
  Standard_EXPORT   BRepAlgo_BooleanOperations();
  //! S1 is a Shell with ALL faces supported by the SAME S2 is <br>
//!          an Edge INCLUDED in that surface with pcurve. <br>
//!          this avoids a time-consuming 3D operation, compared to Shapes. <br>
  Standard_EXPORT     void Shapes2d(const TopoDS_Shape& S1,const TopoDS_Shape& S2) ;
  //! Defines the arguments. <br>
  Standard_EXPORT     void Shapes(const TopoDS_Shape& S1,const TopoDS_Shape& S2) ;
  //! Sets different parameters for the curve approximations : <br>
//!          NbPntMax : Maximum number of points to be approximated at <br>
//!                     the same time in one curve. <br>
//!          Tol3D, Tol2D : Tolerances to be reached by the approximation. <br>
//!          RelativeTol : The given tolerances are relative. <br>
  Standard_EXPORT     void SetApproxParameters(const Standard_Integer NbPntMax,const Standard_Real Tol3D,const Standard_Real Tol2D,const Standard_Boolean RelativeTol) ;
  
  Standard_EXPORT     void Define(const TopoDS_Shape& S1,const TopoDS_Shape& S2,Handle(TopOpeBRepDS_HDataStructure)& HDS) ;
  //! returns the common part of the shapes. <br>
  Standard_EXPORT    const TopoDS_Shape& Common() ;
  //! returns the fuse part of the shapes. <br>
  Standard_EXPORT    const TopoDS_Shape& Fus() ;
  //! returns the cut part of the shapes. <br>
  Standard_EXPORT    const TopoDS_Shape& Cut() ;
  //! returns the intersection of the shapes. <br>
  Standard_EXPORT    const TopoDS_Shape& Section() ;
  //! returns the result of the boolean operation. <br>
  Standard_EXPORT    const TopoDS_Shape& Shape() ;
  //! Returns the shape(s) resulting of the boolean operation <br>
//!          issued from the shape <S>. <br>
  Standard_EXPORT    const TopoDS_Shape& ShapeFrom(const TopoDS_Shape& S) ;
  //! Returns the list of the descendant shapes of the shape <S>. <br>
  Standard_EXPORT    const TopTools_ListOfShape& Modified(const TopoDS_Shape& S) ;
  //! Returns the fact that the shape <S> has been deleted or not <br>
//!          by the boolean operation. <br>
  Standard_EXPORT     Standard_Boolean IsDeleted(const TopoDS_Shape& S) ;
  
  Standard_EXPORT    const Handle_TopOpeBRepDS_HDataStructure& DataStructure() const;
  
  Standard_EXPORT     Handle_TopOpeBRepDS_HDataStructure& ChangeDataStructure() ;
  
  Standard_EXPORT    const Handle_TopOpeBRepBuild_HBuilder& Builder() const;
  
  Standard_EXPORT     Handle_TopOpeBRepBuild_HBuilder& ChangeBuilder() ;
  //! returns the member myDSA. It is useful to then access <br>
//!          the method GetSectionEdgeSet (wich is a member of DSAccess) <br>
  Standard_EXPORT     BRepAlgo_DSAccess& DataStructureAccess() ;





protected:





private:

  //! Performs the global boolean operation. <br>
  Standard_EXPORT     void Perform() ;
  //! Performs the global boolean operation and build the <br>
//!          result in regards of the given states. <br>
  Standard_EXPORT     void Perform(const TopAbs_State State1,const TopAbs_State State2) ;


BRepAlgo_DSAccess myDSA;
TopoDS_Shape myS1;
TopoDS_Shape myS2;
TopoDS_Shape myShape;
TopTools_MapOfShape myMapShape;
TopoDS_Shape myResult;
Standard_Integer myApproxNbPntMax;
Standard_Real myApproxTol3D;
Standard_Real myApproxTol2D;
Standard_Boolean myApproxRelativeTol;


};





// other Inline functions and methods (like "C++: function call" methods)


#endif