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
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
|
-- File: BRepGProp.cdl
-- Created: Fri Dec 4 16:56:29 1992
-- Author: Isabelle GRIGNON
-- <isg@sdsun2>
---Copyright: Matra Datavision 1992
package BRepGProp
---Purpose: Provides global functions to compute a shape's global
-- properties for lines, surfaces or volumes, and bring
-- them together with the global properties already
-- computed for a geometric system.
-- The global properties computed for a system are :
-- - its mass,
-- - its center of mass,
-- - its matrix of inertia,
-- - its moment about an axis,
-- - its radius of gyration about an axis,
-- - and its principal properties of inertia such as
-- principal axis, principal moments, principal radius of gyration.
uses GProp,
BRepAdaptor,
BRepTools,
BRep,
TopExp,
TopoDS,
Geom2dAdaptor,
gp,
GeomAbs,
TColStd
is
class EdgeTool;
class Face;
class Domain;
class Cinert instantiates CGProps from GProp( Curve from BRepAdaptor,
EdgeTool from BRepGProp);
class Sinert instantiates SGProps from GProp( Edge from TopoDS,
Face from BRepGProp ,
Domain from BRepGProp);
class Vinert instantiates VGProps from GProp( Edge from TopoDS,
Face from BRepGProp,
Domain from BRepGProp);
class VinertGK instantiates VGPropsGK from GProp( Edge from TopoDS,
Face from BRepGProp,
Domain from BRepGProp);
--
-- Package methods to compute global properties.
--
LinearProperties(S : Shape from TopoDS; LProps : in out GProps from GProp);
---Purpose: Computes the linear global properties of the shape S,
-- i.e. the global properties induced by each edge of the
-- shape S, and brings them together with the global
-- properties still retained by the framework LProps. If
-- the current system of LProps was empty, its global
-- properties become equal to the linear global
-- properties of S.
-- For this computation no linear density is attached to
-- the edges. So, for example, the added mass
-- corresponds to the sum of the lengths of the edges of
-- S. The density of the composed systems, i.e. that of
-- each component of the current system of LProps, and
-- that of S which is considered to be equal to 1, must be coherent.
-- Note that this coherence cannot be checked. You are
-- advised to use a separate framework for each
-- density, and then to bring these frameworks together
-- into a global one.
-- The point relative to which the inertia of the system is
-- computed is the reference point of the framework LProps.
-- Note: if your programming ensures that the framework
-- LProps retains only linear global properties (brought
-- together for example, by the function
-- LinearProperties) for objects the density of which is
-- equal to 1 (or is not defined), the function Mass will
-- return the total length of edges of the system analysed by LProps.
-- Warning
-- No check is performed to verify that the shape S
-- retains truly linear properties. If S is simply a vertex, it
-- is not considered to present any additional global properties.
SurfaceProperties(S : Shape from TopoDS; SProps : in out GProps from GProp);
---Purpose: Computes the surface global properties of the
-- shape S, i.e. the global properties induced by each
-- face of the shape S, and brings them together with
-- the global properties still retained by the framework
-- SProps. If the current system of SProps was empty,
-- its global properties become equal to the surface
-- global properties of S.
-- For this computation, no surface density is attached
-- to the faces. Consequently, the added mass
-- corresponds to the sum of the areas of the faces of
-- S. The density of the component systems, i.e. that
-- of each component of the current system of
-- SProps, and that of S which is considered to be
-- equal to 1, must be coherent.
-- Note that this coherence cannot be checked. You
-- are advised to use a framework for each different
-- value of density, and then to bring these
-- frameworks together into a global one.
-- The point relative to which the inertia of the system
-- is computed is the reference point of the framework SProps.
-- Note : if your programming ensures that the
-- framework SProps retains only surface global
-- properties, brought together, for example, by the
-- function SurfaceProperties, for objects the density
-- of which is equal to 1 (or is not defined), the
-- function Mass will return the total area of faces of
-- the system analysed by SProps.
-- Warning
-- No check is performed to verify that the shape S
-- retains truly surface properties. If S is simply a
-- vertex, an edge or a wire, it is not considered to
-- present any additional global properties.
SurfaceProperties(S : Shape from TopoDS; SProps : in out GProps from GProp;
Eps: Real) returns Real;
---Purpose: Updates <SProps> with the shape <S>, that contains its pricipal properties.
-- The surface properties of all the faces in <S> are computed.
-- Adaptive 2D Gauss integration is used.
-- Parameter Eps sets maximal relative error of computed mass (area) for each face.
-- Error is calculated as Abs((M(i+1)-M(i))/M(i+1)), M(i+1) and M(i) are values
-- for two successive steps of adaptive integration.
-- Method returns estimation of relative error reached for whole shape.
-- WARNING: if Eps > 0.001 algorithm performs non-adaptive integration.
------------------------
-- VolumeProperties --
------------------------
---Purpose:
-- Computes the global volume properties of the solid
-- S, and brings them together with the global
-- properties still retained by the framework VProps. If
-- the current system of VProps was empty, its global
-- properties become equal to the global properties of S for volume.
-- For this computation, no volume density is attached
-- to the solid. Consequently, the added mass
-- corresponds to the volume of S. The density of the
-- component systems, i.e. that of each component of
-- the current system of VProps, and that of S which
-- is considered to be equal to 1, must be coherent to each other.
-- Note that this coherence cannot be checked. You
-- are advised to use a separate framework for each
-- density, and then to bring these frameworks
-- together into a global one.
-- The point relative to which the inertia of the system
-- is computed is the reference point of the framework VProps.
-- Note: if your programming ensures that the
-- framework VProps retains only global properties of
-- volume (brought together for example, by the
-- function VolumeProperties) for objects the density
-- of which is equal to 1 (or is not defined), the
-- function Mass will return the total volume of the
-- solids of the system analysed by VProps.
-- Warning
-- The shape S must represent an object whose
-- global volume properties can be computed. It may
-- be a finite solid, or a series of finite solids all
-- oriented in a coherent way. Nonetheless, S must be
-- exempt of any free boundary. Note that these
-- conditions of coherence are not checked by this
-- algorithm, and results will be false if they are not respected.
VolumeProperties(S : Shape from TopoDS; VProps : in out GProps from GProp;
OnlyClosed: Boolean = Standard_False);
VolumeProperties(S : Shape from TopoDS; VProps : in out GProps from GProp;
Eps: Real; OnlyClosed: Boolean = Standard_False) returns Real;
---Purpose: Updates <VProps> with the shape <S>, that contains its pricipal properties.
-- The volume properties of all the FORWARD and REVERSED faces in <S> are computed.
-- If OnlyClosed is True then computed faces must belong to closed Shells.
-- Adaptive 2D Gauss integration is used.
-- Parameter Eps sets maximal relative error of computed mass (volume) for each face.
-- Error is calculated as Abs((M(i+1)-M(i))/M(i+1)), M(i+1) and M(i) are values
-- for two successive steps of adaptive integration.
-- Method returns estimation of relative error reached for whole shape.
-- WARNING: if Eps > 0.001 algorithm performs non-adaptive integration.
-- ----------------------------------------------------------------------------------------
VolumePropertiesGK(S : Shape from TopoDS;
VProps : in out GProps from GProp;
Eps : Real from Standard = 0.001;
OnlyClosed: Boolean from Standard = Standard_False;
IsUseSpan : Boolean from Standard = Standard_False;
CGFlag : Boolean from Standard = Standard_False;
IFlag : Boolean from Standard = Standard_False)
returns Real;
---Purpose: Updates <VProps> with the shape <S>, that contains its pricipal properties.
-- The volume properties of all the FORWARD and REVERSED faces in <S> are computed.
-- If OnlyClosed is True then computed faces must belong to closed Shells.
-- Adaptive 2D Gauss integration is used.
-- Parameter IsUseSpan says if it is necessary to define spans on a face.
-- This option has an effect only for BSpline faces.
-- Parameter Eps sets maximal relative error of computed property for each face.
-- Error is delivered by the adaptive Gauss-Kronrod method of integral computation
-- that is used for properties computation.
-- Method returns estimation of relative error reached for whole shape.
-- Returns negative value if the computation is failed.
VolumePropertiesGK(S : Shape from TopoDS;
VProps : in out GProps from GProp;
thePln: Pln from gp;
Eps : Real from Standard = 0.001;
OnlyClosed: Boolean from Standard = Standard_False;
IsUseSpan : Boolean from Standard = Standard_False;
CGFlag : Boolean from Standard = Standard_False;
IFlag : Boolean from Standard = Standard_False)
returns Real;
end BRepGProp;
|