You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: compositemodel/include/GoTools/compositemodel/compositemodel-doxymain.h
+96-10Lines changed: 96 additions & 10 deletions
Original file line number
Diff line number
Diff line change
@@ -71,21 +71,21 @@ A CAD model can normally not be represented by one geometry entity like
71
71
the ones in gotools-core. The need for sets of entities, adjacency analysis and
72
72
representation of adjacency arises. There is a need for topological structures.
73
73
74
-
\link Go::Body \endlink is a boundary represented solid model. It is a virtual volume limited
74
+
\link Go::Body Body \endlink is a boundary represented solid model. It is a virtual volume limited
75
75
by one or more shells, one outer and possibly a number of inner ones. The
76
76
shells are represented by the class SurfaceModel which is also the entity used
77
-
to represent a face set. In addition to being a topological entity, \link Go::SurfaceModel \endlink
77
+
to represent a face set. In addition to being a topological entity, \link Go::SurfaceModel SurfaceModel \endlink
78
78
provides an interface which views the set of surfaces as one entity. Thus, an
79
79
operation like closest point computation can be performed without caring
80
80
about which surface is closest to the point.
81
81
82
82
The surface model consists of a set of faces represented by the class
83
-
\link Go::ftSurface \endlink. The face represents the abstract idea of a bounded surface, but it also
83
+
\link Go::ftSurface ftSurface \endlink. The face represents the abstract idea of a bounded surface, but it also
84
84
has a pointer to the geometric representation of this surface. The geometric
85
-
surface is a \link Go::ParamSurface \endlink, it may be a NURBS surface, an elementary surface
85
+
surface is a \link Go::ParamSurface ParamSurface \endlink, it may be a NURBS surface, an elementary surface
86
86
or a trimmed version thereof. The face is bounded by one or more loops,
87
87
one outer and possibly a number of inner ones. The inner loops represents
88
-
holes in the surface. Then the geometric surface will always be a \link Go::BoundedSurface \endlink. All
88
+
holes in the surface. Then the geometric surface will always be a \link Go::BoundedSurface BoundedSurface \endlink. All
89
89
faces have an outer loop which either represents an outer trimming curve in
90
90
the case of a BoundedSurface or the surface boundary.
91
91
@@ -106,7 +106,7 @@ as a point. A vertex has knowledge about all edges meeting in this point.
106
106
\section comp_sec2 CompositeModel
107
107
SurfaceModel represents the shell in a boundary represented geometry model,
108
108
but it is also the entity that is used to view a surface set as one unity. In
109
-
this context, it inherits the abstract superclass \link Go::CompositeModel \endlink that defines
109
+
this context, it inherits the abstract superclass \link Go::CompositeModel CompositeModel \endlink that defines
110
110
an interface for a unity of geometry entities of the same type. All composite
111
111
models can
112
112
Report how many entities it consist of
@@ -128,20 +128,20 @@ be specified. The resolution is defined from the composite model. This can
128
128
either be done setting a resolution for all entities or by a density parameter
129
129
that governs the resolution. The composite model tesselation routines return
130
130
a vector of shared pointers to a GeneralMesh. The type of meshes used for the
131
-
concrete tesselation results are \link Go::LineStrip \endlink,
132
-
\link Go::RegularMesh \endlink and \link Go::GenericTriMesh \endlink.
131
+
concrete tesselation results are \link Go::LineStrip LineStrip \endlink,
132
+
\link Go::RegularMesh RegularMesh \endlink and \link Go::GenericTriMeshGenericTriMesh GenericTriMeshGenericTriMesh \endlink.
133
133
134
134
The control polygon of the composite model or a selected subset of the
135
135
model may be tesselated. In that case the output mesh is represented as a
136
-
\link Go::LineCloud \endlink. LineCloud is an entity in gotools-core/geometry.
136
+
\link Go::LineCloud LineCloud \endlink. LineCloud is an entity in gotools-core/geometry.
137
137
138
138
\subsection comp_sec2_2 CompositeCurve
139
139
A \link Go::CompositeCurve composite curve \endlink
140
140
is an ordered collection of curves. The class expects a set
141
141
of curves and will orient them order them in a sequence. The curve set should
142
142
preferably be continuous, but also discontinuous set may be represented.
143
143
144
-
A composite curve will contain a number of \link Go::ParamCurves \endlink, ordering
144
+
A composite curve will contain a number of \link Go::ParamCurve ParamCurves \endlink, ordering
145
145
information and continuity information. The curve sequence will be parameterized as a
146
146
unity. Curve indices follow the indices for the curves given as
147
147
input to the object. The class has the following type specific functionality:
@@ -237,6 +237,92 @@ size of the model. An upper bound of the tesselation size exists, but a large
237
237
model combined with a small density will still lead to a heavy visualization
238
238
model.
239
239
240
+
\subsection comp_sec2_5 Tolerances
241
+
The constructor of subclasses of \link Go::CompositeModel compositemodel \endlink requires a set of tolerances to be defined. With the exception of approxtol, these tolerances are used to compute adjacency between entities and to check the continuity between adjacent entities.
242
+
243
+
\subsection comp_sec2_6 Intersection results
244
+
245
+
Intersections performed in the composite model class either return the intersection results in a format particular to the concrete composite model subclass, or the intersection results are stored in a subclass of \link Go::IntResultsModel IntResultsModel \endlink. In the latter case, intersections can be performed without caring about the composite model type.
246
+
247
+
IntResultsModel stores the intersection results and the entities involved in the intersection and has the following functionality:
248
+
249
+
\li Report upon the existence and number of intersection points and intersection curve segments
250
+
\li Tesselate itself
251
+
252
+
The actual geometry of the intersection results must be fetched from the subclasses
253
+
\link Go::IntResultsSfModel IntResultsSfModel\endlink and \link Go::IntResultsCompCv IntResultsCompCv \endlink. The intersection results classes are very lean, but have the potential to get a rich set of functionality operating on intersection results.
254
+
255
+
SurfaceModel returns intersection results either as IntResultsSfModel or as
256
+
\link Go::ftCurve ftCurve \endlink and a vector of \link Go::ftPoints ftPoints \endlink. It is also possible to fetch intersection results from IntResultSfModel as ftCurve and ftPoint.
257
+
258
+
An ftCurve is composed of a number of ftCurveSegments. An ftCurveSegment represents a piece of an intersection curve. The segment is represented by a spatial curve and a curve in the parameter domain of the parametric entities involved in the intersection, which will be one or two. Thus, the curve segments distinguish between the individual surfaces in a surface set while ftCurve itself does not. ftCurve keeps track of the continuity between the segments it is composed of. An ftCurve is able to tesselate itself.
259
+
260
+
An ftPoint relates to one face, i.e., an \link Go::ftSurface ftSurface\endlink,
261
+
and has a geometric representation and a parameter domain representation. Each intersection point, for instance in an intersection between a surface model and a line, is represented as an ftPoint. The application has access to the position of this point, to the face with which it is associated and the parameter values in this face.
262
+
263
+
A composite curve represents its intersection results as an instance of
264
+
\link Go::IntResultsCompCv IntResultsCompCv\endlink. Intersection points, which are the expected result in this case, are represented as \link Go::PointOnCurve PointOnCurve\endlink. Intersection curve segments are represented as pairs of PointOnCurves. The two points limit the extension of the intersection curve segment. The class
265
+
PointOnCurve lies in the gotools-core/geometry submodule and holds a parametric curve, a parameter value and the geometric representation of the point. This content is accessible from the public user interface.
266
+
267
+
\subsection comp_sec2_7 The topological face
268
+
The topological face (\link Go::ftSurface ftSurface\endlink)
269
+
has access to the geometric representation of this face and information about neighbouring faces. In addition, it has knowledge about the solid (\link Go::Body Body\endlink) it belongs to, if any.
270
+
271
+
The geometric surface is of type ParamSurface and described in the documentation of the gotools-core/geometry submodule.
272
+
273
+
The face is limited by a number of \link Go::Loop Loops\endlink. The geometric surface corresponding to a face corresponds to the trimmed face, so the information present in the boundary loops of the face does also exist in the surface description.
274
+
275
+
ftSurface has a rich set of functionality of different types:
276
+
277
+
- Access functionality
278
+
- Fetch the corresponding surface
279
+
- Fetch boundary loops
280
+
- Fetch edges belonging to the boundary loops
281
+
- Fetch neighbouring faces
282
+
- Fetch all vertices or subsets of vertices
283
+
- Fetch the body owning this face
284
+
- Fetch all bodies meeting in this face, maximum 2
285
+
- Fetch the coincident face in a volume model
286
+
.
287
+
- Quality checking
288
+
- Check for discontinuities in the surface
289
+
- Check the distance between a face and corresponding edges and vertices
290
+
- Check the orientation of loops belonging to the face
291
+
- Check if the face has a narrow region
292
+
- Check for acute angles in the boundary loops
293
+
.
294
+
- Functionality related to an isogeometric model
295
+
- Check if the corresponding surface is a spline
296
+
- Check if this face and the neighbouring face have corresponding spline spaces
297
+
- Ensure that this face and the neighbouring face have corresponding spline spaces
298
+
- Check if this face and the neighbouring face satisfy a corner-to-corner condition
299
+
- Ensure that this face and the neighbouring face satisfy a corner-to-corner condition
300
+
- Fetch adjacency information between this face and a neighbouring face
301
+
- Fetch information about boundaries where the face has no neighbouring face
302
+
- Fetch information about coefficient enumerations for spline surface belonging to adjacent faces and free boundaries
303
+
.
304
+
- Other queries
305
+
- Evaluations
306
+
- Closest point computations
307
+
- Perform smoothing on the current face
308
+
- Compute bounding box
309
+
310
+
\subsection comp_sec2_8 The topological edge
311
+
The topological edge is implemented in the class \link Go::ftEdge ftEdge\endlink
312
+
and it is a half-edge. Thus, it contains information related to one face only. However, it has access to the corresponding half-edge when the edge represents a boundary between two adjacent faces. The topological edge has a geometric representation as a ParamCurve. The edge may represent a restriction of the curve. This restriction is implemented using limiting parameters in the parameter interval of the curve.
313
+
314
+
The main functionality is:
315
+
316
+
\li Fetch the curve representing the geometry description of the edge
317
+
\li Fetch the parameters limiting the edge compared to the corresponding curve
318
+
\li Fetch the face to which the edge belongs
319
+
\li Given an edge parameter, compute the corresponding face parameter
320
+
\li Access to geometry information like bounding box, results of evaluation, closest point computations and an estimate of the curve length
321
+
\li Information about the vertices limiting the edge, i.e., access to vertices and the edge parameter corresponding to a vertex
322
+
\li Access to the radial edge if this entity exist. A radial edge is defined in volume model and the entity is described in the [[documentation of the trivariatemodel module|Module TrivariateModel]].
323
+
\li Get all surfaces meeting in this edge, with a maximum of two
324
+
325
+
240
326
\section comp_sec3 Reverse engineering
241
327
The aim is to go from a triangulated point cloud to a boundary represented
242
328
CAD model. See \link reverseengineering_doc the reverse engineering page\endlink
0 commit comments