0031939: Coding - correction of spelling errors in comments
[occt.git] / src / GeomFill / GeomFill_Sweep.hxx
1 // Created on: 1997-11-20
2 // Created by: Philippe MANGIN
3 // Copyright (c) 1997-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 _GeomFill_Sweep_HeaderFile
18 #define _GeomFill_Sweep_HeaderFile
19
20 #include <Standard.hxx>
21 #include <Standard_DefineAlloc.hxx>
22 #include <Standard_Handle.hxx>
23
24 #include <Standard_Real.hxx>
25 #include <Standard_Boolean.hxx>
26 #include <TColGeom2d_HArray1OfCurve.hxx>
27 #include <TColStd_HArray2OfReal.hxx>
28 #include <GeomFill_ApproxStyle.hxx>
29 #include <GeomAbs_Shape.hxx>
30 #include <Standard_Integer.hxx>
31 class GeomFill_LocationLaw;
32 class GeomFill_SectionLaw;
33 class Geom_Surface;
34 class StdFail_NotDone;
35 class Standard_OutOfRange;
36 class Standard_ConstructionError;
37 class Geom2d_Curve;
38
39
40 //! Geometrical Sweep Algorithm
41 class GeomFill_Sweep 
42 {
43 public:
44
45   DEFINE_STANDARD_ALLOC
46
47   
48   Standard_EXPORT GeomFill_Sweep(const Handle(GeomFill_LocationLaw)& Location, const Standard_Boolean WithKpart = Standard_True);
49   
50   //! Set parametric information
51   //! [<First>, <Last>] Sets the parametric bound of the
52   //! sweeping surface to build.
53   //! <SectionFirst>, <SectionLast> gives coresponding
54   //! bounds parameter on the section law of <First> and <Last>
55   //!
56   //! V-Iso on Sweeping Surface S(u,v) is defined by
57   //! Location(v) and Section(w) where
58   //! w = SectionFirst + (v - First) / (Last-First)
59   //! * (SectionLast - SectionFirst)
60   //!
61   //! By default w = v, and First and Last are given by
62   //! First and Last parameter stored in LocationLaw.
63   Standard_EXPORT void SetDomain (const Standard_Real First, const Standard_Real Last, const Standard_Real SectionFirst, const Standard_Real SectionLast);
64   
65   //! Set Approximation Tolerance
66   //! Tol3d : Tolerance to surface approximation
67   //! Tol2d : Tolerance used to perform curve approximation
68   //! Normaly the 2d curve are approximated with a
69   //! tolerance given by the resolution method define in
70   //! <LocationLaw> but if this tolerance is too large Tol2d
71   //! is used.
72   //! TolAngular : Tolerance (in radian) to control the angle
73   //! between tangents on the section law and
74   //! tangent of iso-v on approximated surface
75   Standard_EXPORT void SetTolerance (const Standard_Real Tol3d, const Standard_Real BoundTol = 1.0, const Standard_Real Tol2d = 1.0e-5, const Standard_Real TolAngular = 1.0);
76   
77   //! Set the flag that indicates attempt to approximate
78   //! a C1-continuous surface if a swept surface proved
79   //! to be C0.
80   Standard_EXPORT void SetForceApproxC1 (const Standard_Boolean ForceApproxC1);
81   
82   //! returns true if sections are U-Iso
83   //! This can be produce in some cases when <WithKpart> is True.
84   Standard_EXPORT Standard_Boolean ExchangeUV() const;
85   
86   //! returns true if Parametrisation sens in U is inverse of
87   //! parametrisation sens of section (or of path if ExchangeUV)
88   Standard_EXPORT Standard_Boolean UReversed() const;
89   
90   //! returns true if Parametrisation sens in V is inverse of
91   //! parametrisation sens of path (or of section if ExchangeUV)
92   Standard_EXPORT Standard_Boolean VReversed() const;
93   
94   //! Build the Sweeep  Surface
95   //! ApproxStyle defines Approximation Strategy
96   //! - GeomFill_Section : The composed Function : Location X Section
97   //! is directly approximated.
98   //! - GeomFill_Location : The location law is approximated, and the
99   //! SweepSurface is build algebric composition
100   //! of approximated location law and section law
101   //! This option is Ok, if Section.Surface() methode
102   //! is effective.
103   //! Continuity : The continuity in v waiting on the surface
104   //! Degmax     : The maximum degree in v required on the surface
105   //! Segmax     : The maximum number of span in v required on
106   //! the surface
107   //!
108   //! raise If Domain are infinite or Profile not Setted.
109   Standard_EXPORT void Build (const Handle(GeomFill_SectionLaw)& Section, const GeomFill_ApproxStyle Methode = GeomFill_Location, const GeomAbs_Shape Continuity = GeomAbs_C2, const Standard_Integer Degmax = 10, const Standard_Integer Segmax = 30);
110   
111   //! Tells if the Surface is Buildt.
112   Standard_EXPORT Standard_Boolean IsDone() const;
113   
114   //! Gets the Approximation  error.
115   Standard_EXPORT Standard_Real ErrorOnSurface() const;
116   
117   //! Gets the Approximation  error.
118   Standard_EXPORT void ErrorOnRestriction (const Standard_Boolean IsFirst, Standard_Real& UError, Standard_Real& VError) const;
119   
120   //! Gets the Approximation error.
121   Standard_EXPORT void ErrorOnTrace (const Standard_Integer IndexOfTrace, Standard_Real& UError, Standard_Real& VError) const;
122   
123   Standard_EXPORT Handle(Geom_Surface) Surface() const;
124   
125   Standard_EXPORT Handle(Geom2d_Curve) Restriction (const Standard_Boolean IsFirst) const;
126   
127   Standard_EXPORT Standard_Integer NumberOfTrace() const;
128   
129   Standard_EXPORT Handle(Geom2d_Curve) Trace (const Standard_Integer IndexOfTrace) const;
130
131
132
133
134 protected:
135
136
137
138
139
140 private:
141
142   
143   Standard_EXPORT Standard_Boolean Build2d (const GeomAbs_Shape Continuity, const Standard_Integer Degmax, const Standard_Integer Segmax);
144   
145   Standard_EXPORT Standard_Boolean BuildAll (const GeomAbs_Shape Continuity, const Standard_Integer Degmax, const Standard_Integer Segmax);
146   
147   Standard_EXPORT Standard_Boolean BuildProduct (const GeomAbs_Shape Continuity, const Standard_Integer Degmax, const Standard_Integer Segmax);
148   
149   Standard_EXPORT Standard_Boolean BuildKPart();
150
151
152   Standard_Real First;
153   Standard_Real Last;
154   Standard_Real SFirst;
155   Standard_Real SLast;
156   Standard_Real Tol3d;
157   Standard_Real BoundTol;
158   Standard_Real Tol2d;
159   Standard_Real TolAngular;
160   Standard_Real SError;
161   Standard_Boolean myForceApproxC1;
162   Handle(GeomFill_LocationLaw) myLoc;
163   Handle(GeomFill_SectionLaw) mySec;
164   Handle(Geom_Surface) mySurface;
165   Handle(TColGeom2d_HArray1OfCurve) myCurve2d;
166   Handle(TColStd_HArray2OfReal) CError;
167   Standard_Boolean done;
168   Standard_Boolean myExchUV;
169   Standard_Boolean isUReversed;
170   Standard_Boolean isVReversed;
171   Standard_Boolean myKPart;
172
173
174 };
175
176
177
178
179
180
181
182 #endif // _GeomFill_Sweep_HeaderFile