summaryrefslogtreecommitdiff
path: root/inc/BOPTools_Tools.hxx
blob: 34f28ed4cbe519c672111fa5e123c198a79f5883 (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
// 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 _BOPTools_Tools_HeaderFile
#define _BOPTools_Tools_HeaderFile

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

#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
class gp_Pnt;
class TopoDS_Vertex;
class TopoDS_Edge;
class TopoDS_Face;
class IntTools_Curve;
class BOPTools_PaveBlock;
class IntTools_Context;
class TopoDS_Shape;
class TopTools_IndexedMapOfShape;
class IntTools_Range;



//!  The class contains handy static functions <br>
//!  dealing with the topology <br>
class BOPTools_Tools  {
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); 
  }

  
//! Make a vertex using 3D-point <aP1> and 3D-tolerance value <aTol> <br>
  Standard_EXPORT   static  void MakeNewVertex(const gp_Pnt& aP1,const Standard_Real aTol,TopoDS_Vertex& aNewVertex) ;
  
//! Make a vertex using couple of vertices  <aV1, aV2> <br>
  Standard_EXPORT   static  void MakeNewVertex(const TopoDS_Vertex& aV1,const TopoDS_Vertex& aV2,TopoDS_Vertex& aNewVertex) ;
  
//! Make a vertex in place of intersection between two edges <br>
//! <aE1, aE2> with parameters <aP1, aP2> <br>
  Standard_EXPORT   static  void MakeNewVertex(const TopoDS_Edge& aE1,const Standard_Real aP1,const TopoDS_Edge& aE2,const Standard_Real aP2,TopoDS_Vertex& aNewVertex) ;
  
//! Make a vertex in place of intersection between the edge <aE1> <br>
//! with parameter <aP1> and the face <aF2> <br>
  Standard_EXPORT   static  void MakeNewVertex(const TopoDS_Edge& aE1,const Standard_Real aP1,const TopoDS_Face& aF2,TopoDS_Vertex& aNewVertex) ;
  
//! Compute a 3D-point on the edge <aEdge> at parameter <aPrm> <br>
  Standard_EXPORT   static  void PointOnEdge(const TopoDS_Edge& aEdge,const Standard_Real aPrm,gp_Pnt& aP) ;
  
//! Make the edge from base edge <aE1> and two vertices <aV1,aV2> <br>
//! at parameters <aP1,aP2> <br>
  Standard_EXPORT   static  void MakeSplitEdge(const TopoDS_Edge& aE1,const TopoDS_Vertex& aV1,const Standard_Real aP1,const TopoDS_Vertex& aV2,const Standard_Real aP2,TopoDS_Edge& aNewEdge) ;
  
//! Make the edge from 3D-Curve <aIC>  and two vertices <aV1,aV2> <br>
//! at parameters <aP1,aP2> <br>
  Standard_EXPORT   static  void MakeSectEdge(const IntTools_Curve& aIC,const TopoDS_Vertex& aV1,const Standard_Real aP1,const TopoDS_Vertex& aV2,const Standard_Real aP2,TopoDS_Edge& aNewEdge) ;
  
//! Update the tolerance value for vertex  <aV> <br>
//! taking into account the fact that <aV> lays on <br>
//! the curve <aIC> <br>
  Standard_EXPORT   static  void UpdateVertex(const IntTools_Curve& aIC,const Standard_Real aT,const TopoDS_Vertex& aV) ;
  
//! Update the tolerance value for vertex  <aV> <br>
//! taking into account the fact that <aV> lays on <br>
//! the edge <aE> <br>
  Standard_EXPORT   static  void UpdateVertex(const TopoDS_Edge& aE,const Standard_Real aT,const TopoDS_Vertex& aV) ;
  
//! Update the tolerance value for vertex  <aVN> <br>
//! taking into account the fact that <aVN> should <br>
//! cover tolerance zone of <aVF> <br>
  Standard_EXPORT   static  void UpdateVertex(const TopoDS_Vertex& aVF,const TopoDS_Vertex& aVN) ;
  
//! Returns TRUE if PaveBlocks  <aPB1>,<aPB2> coinside in 3D <br>
//! taking into account corresp. tolerances' values of vertices, <br>
//! edges <br>
  Standard_EXPORT   static  Standard_Boolean IsBlocksCoinside(const BOPTools_PaveBlock& aPB1,const BOPTools_PaveBlock& aPB2) ;
  
//! Returns TRUE if PaveBlock <aPB> lays on the face <aF>, i.e <br>
//! the <PB> is IN or ON in 2D of <aF> <br>
  Standard_EXPORT   static  Standard_Boolean IsBlockInOnFace(const BOPTools_PaveBlock& aPB,const TopoDS_Face& aF,IntTools_Context& aContext) ;
  
//! Get a  Map <aM> containing the shape itself and all its subshapes <br>
  Standard_EXPORT   static  void MapShapes(const TopoDS_Shape& aS,TopTools_IndexedMapOfShape& aM) ;
  
//! Correct shrunk range <aSR> taking into account 3D-curve <br>
//! resolution and corresp. tolerances' values of <aE1>, <aE2> <br>
  Standard_EXPORT   static  void CorrectRange(const TopoDS_Edge& aE1,const TopoDS_Edge& aE2,const IntTools_Range& aSR,IntTools_Range& aNewSR) ;
  
//! Correct shrunk range <aSR> taking into account 3D-curve <br>
//! resolution and corresp. tolerances' values of <aE>, <aF> <br>
  Standard_EXPORT   static  void CorrectRange(const TopoDS_Edge& aE,const TopoDS_Face& aF,const IntTools_Range& aSR,IntTools_Range& aNewSR) ;
  
//! Make a copy of <aSourceShape> <br>
  Standard_EXPORT   static  void CopySource(const TopoDS_Shape& aSourceShape,TopoDS_Shape& aDestShape) ;





protected:





private:





};





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


#endif