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
|
--
-- File : SplineSurface.cdl
-- Created : Sat 9 Jan 1993
-- Author : CKY / Contract Toubro-Larsen ( Kiran )
--
---Copyright : MATRA-DATAVISION 1993
--
class SplineSurface from IGESGeom inherits IGESEntity
---Purpose: defines IGESSplineSurface, Type <114> Form <0>
-- in package IGESGeom
-- A parametric spline surface is a grid of polynomial
-- patches. Patch could be of the type Linear, Quadratic,
-- Cubic, Wilson-Fowler, Modified Wilson-Fowler, B-Spline
-- The M * N grid of patches is defined by the 'u' break
-- points TU(1), TU(2), ..., TU(M+1) and the 'v' break
-- points TV(1), TV(2), TV(3) ..., TV(N+1).
uses
Pnt from gp,
HArray1OfReal from TColStd,
HArray2OfReal from TColStd,
HArray2OfHArray1OfReal from IGESBasic
raises DimensionMismatch, OutOfRange
is
Create returns mutable SplineSurface;
-- Specific Methods pertaining to the class
Init (me : mutable;
aBoundaryType, aPatchType : Integer;
allUBreakpoints, allVBreakpoints : HArray1OfReal;
allXCoeffs, allYCoeffs, allZCoeffs : HArray2OfHArray1OfReal)
raises DimensionMismatch;
---Purpose : This method is used to set the fields of the class
-- SplineSurface
-- - aBoundaryType : Type of Spline boundary
-- 1 = Linear
-- 2 = Quadratic
-- 3 = Cubic
-- 4 = Wilson-Fowler
-- 5 = Modified Wilson-Fowler
-- 6 = B-spline
-- - aPatchType : Type of patch contained in the grid
-- 1 = Cartesian Product
-- 0 = Unspecified
-- - allUBreakpoints : u values of grid lines
-- - allVBreakpoints : v values of grid lines
-- - allXCoeffs : X coefficients of M x N patches
-- - allYCoeffs : Y coefficients of M x N patches
-- - allZCoeffs : Z coefficients of M x N patches
-- raises exception if allXCoeffs, allYCoeffs & allZCoeffs are not
-- of the same size.
-- or if the size of each element of the double array is not 16
NbUSegments(me) returns Integer;
---Purpose : returns the number of U segments
NbVSegments(me) returns Integer;
---Purpose : returns the number of V segments
BoundaryType(me) returns Integer;
---Purpose : returns boundary type
PatchType(me) returns Integer;
---Purpose : returns patch type
UBreakPoint(me; anIndex : Integer) returns Real
raises OutOfRange;
---Purpose : returns U break point of the grid line referred to by anIndex
-- raises exception if anIndex <= 0 or anIndex > NbUSegments() + 1
VBreakPoint(me; anIndex : Integer) returns Real
raises OutOfRange;
---Purpose : returns V break point of the grid line referred to by anIndex
-- raises exception if anIndex <= 0 or anIndex > NbVSegments() + 1
XPolynomial(me; anIndex1, anIndex2 : Integer) returns HArray1OfReal
raises OutOfRange;
---Purpose : returns X polynomial of patch referred to by anIndex1, anIndex2
-- raises exception if anIndex1 <= 0 or anIndex1 > NbUSegments()
-- or anIndex2 <= 0 or anIndex2 > NbVSegments()
YPolynomial(me; anIndex1, anIndex2 : Integer) returns HArray1OfReal
raises OutOfRange;
---Purpose : returns Y polynomial of patch referred to by anIndex1, anIndex2
-- raises exception if anIndex1 <= 0 or anIndex1 > NbUSegments()
-- or anIndex2 <= 0 or anIndex2 > NbVSegments()
ZPolynomial(me; anIndex1, anIndex2 : Integer) returns HArray1OfReal
raises OutOfRange;
---Purpose : returns Z polynomial of patch referred to by anIndex1, anIndex2
-- raises exception if anIndex1 <= 0 or anIndex1 > NbUSegments()
-- or anIndex2 <= 0 or anIndex2 > NbVSegments()
Polynomials (me; XCoef, YCoef, ZCoef : out HArray2OfHArray1OfReal);
---Purpose : returns in one all the polynomial values "in bulk"
-- usefull for massive treatements
fields
--
-- Class : IGESGeom_SplineSurface
--
-- Purpose : Declaration of variables specific to the definition
-- of the Class SplineSurface.
--
-- Reminder : A SplineSurface instance is defined by :
-- Spline boundary type, the type of patches in the grid
-- the number of U, V segments, the break points, the X, Y, Z
-- polynomials for each patch.
theBoundaryType : Integer;
thePatchType : Integer;
theUBreakPoints : HArray1OfReal;
theVBreakPoints : HArray1OfReal;
theXCoeffs : HArray2OfHArray1OfReal;
-- each element of the HArray2 is of size 16
-- the HArray2 is of size MN where M is the number of
-- U segments and N is the number of V segments
theYCoeffs : HArray2OfHArray1OfReal;
-- each element of the HArray2 is of size 16
-- the HArray2 is of size MN where M is the number of
-- U segments and N is the number of V segments
theZCoeffs : HArray2OfHArray1OfReal;
-- each element of the HArray2 is of size 16
-- the HArray2 is of size MN where M is the number of
-- U segments and N is the number of V segments
end SplineSurface;
|