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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
|
-- File: BRepOffsetAPI_ThruSections.cdl
-- Created: Mon Jul 17 16:24:52 1995
-- Author: Jing Cheng MEI
-- <mei@junon>
-- Modified: Mon Jan 12 10:46:37 1998
-- Author: Joelle CHAUVET
-- <jct@sgi64>
-- new method ArrangeWires
-- Modified: Mon Jan 19 10:11:49 1998
-- Author: Joelle CHAUVET
-- <jct@sgi64>
-- new methods CreateKPart and DetectKPart
-- Modified: Mon Feb 23 09:28:33 1998
-- Author: Joelle CHAUVET
-- <jct@sgi64>
-- modification of ArrangeWires
-- for sections with different number of elements
-- Modified: Mon Apr 6 16:24:40 1998
-- Author: Joelle CHAUVET
-- <jct@sgi64>
-- CreateKPart and DetectKPart moved in BRepFill
-- Modified: Wed Jul 1 14:33:22 1998
-- Author: Jing-Cheng MEI
-- <mei@pinochiox>
-- Add history
-- CreateKPart and DetectKPart moved in BRepFill
---Copyright: Matra Datavision 1995
class ThruSections from BRepOffsetAPI inherits MakeShape from BRepBuilderAPI
---Purpose: Describes functions to build a loft. This is a shell or a
-- solid passing through a set of sections in a given
-- sequence. Usually sections are wires, but the first and
-- the last sections may be vertices (punctual sections).
uses
Wire from TopoDS,
Vertex from TopoDS,
SequenceOfShape from TopTools,
Face from TopoDS,
Shape from TopoDS,
DataMapOfShapeShape from TopTools,
Array1OfShape from TopTools,
BSplineSurface from Geom,
--
Shape from GeomAbs,
ParametrizationType from Approx
raises DomainError from Standard
is
Create(isSolid : Boolean from Standard = Standard_False;
ruled : Boolean from Standard = Standard_False;
pres3d : Real =1.0e-06)
returns ThruSections from BRepOffsetAPI;
---Purpose: Initializes an algorithm for building a shell or a solid
-- passing through a set of sections, where:
-- - isSolid is set to true if the construction algorithm is
-- required to build a solid or to false if it is required to build
-- a shell (the default value),
-- - ruled is set to true if the faces generated between
-- the edges of two consecutive wires are ruled surfaces or to
-- false (the default value) if they are smoothed out by approximation,
-- - pres3d defines the precision criterion used by the
-- approximation algorithm; the default value is 1.0e-6.
-- Use AddWire and AddVertex to define the
-- successive sections of the shell or solid to be built.
Init(me: in out; isSolid : Boolean from Standard = Standard_False;
ruled : Boolean from Standard = Standard_False;
pres3d : Real =1.0e-06);
---Purpose: Initializes this algorithm for building a shell or a solid
-- passing through a set of sections, where:
-- - isSolid is set to true if this construction algorithm is
-- required to build a solid or to false if it is required to
-- build a shell. false is the default value;
-- - ruled is set to true if the faces generated between the
-- edges of two consecutive wires are ruled surfaces or
-- to false (the default value) if they are smoothed out by approximation,
-- - pres3d defines the precision criterion used by the
-- approximation algorithm; the default value is 1.0e-6.
-- Use AddWire and AddVertex to define the successive
-- sections of the shell or solid to be built.
AddWire(me: in out; wire: Wire from TopoDS);
---Purpose: Adds the wire wire to the set of
-- sections through which the shell or solid is built.
-- Use the Build function to construct the shape.
AddVertex(me: in out; aVertex: Vertex from TopoDS);
---Purpose: Adds the vertex Vertex (punctual section) to the set of sections
-- through which the shell or solid is built. A vertex may be added to the
-- set of sections only as first or last section. At least one wire
-- must be added to the set of sections by the method AddWire.
-- Use the Build function to construct the shape.
CheckCompatibility(me: in out;
check : Boolean from Standard = Standard_True);
SetSmoothing(me: in out; UseSmoothing : Boolean from Standard)
---Purpose: Define the approximation algorithm
is static;
SetParType(me: in out; ParType : ParametrizationType from Approx)
---Purpose: Define the type of parametrization used in the approximation
is static;
SetContinuity(me: in out; C : Shape from GeomAbs)
---Purpose: Define the Continuity used in the approximation
is static;
SetCriteriumWeight(me : in out;
W1, W2, W3 : Real)
---Purpose: define the Weights associed to the criterium used in
-- the optimization.
--
raises DomainError -- if Wi <= 0
is static;
SetMaxDegree(me : in out; MaxDeg : Integer from Standard)
---Purpose: Define the maximal U degree of result surface
is static;
ParType(me)
---Purpose: returns the type of parametrization used in the approximation
returns ParametrizationType from Approx
is static;
Continuity(me)
---Purpose: returns the Continuity used in the approximation
returns Shape from GeomAbs
is static;
MaxDegree(me)
---Purpose: returns the maximal U degree of result surface
returns Integer from Standard
is static;
UseSmoothing(me)
---Purpose: Define the approximation algorithm
returns Boolean from Standard
is static;
CriteriumWeight(me ; W1, W2, W3 : out Real)
---Purpose: returns the Weights associed to the criterium used in
-- the optimization.
is static;
Build(me: in out)
is redefined;
CreateRuled(me: in out)
is private;
CreateSmoothed(me: in out)
is private;
FirstShape (me)
---Purpose: Returns the TopoDS Shape of the bottom of the loft if solid
returns Shape from TopoDS;
---C++ : return const &
LastShape (me)
---Purpose: Returns the TopoDS Shape of the top of the loft if solid
returns Shape from TopoDS;
---C++ : return const &
GeneratedFace (me; Edge : Shape from TopoDS)
---Purpose: if Ruled
-- Returns the Face generated by each edge
-- except the last wire
-- if smoothed
-- Returns the Face generated by each edge of the first wire
returns Shape from TopoDS;
TotalSurf(me; shapes: Array1OfShape from TopTools;
NbSect: Integer from Standard;
NbEdges: Integer from Standard;
w1Point: Boolean from Standard;
w2Point: Boolean from Standard;
vClosed: Boolean from Standard)
returns BSplineSurface from Geom
is private;
fields
myWires : SequenceOfShape from TopTools;
myIsSolid : Boolean from Standard;
myIsRuled : Boolean from Standard;
myWCheck : Boolean from Standard;
myPres3d : Real from Standard;
myFirst : Face from TopoDS;
myLast : Face from TopoDS;
myGenerated : DataMapOfShapeShape from TopTools;
-- Approximation parameters
myContinuity: Shape from GeomAbs;
myParamType : ParametrizationType from Approx;
myDegMax : Integer from Standard;
myCritWeights : Real[3];
myUseSmoothing : Boolean from Standard;
end ThruSections;
|