CFx SDK Documentation
2026 SP0
Loading...
Searching...
No Matches
SDK
CFx
dd_inc
Gi
GiShellToolkit.h
Go to the documentation of this file.
1
2
// Copyright (C) 2002-2024, Open Design Alliance (the "Alliance").
3
// All rights reserved.
4
//
5
// This software and its documentation and related materials are owned by
6
// the Alliance. The software may only be incorporated into application
7
// programs owned by members of the Alliance, subject to a signed
8
// Membership Agreement and Supplemental Software License Agreement with the
9
// Alliance. The structure and organization of this software are the valuable
10
// trade secrets of the Alliance and its suppliers. The software is also
11
// protected by copyright law and international treaty provisions. Application
12
// programs incorporating this software must include the following statement
13
// with their copyright notices:
14
//
15
// This application incorporates Open Design Alliance software pursuant to a license
16
// agreement with Open Design Alliance.
17
// Open Design Alliance Copyright (C) 2002-2024 by Open Design Alliance.
18
// All rights reserved.
19
//
20
// By use of this software, its documentation or related materials, you
21
// acknowledge and accept the above terms.
23
#ifndef ODGI_SHELLTOOLKIT_H_INCLUDED
24
#define ODGI_SHELLTOOLKIT_H_INCLUDED
25
26
#include "
OdVector.h
"
27
#include "
Ge/GeExtents3d.h
"
28
#include "
GiGeometry.h
"
29
37
class
ODGI_EXPORT
OdGiShellToolkit
:
public
OdRxObject
38
{
39
public
:
40
44
enum
ShellToolkitOption
45
{
47
kUnifyVertices
= 1,
49
kTriangulateHoles
= 1 << 1,
51
kForceTriangulation
= 1 << 2,
53
kKeepInitialData
= 1 << 3
54
};
55
59
class
ODGI_EXPORT
OdGiShellFaceOrientationCallback
60
{
61
public
:
62
72
virtual
bool
isFaceOrientedCorrectly
(
const
OdGePoint3d
* pts,
const
OdInt32
* face )
const
73
{
74
return
true
;
75
}
76
};
77
81
struct
ODGI_EXPORT
OdGiShellOriginalFaceDescription
82
{
85
OdUInt32
nShell
;
87
OdUInt32
nOffset
;
88
};
89
93
struct
ODGI_EXPORT
OdGiShellFaceDescription
94
{
97
OdUInt32
nOffset
;
98
};
99
103
struct
ODGI_EXPORT
OdGiShellEdgeDescription
104
{
106
OdGiShellFaceDescription
face
;
108
OdUInt32
nEdge
;
109
};
110
114
struct
ODGI_EXPORT
OdGiShellEdgeVisibilityDescription
115
{
117
OdGiShellEdgeDescription
edge
;
119
bool
bVisible
;
120
};
121
125
struct
ODGI_EXPORT
OdGiShellEdgeVisibilityOptions
126
{
128
bool
bDuplicateEdges
;
130
bool
bVisibleOnly
;
132
bool
bIgnoreFlatHoles
;
133
137
OdGiShellEdgeVisibilityOptions
() :
bDuplicateEdges
(
false
),
bVisibleOnly
(
true
),
bIgnoreFlatHoles
(
false
){}
138
146
OdGiShellEdgeVisibilityOptions
(
bool
bDuplicate,
bool
bVisible,
bool
bNoFlatHoles =
false
) :
bDuplicateEdges
( bDuplicate ),
bVisibleOnly
( bVisible ),
bIgnoreFlatHoles
( bNoFlatHoles ) {}
147
};
148
149
ODRX_DECLARE_MEMBERS
(
OdGiShellToolkit
);
150
155
static
OdSmartPtr<OdGiShellToolkit>
create
();
156
176
virtual
bool
addShell
(
OdUInt32
nPoints,
const
OdGePoint3d
* pPoints,
OdUInt32
nFaces,
const
OdInt32
* pFaces,
OdUInt8
options =
OdGiShellToolkit::kTriangulateHoles
) = 0;
177
181
virtual
void
clear
() = 0;
182
188
virtual
bool
hasDupilcateVertices
()
const
= 0;
189
197
virtual
OdUInt32
numSharpEdges
(
bool
bOnlyCount =
true
)
const
= 0;
198
206
virtual
OdUInt32
numSingularEdges
(
bool
bOnlyCount =
true
)
const
= 0;
207
213
virtual
OdUInt32
numDegeneratedFaces
()
const
= 0;
214
224
virtual
bool
hasDuplicateFaces
(
OdUInt32
* pFirstDuplicateFace = NULL,
bool
bRollFaces =
false
)
const
= 0;
225
233
virtual
bool
checkFacesOrientation
()
const
= 0;
234
244
virtual
bool
checkFacesOrientation
(
const
OdGiShellFaceOrientationCallback
* pCallback )
const
= 0;
245
249
virtual
void
unifyVertices
() = 0;
250
254
virtual
void
removeDegenerateFaces
() = 0;
255
263
virtual
void
removeDuplicateFaces
(
bool
bRollFaces =
false
) = 0;
264
277
virtual
bool
fixFaceOrientation
(
bool
bRestoreModel =
true
) = 0;
278
293
virtual
bool
fixFaceOrientation
(
const
OdGiShellFaceOrientationCallback
* pCallback,
bool
bRestoreModel =
true
) = 0;
294
303
virtual
OdGeTol
&
tolerance
() = 0;
304
310
virtual
const
OdGeTol
&
tolerance
()
const
= 0;
311
316
virtual
OdUInt32
numVertices
()
const
= 0;
317
322
virtual
const
OdGePoint3d
*
vertices
()
const
= 0;
323
329
virtual
OdUInt32
faceListSize
()
const
= 0;
330
337
virtual
const
OdInt32
*
faceList
()
const
= 0;
338
349
virtual
void
getSharpEdges
(
OdArray< OdGiShellEdgeDescription >
& edges,
bool
bOnlyCount =
true
,
bool
bIgnoreZeroHoldes =
false
)
const
= 0;
350
357
virtual
void
getSingularEdges
(
OdArray< OdGiShellToolkit::OdGiShellEdgeDescription >
& edges,
bool
bOnlyCount =
true
)
const
= 0;
358
366
virtual
void
getIncorrectOrientedFaces
(
OdArray< OdGiShellFaceDescription >
& faces,
bool
bAddNotOriented =
true
)
const
= 0;
367
376
virtual
void
getIncorrectOrientedFaces
(
const
OdGiShellFaceOrientationCallback
* pCallback,
OdArray< OdGiShellFaceDescription >
& faces,
bool
bAddNotOriented =
true
)
const
= 0;
377
387
virtual
bool
getOriginalFaceDescription
(
OdUInt32
nFaceOffset,
OdGiShellOriginalFaceDescription
& result )
const
= 0;
388
399
virtual
void
filterEdgesByCreaseAngle
(
OdArray< OdGiShellToolkit::OdGiShellEdgeDescription >
& edges,
double
dAngle )
const
= 0;
400
405
virtual
OdUInt32
numNonTriangleFaces
()
const
= 0;
406
410
virtual
void
triangulate
() = 0;
411
425
virtual
bool
calculateFaceNormals
(
OdArray< OdGeVector3d >
& normals )
const
= 0;
426
440
virtual
bool
calculateAverageVertexNormals
(
OdArray< OdGeVector3d >
& normals )
const
= 0;
441
453
typedef
OdGeVector3d
( *
OdGiCalculateNormalCallback
)(
OdGiShellToolkit
* pToolkit,
OdUInt32
nVertexIndex );
454
472
virtual
bool
calculateAverageVertexNormals
(
OdArray< OdGeVector3d >
& normals,
double
creaseAngelLimit,
OdGiCalculateNormalCallback
pCallback = NULL )
const
= 0;
473
486
virtual
bool
calculateEdgeVisibilitiesByCreaseAngle
(
OdArray< bool >
& visibilities,
double
creaseAngle )
const
= 0;
487
504
virtual
bool
calculateEdgeVisibilitiesByCreaseAngle
(
OdArray< OdGiShellEdgeVisibilityDescription >
& visibilities,
double
creaseAngle,
const
OdGiShellEdgeVisibilityOptions
& options =
OdGiShellEdgeVisibilityOptions
() )
const
= 0;
505
};
506
509
typedef
OdSmartPtr<OdGiShellToolkit>
OdGiShellToolkitPtr
;
510
511
#endif
512
513
true
true
Definition
DimVarDefs.h:2046
false
false
Definition
DimVarDefs.h:165
GeExtents3d.h
ODGI_EXPORT
#define ODGI_EXPORT
Definition
GiExport.h:35
GiGeometry.h
OdGiShellToolkitPtr
OdSmartPtr< OdGiShellToolkit > OdGiShellToolkitPtr
Definition
GiShellToolkit.h:509
OdUInt32
unsigned int OdUInt32
Definition
OdPlatformSettings.h:768
OdInt32
int OdInt32
Definition
OdPlatformSettings.h:767
OdUInt8
unsigned char OdUInt8
Definition
OdPlatformSettings.h:744
OdVector.h
OdArray
Definition
OdArray.h:835
OdGePoint3d
Definition
GePoint3d.h:57
OdGeTol
Definition
GeTol.h:49
OdGeVector3d
Definition
GeVector3d.h:55
OdGiShellToolkit::OdGiShellFaceOrientationCallback
Definition
GiShellToolkit.h:60
OdGiShellToolkit::OdGiShellFaceOrientationCallback::isFaceOrientedCorrectly
virtual bool isFaceOrientedCorrectly(const OdGePoint3d *pts, const OdInt32 *face) const
Definition
GiShellToolkit.h:72
OdGiShellToolkit
Definition
GiShellToolkit.h:38
OdGiShellToolkit::getOriginalFaceDescription
virtual bool getOriginalFaceDescription(OdUInt32 nFaceOffset, OdGiShellOriginalFaceDescription &result) const =0
OdGiShellToolkit::hasDupilcateVertices
virtual bool hasDupilcateVertices() const =0
OdGiShellToolkit::numSingularEdges
virtual OdUInt32 numSingularEdges(bool bOnlyCount=true) const =0
OdGiShellToolkit::tolerance
virtual const OdGeTol & tolerance() const =0
OdGiShellToolkit::numDegeneratedFaces
virtual OdUInt32 numDegeneratedFaces() const =0
OdGiShellToolkit::faceList
virtual const OdInt32 * faceList() const =0
OdGiShellToolkit::calculateAverageVertexNormals
virtual bool calculateAverageVertexNormals(OdArray< OdGeVector3d > &normals, double creaseAngelLimit, OdGiCalculateNormalCallback pCallback=NULL) const =0
OdGiShellToolkit::removeDegenerateFaces
virtual void removeDegenerateFaces()=0
OdGiShellToolkit::ShellToolkitOption
ShellToolkitOption
Definition
GiShellToolkit.h:45
OdGiShellToolkit::kUnifyVertices
@ kUnifyVertices
Definition
GiShellToolkit.h:47
OdGiShellToolkit::kForceTriangulation
@ kForceTriangulation
Definition
GiShellToolkit.h:51
OdGiShellToolkit::kTriangulateHoles
@ kTriangulateHoles
Definition
GiShellToolkit.h:49
OdGiShellToolkit::kKeepInitialData
@ kKeepInitialData
Definition
GiShellToolkit.h:53
OdGiShellToolkit::checkFacesOrientation
virtual bool checkFacesOrientation(const OdGiShellFaceOrientationCallback *pCallback) const =0
OdGiShellToolkit::numSharpEdges
virtual OdUInt32 numSharpEdges(bool bOnlyCount=true) const =0
OdGiShellToolkit::fixFaceOrientation
virtual bool fixFaceOrientation(const OdGiShellFaceOrientationCallback *pCallback, bool bRestoreModel=true)=0
OdGiShellToolkit::fixFaceOrientation
virtual bool fixFaceOrientation(bool bRestoreModel=true)=0
OdGiShellToolkit::getIncorrectOrientedFaces
virtual void getIncorrectOrientedFaces(const OdGiShellFaceOrientationCallback *pCallback, OdArray< OdGiShellFaceDescription > &faces, bool bAddNotOriented=true) const =0
OdGiShellToolkit::create
static OdSmartPtr< OdGiShellToolkit > create()
OdGiShellToolkit::getSingularEdges
virtual void getSingularEdges(OdArray< OdGiShellToolkit::OdGiShellEdgeDescription > &edges, bool bOnlyCount=true) const =0
OdGiShellToolkit::numNonTriangleFaces
virtual OdUInt32 numNonTriangleFaces() const =0
OdGiShellToolkit::calculateEdgeVisibilitiesByCreaseAngle
virtual bool calculateEdgeVisibilitiesByCreaseAngle(OdArray< OdGiShellEdgeVisibilityDescription > &visibilities, double creaseAngle, const OdGiShellEdgeVisibilityOptions &options=OdGiShellEdgeVisibilityOptions()) const =0
OdGiShellToolkit::calculateAverageVertexNormals
virtual bool calculateAverageVertexNormals(OdArray< OdGeVector3d > &normals) const =0
OdGiShellToolkit::vertices
virtual const OdGePoint3d * vertices() const =0
OdGiShellToolkit::unifyVertices
virtual void unifyVertices()=0
OdGiShellToolkit::triangulate
virtual void triangulate()=0
OdGiShellToolkit::OdGiCalculateNormalCallback
OdGeVector3d(* OdGiCalculateNormalCallback)(OdGiShellToolkit *pToolkit, OdUInt32 nVertexIndex)
Definition
GiShellToolkit.h:453
OdGiShellToolkit::addShell
virtual bool addShell(OdUInt32 nPoints, const OdGePoint3d *pPoints, OdUInt32 nFaces, const OdInt32 *pFaces, OdUInt8 options=OdGiShellToolkit::kTriangulateHoles)=0
OdGiShellToolkit::calculateEdgeVisibilitiesByCreaseAngle
virtual bool calculateEdgeVisibilitiesByCreaseAngle(OdArray< bool > &visibilities, double creaseAngle) const =0
OdGiShellToolkit::filterEdgesByCreaseAngle
virtual void filterEdgesByCreaseAngle(OdArray< OdGiShellToolkit::OdGiShellEdgeDescription > &edges, double dAngle) const =0
OdGiShellToolkit::calculateFaceNormals
virtual bool calculateFaceNormals(OdArray< OdGeVector3d > &normals) const =0
OdGiShellToolkit::tolerance
virtual OdGeTol & tolerance()=0
OdGiShellToolkit::clear
virtual void clear()=0
OdGiShellToolkit::getSharpEdges
virtual void getSharpEdges(OdArray< OdGiShellEdgeDescription > &edges, bool bOnlyCount=true, bool bIgnoreZeroHoldes=false) const =0
OdGiShellToolkit::faceListSize
virtual OdUInt32 faceListSize() const =0
OdGiShellToolkit::numVertices
virtual OdUInt32 numVertices() const =0
OdGiShellToolkit::getIncorrectOrientedFaces
virtual void getIncorrectOrientedFaces(OdArray< OdGiShellFaceDescription > &faces, bool bAddNotOriented=true) const =0
OdGiShellToolkit::ODRX_DECLARE_MEMBERS
ODRX_DECLARE_MEMBERS(OdGiShellToolkit)
OdGiShellToolkit::hasDuplicateFaces
virtual bool hasDuplicateFaces(OdUInt32 *pFirstDuplicateFace=NULL, bool bRollFaces=false) const =0
OdGiShellToolkit::checkFacesOrientation
virtual bool checkFacesOrientation() const =0
OdGiShellToolkit::removeDuplicateFaces
virtual void removeDuplicateFaces(bool bRollFaces=false)=0
OdSmartPtr
Definition
SmartPtr.h:58
OdGiShellToolkit::OdGiShellEdgeDescription
Definition
GiShellToolkit.h:104
OdGiShellToolkit::OdGiShellEdgeDescription::face
OdGiShellFaceDescription face
Definition
GiShellToolkit.h:106
OdGiShellToolkit::OdGiShellEdgeDescription::nEdge
OdUInt32 nEdge
Definition
GiShellToolkit.h:108
OdGiShellToolkit::OdGiShellEdgeVisibilityDescription
Definition
GiShellToolkit.h:115
OdGiShellToolkit::OdGiShellEdgeVisibilityDescription::edge
OdGiShellEdgeDescription edge
Definition
GiShellToolkit.h:117
OdGiShellToolkit::OdGiShellEdgeVisibilityDescription::bVisible
bool bVisible
Definition
GiShellToolkit.h:119
OdGiShellToolkit::OdGiShellEdgeVisibilityOptions
Definition
GiShellToolkit.h:126
OdGiShellToolkit::OdGiShellEdgeVisibilityOptions::OdGiShellEdgeVisibilityOptions
OdGiShellEdgeVisibilityOptions()
Definition
GiShellToolkit.h:137
OdGiShellToolkit::OdGiShellEdgeVisibilityOptions::bDuplicateEdges
bool bDuplicateEdges
Definition
GiShellToolkit.h:128
OdGiShellToolkit::OdGiShellEdgeVisibilityOptions::bIgnoreFlatHoles
bool bIgnoreFlatHoles
Definition
GiShellToolkit.h:132
OdGiShellToolkit::OdGiShellEdgeVisibilityOptions::OdGiShellEdgeVisibilityOptions
OdGiShellEdgeVisibilityOptions(bool bDuplicate, bool bVisible, bool bNoFlatHoles=false)
Definition
GiShellToolkit.h:146
OdGiShellToolkit::OdGiShellEdgeVisibilityOptions::bVisibleOnly
bool bVisibleOnly
Definition
GiShellToolkit.h:130
OdGiShellToolkit::OdGiShellFaceDescription
Definition
GiShellToolkit.h:94
OdGiShellToolkit::OdGiShellFaceDescription::nOffset
OdUInt32 nOffset
Definition
GiShellToolkit.h:97
OdGiShellToolkit::OdGiShellOriginalFaceDescription
Definition
GiShellToolkit.h:82
OdGiShellToolkit::OdGiShellOriginalFaceDescription::nShell
OdUInt32 nShell
Definition
GiShellToolkit.h:85
OdGiShellToolkit::OdGiShellOriginalFaceDescription::nOffset
OdUInt32 nOffset
Definition
GiShellToolkit.h:87
Generated on Tue Apr 15 2025 11:30:02