summaryrefslogtreecommitdiff
path: root/inc/BRepOffset_Tool.hxx
blob: 919d6e243c9bac1c95ad0c761d2cd16fd721f964 (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
154
155
// 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 _BRepOffset_Tool_HeaderFile
#define _BRepOffset_Tool_HeaderFile

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

#ifndef _TopAbs_Orientation_HeaderFile
#include <TopAbs_Orientation.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _TopAbs_State_HeaderFile
#include <TopAbs_State.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
#include <Handle_BRepAlgo_AsDes.hxx>
#endif
#ifndef _Handle_Geom_Curve_HeaderFile
#include <Handle_Geom_Curve.hxx>
#endif
class TopoDS_Edge;
class TopoDS_Vertex;
class TopoDS_Face;
class TopTools_ListOfShape;
class BRepOffset_Analyse;
class TopTools_DataMapOfShapeShape;
class TopoDS_Wire;
class TopoDS_Shape;
class TopTools_DataMapOfShapeListOfShape;
class TopTools_MapOfShape;
class BRepAlgo_AsDes;
class BRepAlgo_Image;
class Geom_Curve;



class BRepOffset_Tool  {
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); 
  }

  //! <V1> is the FirstVertex ,<V2> is the Last Vertex of <Edge> <br>
//!          taking account the orientation of Edge. <br>
  Standard_EXPORT   static  void EdgeVertices(const TopoDS_Edge& E,TopoDS_Vertex& V1,TopoDS_Vertex& V2) ;
  //! returns the cumul  of the orientation  of <Edge> <br>
//!          and thc containing wire in <Face> <br>
  Standard_EXPORT   static  TopAbs_Orientation OriEdgeInFace(const TopoDS_Edge& E,const TopoDS_Face& F) ;
  //! <E> is a section  between <F1> and <F2>.  Computes <br>
//!          <O1> the orientation of <E> in <F1> influenced by <F2>. <br>
//!          idem for <O2>. <br>
  Standard_EXPORT   static  void OrientSection(const TopoDS_Edge& E,const TopoDS_Face& F1,const TopoDS_Face& F2,TopAbs_Orientation& O1,TopAbs_Orientation& O2) ;
  //! Returns True if  <F1> and <F2> has common Vertices <br>
//!          or edges , <LE> contains the common edges. <LV> the <br>
//!          common vertices. <br>
  Standard_EXPORT   static  Standard_Boolean HasCommonShapes(const TopoDS_Face& F1,const TopoDS_Face& F2,TopTools_ListOfShape& LE,TopTools_ListOfShape& LV) ;
  //! Computes the   Section betwwen  <F1> and  <F2> the <br>
//!          edges solution   are  stored in <LInt1>  with  the <br>
//!          orientation on <F1>, the sames edges are stored in <br>
//!          <Lint2> with the orientation on <F2>. <br>
  Standard_EXPORT   static  void Inter3D(const TopoDS_Face& F1,const TopoDS_Face& F2,TopTools_ListOfShape& LInt1,TopTools_ListOfShape& LInt2,const TopAbs_State Side,const TopoDS_Edge& RefEdge,const Standard_Boolean IsRefEdgeDefined = Standard_False) ;
  //! Find if the edges <Edges> of the face <F2> are on <br>
//!          the face <F1>. <br>
//!          Set in <LInt1> <LInt2> the updated edges. <br>
//!          If all the edges are computed, returns true. <br>
//! <br>
  Standard_EXPORT   static  Standard_Boolean TryProject(const TopoDS_Face& F1,const TopoDS_Face& F2,const TopTools_ListOfShape& Edges,TopTools_ListOfShape& LInt1,TopTools_ListOfShape& LInt2,const TopAbs_State Side,const Standard_Real TolConf) ;
  
  Standard_EXPORT   static  void PipeInter(const TopoDS_Face& F1,const TopoDS_Face& F2,TopTools_ListOfShape& LInt1,TopTools_ListOfShape& LInt2,const TopAbs_State Side) ;
  
  Standard_EXPORT   static  void Inter2d(const TopoDS_Face& F,const TopoDS_Edge& E1,const TopoDS_Edge& E2,TopTools_ListOfShape& LV,const Standard_Real Tol) ;
  
  Standard_EXPORT   static  void InterOrExtent(const TopoDS_Face& F1,const TopoDS_Face& F2,TopTools_ListOfShape& LInt1,TopTools_ListOfShape& LInt2,const TopAbs_State Side) ;
  
  Standard_EXPORT   static  void CheckBounds(const TopoDS_Face& F,const BRepOffset_Analyse& Analyse,Standard_Boolean& enlargeU,Standard_Boolean& enlargeVfirst,Standard_Boolean& enlargeVlast) ;
  //! if <ChangeGeom> is TRUE  ,   the surface  can  be <br>
//!          changed . <br>
//!          if <UpdatePCurve>  is  TRUE, update the  pcurves of the <br>
//!          edges of <F> on   the new surface.if the surface has  been changed, <br>
//!          Returns  True if The Surface of  <NF> has changed. <br>
//! <br>
  Standard_EXPORT   static  Standard_Boolean EnLargeFace(const TopoDS_Face& F,TopoDS_Face& NF,const Standard_Boolean ChangeGeom,const Standard_Boolean UpDatePCurve = Standard_False,const Standard_Boolean enlargeU = Standard_True,const Standard_Boolean enlargeVfirst = Standard_True,const Standard_Boolean enlargeVlast = Standard_True) ;
  
  Standard_EXPORT   static  void ExtentFace(const TopoDS_Face& F,TopTools_DataMapOfShapeShape& ConstShapes,TopTools_DataMapOfShapeShape& ToBuild,const TopAbs_State Side,const Standard_Real TolConf,TopoDS_Face& NF) ;
  //! Via the wire explorer store in <NOnV1> for <br>
//!          an Edge <E> of <W> his Edge neighbour on the first <br>
//!          vertex <V1> of <E>. <br>
//!          Store in NOnV2 the Neighbour of <E>on the last <br>
//!          vertex <V2> of <E>. <br>
  Standard_EXPORT   static  void BuildNeighbour(const TopoDS_Wire& W,const TopoDS_Face& F,TopTools_DataMapOfShapeShape& NOnV1,TopTools_DataMapOfShapeShape& NOnV2) ;
  //! Store in MVE for a vertex <V>  in <S> the incident <br>
//!          edges <E> in <S>. <br>
//!          An Edge is Store only one Time for a vertex. <br>
  Standard_EXPORT   static  void MapVertexEdges(const TopoDS_Shape& S,TopTools_DataMapOfShapeListOfShape& MVE) ;
  //! Remove the non valid   part of an offsetshape <br>
//!          1 - Remove all the free boundary  and the faces <br>
//!          connex to such edges. <br>
//!          2 - Remove all the shapes not  valid in the result <br>
//!          (according to the side of offseting) <br>
//!   in this verion only the first point is implemented. <br>
  Standard_EXPORT   static  TopoDS_Shape Deboucle3D(const TopoDS_Shape& S,const TopTools_MapOfShape& Boundary) ;
  
  Standard_EXPORT   static  void CorrectOrientation(const TopoDS_Shape& SI,const TopTools_MapOfShape& NewEdges,Handle(BRepAlgo_AsDes)& AsDes,BRepAlgo_Image& InitOffset,const Standard_Real Offset) ;
  
  Standard_EXPORT   static  Standard_Real Gabarit(const Handle(Geom_Curve)& aCurve) ;





protected:





private:





};





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


#endif