1 // Created on: 1994-03-03
2 // Created by: Joelle CHAUVET
3 // Copyright (c) 1994-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16 
17 #ifndef _BRepFill_HeaderFile
18 #define _BRepFill_HeaderFile
19 
20 #include <Standard.hxx>
21 #include <Standard_DefineAlloc.hxx>
22 #include <Standard_Handle.hxx>
23 
24 #include <Standard_Boolean.hxx>
25 #include <Standard_Real.hxx>
26 #include <TColStd_Array1OfReal.hxx>
27 class TopoDS_Face;
28 class TopoDS_Edge;
29 class TopoDS_Shell;
30 class TopoDS_Wire;
31 class TopoDS_Shape;
32 class gp_Ax3;
33 class gp_Pnt;
34 class gp_Vec;
35 
36 
37 
38 class BRepFill
39 {
40 public:
41 
42   DEFINE_STANDARD_ALLOC
43 
44 
45   //! Computes a ruled surface between two edges.
46   Standard_EXPORT static TopoDS_Face Face (const TopoDS_Edge& Edge1, const TopoDS_Edge& Edge2);
47 
48   //! Computes a ruled surface between two wires.
49   //! The wires must have the same number of edges.
50   Standard_EXPORT static TopoDS_Shell Shell (const TopoDS_Wire& Wire1, const TopoDS_Wire& Wire2);
51 
52   //! Computes  <AxeProf>  as Follow. <Location> is
53   //! the Position of the nearest vertex V  of <Profile>
54   //! to <Spine>.<XDirection> is confused with the tangent
55   //! to <Spine> at the projected point of V on the Spine.
56   //! <Direction> is normal to <Spine>.
57   //! <Spine> is a plane wire or a plane face.
58   Standard_EXPORT static void Axe (const TopoDS_Shape& Spine, const TopoDS_Wire& Profile, gp_Ax3& AxeProf, Standard_Boolean& ProfOnSpine, const Standard_Real Tol);
59 
60   //! Compute ACR on a  wire
61   Standard_EXPORT static void ComputeACR (const TopoDS_Wire& wire, TColStd_Array1OfReal& ACR);
62 
63   //! Insert ACR on a  wire
64   Standard_EXPORT static TopoDS_Wire InsertACR (const TopoDS_Wire& wire, const TColStd_Array1OfReal& ACRcuts, const Standard_Real prec);
65 
66 
67 
68 
69 protected:
70 
71 
72 
73 
74 
75 private:
76 
77 
78   //! Computes origins and orientation on a closed wire
79   Standard_EXPORT static void SearchOrigin (TopoDS_Wire& W, const gp_Pnt& P, const gp_Vec& V, const Standard_Real Tol);
80 
81 
82 
83 friend class BRepFill_Generator;
84 friend class BRepFill_SectionLaw;
85 friend class BRepFill_ShapeLaw;
86 friend class BRepFill_NSections;
87 friend class BRepFill_Draft;
88 friend class BRepFill_LocationLaw;
89 friend class BRepFill_DraftLaw;
90 friend class BRepFill_Edge3DLaw;
91 friend class BRepFill_EdgeOnSurfLaw;
92 friend class BRepFill_ACRLaw;
93 friend class BRepFill_Pipe;
94 friend class BRepFill_PipeShell;
95 friend class BRepFill_Evolved;
96 friend class BRepFill_Sweep;
97 friend class BRepFill_CompatibleWires;
98 friend class BRepFill_OffsetWire;
99 friend class BRepFill_OffsetAncestors;
100 friend class BRepFill_ApproxSeewing;
101 friend class BRepFill_ComputeCLine;
102 friend class BRepFill_TrimSurfaceTool;
103 friend class BRepFill_TrimEdgeTool;
104 friend class BRepFill_SectionPlacement;
105 friend class BRepFill_Section;
106 friend class BRepFill_TrimShellCorner;
107 friend class BRepFill_CurveConstraint;
108 friend class BRepFill_Filling;
109 friend class BRepFill_FaceAndOrder;
110 friend class BRepFill_EdgeFaceAndOrder;
111 
112 };
113 
114 
115 
116 
117 
118 
119 
120 #endif // _BRepFill_HeaderFile
121