CFx SDK Documentation  2020SP3
Classes | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Friends | List of all members
FacetModeler::Body Class Reference

#include <FMMdlBody.h>

Classes

struct  SurfaceData
 

Public Member Functions

 Body ()
 
 Body (const Body &B)
 
 ~Body ()
 
Bodyoperator= (const Body &B)
 
void clear ()
 
Body clone () const
 
void transform (const OdGeMatrix3d &mMatrix)
 
void negate ()
 
bool isNull () const
 
bool isClosed () const
 
bool mergeCoincidentVertices ()
 
void mergeCoplanarEntities ()
 
bool containsNonManifoldEdges () const
 
void decomposeIntoLumps (std::vector< Body > &aLumps)
 
Body combine (Body &rAnother)
 
OdUInt32 vertexCount () const
 
FacetModeler::VertexaddVertex (const OdGePoint3d &pt)
 
OdUInt32 countEdges () const
 
OdUInt32 cachedEdgesCount () const
 
OdUInt32 faceCount () const
 
FacetModeler::FaceaddFace (Surface *pSurface=0)
 
OdUInt32 surfaceCount () const
 
void addSurface (Surface *pSurface)
 
FacetModeler::FacefaceList () const
 
FacetModeler::VertexvertexList () const
 
SurfacesurfaceList () const
 
void clearVertexTags (FacetModeler::AecTagType clearValue=0)
 
void clearSurfaceTags (FacetModeler::AecTagType clearValue=0)
 
void clearEdgeTags (FacetModeler::AecTagType clearValue=0)
 
void clearFaceTags (FacetModeler::AecTagType clearValue=0)
 
void clearBodyTags (FacetModeler::AecTagType clearValue=0)
 
FacetModeler::AecTagType tag () const
 
void setTag (FacetModeler::AecTagType iTag)
 
void deleteUnusedVertices ()
 
OdGeExtents3d interval () const
 
double volume () const
 
void slice (const OdGePlane &rCutter, Profile3D &rResult, bool bIncludeBoundary=true) const
 
void sliceFaceDbg (const OdGePlane &rCutter, OdUInt32 faceNum)
 
void slice (const OdGePlane &rCutter, Profile2D *pResultIncludingBoundary, Profile2D *pResultExcludingCoincidingBoundary=0, Profile2D *pResultExcludingOppositeBoundary=0, Profile2D *pResultExcludingBoundary=0, FaceConstPtrArray *pCoincidingFaces=0, FaceConstPtrArray *pOppositeFaces=0) const
 
void slice (const Contour2D &cCutLine, const OdGePlane &pProjectOn, Profile3D &rResult, bool bIncludeBoundary=true) const
 
bool intersectLine (const OdGeLinearEnt3d &gLine, std::vector< OdGePoint3d > &vecPoints, bool bSortResults=false) const
 
bool operator== (const Body &aBody) const
 
bool operator!= (const Body &aBody) const
 
void resetColors ()
 
void splitFace (FacetModeler::Face *pFace, const OdGePlane &pPlane, std::vector< FacetModeler::Face * > *pNewOuter=0, std::vector< FacetModeler::Face * > *pNewInner=0)
 
void addFace (FacetModeler::Face *pFace)
 
void removeFace (FacetModeler::Face *pFace)
 
void deleteFace (FacetModeler::Face *pFace)
 
void regeneratePairEdges ()
 
bool checkInternalConsistence (OdString *pFirstErrorDetected=0) const
 
bool hasCoincidentEdges () const
 
bool hasCoincidentVertices () const
 
void clone_impl_if_referenced ()
 
FacetModeler::VertexgetVertexList ()
 
void setVertexList (FacetModeler::Vertex *pList)
 
FacetModeler::SurfacegetSurfaceList ()
 
void setSurfaceList (FacetModeler::Surface *pList)
 
OdUInt32 getSurfaceCount ()
 
void setSurfaceCount (OdUInt32 count)
 
void setVertexCount (OdUInt32 count)
 

Static Public Member Functions

static Body box (const OdGePoint3d &ptOrigin, const OdGeVector3d &vSizes)
 
static Body pyramid (const Profile2D &rBase, const OdGePoint3d &ptApex, const DeviationParams &devDeviation=FMGeGbl::gDefDev)
 
static Body extrusion (const Profile2D &rBase, const OdGeVector3d &vDir, const DeviationParams &devDeviation=FMGeGbl::gDefDev)
 
static Body revolution (const Profile2D &rBase, double dRadius, double dHeight, const DeviationParams &devDeviation=FMGeGbl::gDefDev)
 
static Body revolution (const Profile2D &base, const OdGeCircArc3d &revolutionAxisAndAngles, const DeviationParams &deviation=FMGeGbl::gDefDev, const OdGeMatrix2d *pBaseTransform=0)
 
static Body insideBody (const Profile2D &rBase, double dDepth, double dDepthOrigin, const DeviationParams &devDeviation=FMGeGbl::gDefDev)
 
static Body insideFrame (const Profile2D &rBase, double dWidth, double dDepth, double dDepthOrigin, const DeviationParams &devDeviation=FMGeGbl::gDefDev)
 
static Body infExtrusion (const Body &rBase, const Profile3D &rCutter, const DeviationParams &devDeviation=FMGeGbl::gDefDev)
 
static Body singleFace (const Profile2D &rBase, const DeviationParams &devDeviation=FMGeGbl::gDefDev)
 
static Body custom (const std::vector< OdGePoint3d > &aVertices, const std::vector< OdInt32 > &aFaceData, const std::vector< OdUInt32 > *aEdgeFlags=0, const std::vector< OdUInt32 > *aFaceFlags=0, const std::vector< OdUInt32 > *aVertexFlags=0, const SurfaceData *pSurfaceData=0)
 
static Body customC (const std::vector< OdGePoint3d > &aVertices, const std::vector< OdInt32 > &aFaceData, const std::vector< OdUInt32 > *aEdgeFlags=0, const std::vector< OdUInt32 > *aFaceFlags=0, const std::vector< OdUInt32 > *aVertexFlags=0, const SurfaceData *pSurfaceData=0, std::vector< OdUInt32 > *pFaceColors=0, std::vector< OdUInt32 > *pEdgeColors=0)
 
static Body boolOper (BooleanOperation eOperation, Body &rOperandA, Body &rOperandB)
 
static Body cutWithExtrusion (Body &rBase, const Profile3D &rCutter, bool bInside, double dDepth, const DeviationParams &devDeviation=FMGeGbl::gDefDev)
 
static Body cutWithInfExtrusion (Body &rBase, const Profile3D &rCutter, bool bInside, const DeviationParams &devDeviation=FMGeGbl::gDefDev)
 
static Body customInternal (const std::vector< OdGePoint3d > &aVertices, const std::vector< OdInt32 > &aFaceData, bool bRemoveTJ, const std::vector< OdUInt32 > *aEdgeFlags=0, const std::vector< OdUInt32 > *aFaceFlags=0, const std::vector< OdUInt32 > *aVertexFlags=0, const SurfaceData *pSurfaceData=0, const std::vector< OdUInt32 > *aFaceColors=0, const std::vector< OdUInt32 > *aEdgeColors=0)
 

Static Public Attributes

static FMGEOMETRY_API_STATIC const Body kEmpty
 

Protected Member Functions

 Body (class BodyImpl *pImpl)
 

Friends

class Vertex
 
class Face
 
class Surface
 
class BodyImpl
 
class BodyInternalConsistencyRestorer
 

Detailed Description

Facet body.

Definition at line 46 of file FMMdlBody.h.

Constructor & Destructor Documentation

◆ Body() [1/3]

FacetModeler::Body::Body ( class BodyImpl pImpl)
protected

◆ Body() [2/3]

FacetModeler::Body::Body ( )

Constructor.

◆ Body() [3/3]

FacetModeler::Body::Body ( const Body B)

Copy constructor.

Remarks
Ddoesn't create copy of the body - it only copy references.

◆ ~Body()

FacetModeler::Body::~Body ( )

Destructor.

Member Function Documentation

◆ addFace() [1/2]

void FacetModeler::Body::addFace ( FacetModeler::Face pFace)

Adds face. Low level operation!

◆ addFace() [2/2]

FacetModeler::Face* FacetModeler::Body::addFace ( Surface pSurface = 0)

◆ addSurface()

void FacetModeler::Body::addSurface ( Surface pSurface)

◆ addVertex()

FacetModeler::Vertex* FacetModeler::Body::addVertex ( const OdGePoint3d pt)

◆ boolOper()

static Body FacetModeler::Body::boolOper ( BooleanOperation  eOperation,
Body rOperandA,
Body rOperandB 
)
static

Performs boolean operation. Destroys both operand.

Parameters
eOperation[in] Boolean operation type.
rOperandA[in] Operand A.
rOperandB[in] Operand B.
Returns
Resulting body.

◆ box()

static Body FacetModeler::Body::box ( const OdGePoint3d ptOrigin,
const OdGeVector3d vSizes 
)
static

Creates box.

Parameters
ptOrigin[in] Origin.
vSizes[in] Three box sizes.
Returns
Resulting body.

◆ cachedEdgesCount()

OdUInt32 FacetModeler::Body::cachedEdgesCount ( ) const

Returns cached edge count (that was calculated in most recent countEdges() call ).

◆ checkInternalConsistence()

bool FacetModeler::Body::checkInternalConsistence ( OdString pFirstErrorDetected = 0) const

◆ clear()

void FacetModeler::Body::clear ( )

Clears body.

◆ clearBodyTags()

void FacetModeler::Body::clearBodyTags ( FacetModeler::AecTagType  clearValue = 0)
inline

Clears body tags.

Definition at line 202 of file FMMdlBody.h.

◆ clearEdgeTags()

void FacetModeler::Body::clearEdgeTags ( FacetModeler::AecTagType  clearValue = 0)

Clears edge tags.

◆ clearFaceTags()

void FacetModeler::Body::clearFaceTags ( FacetModeler::AecTagType  clearValue = 0)

Clears face tags.

◆ clearSurfaceTags()

void FacetModeler::Body::clearSurfaceTags ( FacetModeler::AecTagType  clearValue = 0)

Clears body tags.

◆ clearVertexTags()

void FacetModeler::Body::clearVertexTags ( FacetModeler::AecTagType  clearValue = 0)

Clears vertex tags.

◆ clone()

Body FacetModeler::Body::clone ( ) const

Returns copy of the body.

◆ clone_impl_if_referenced()

void FacetModeler::Body::clone_impl_if_referenced ( )

◆ combine()

Body FacetModeler::Body::combine ( Body rAnother)

Combines this body and operand into single body.

Remarks
Clears this body and operand.

◆ containsNonManifoldEdges()

bool FacetModeler::Body::containsNonManifoldEdges ( ) const

◆ countEdges()

OdUInt32 FacetModeler::Body::countEdges ( ) const

Counts and returns number of edges.

◆ custom()

static Body FacetModeler::Body::custom ( const std::vector< OdGePoint3d > &  aVertices,
const std::vector< OdInt32 > &  aFaceData,
const std::vector< OdUInt32 > *  aEdgeFlags = 0,
const std::vector< OdUInt32 > *  aFaceFlags = 0,
const std::vector< OdUInt32 > *  aVertexFlags = 0,
const SurfaceData pSurfaceData = 0 
)
static

Creates custom body.

Parameters
aVertices[in] Vertex data.
aFaceData[in] Face data.
aEdgeFlags[in] Edge flags.
aFaceFlags[in] Face flags.
aVertexFlags[in] Vertex flags.
Returns
Resulting body.
Remarks
Only suitable for good input topology (without t-junctions). For bad topology use customRemoveTJ instead.

◆ customC()

static Body FacetModeler::Body::customC ( const std::vector< OdGePoint3d > &  aVertices,
const std::vector< OdInt32 > &  aFaceData,
const std::vector< OdUInt32 > *  aEdgeFlags = 0,
const std::vector< OdUInt32 > *  aFaceFlags = 0,
const std::vector< OdUInt32 > *  aVertexFlags = 0,
const SurfaceData pSurfaceData = 0,
std::vector< OdUInt32 > *  pFaceColors = 0,
std::vector< OdUInt32 > *  pEdgeColors = 0 
)
static

Creates custom body.

Parameters
aVertices[in] Vertex data.
aFaceData[in] Face data.
aEdgeFlags[in] Edge flags.
aFaceFlags[in] Face flags.
aVertexFlags[in] Vertex flags.
pFaceColors[in] Colors of the faces.
Returns
Resulting body.
Remarks
Only suitable for good input topology (without t-junctions). For bad topology use customRemoveTJ instead.

◆ customInternal()

static Body FacetModeler::Body::customInternal ( const std::vector< OdGePoint3d > &  aVertices,
const std::vector< OdInt32 > &  aFaceData,
bool  bRemoveTJ,
const std::vector< OdUInt32 > *  aEdgeFlags = 0,
const std::vector< OdUInt32 > *  aFaceFlags = 0,
const std::vector< OdUInt32 > *  aVertexFlags = 0,
const SurfaceData pSurfaceData = 0,
const std::vector< OdUInt32 > *  aFaceColors = 0,
const std::vector< OdUInt32 > *  aEdgeColors = 0 
)
static

◆ cutWithExtrusion()

static Body FacetModeler::Body::cutWithExtrusion ( Body rBase,
const Profile3D rCutter,
bool  bInside,
double  dDepth,
const DeviationParams devDeviation = FMGeGbl::gDefDev 
)
static

Returns part of the body in negative half-plane. Destroys operand.

Parameters
rBase[in] Initial body.
rCutter[in] Cut plane.
Returns
Resulting body.

Cuts with extrusion. Destroys operand.

Parameters
rBase[in] Base body.
rCutter[in] Cutting profile.
bInside[in] Whether to leave inside part or outside.
dDepth[in] Extrusion depth.
devDeviation[in] Deviation.
Returns
Resulting body.

◆ cutWithInfExtrusion()

static Body FacetModeler::Body::cutWithInfExtrusion ( Body rBase,
const Profile3D rCutter,
bool  bInside,
const DeviationParams devDeviation = FMGeGbl::gDefDev 
)
static

Cuts with infinite extrusion. Destroys operand.

Parameters
rBase[in] Base body.
rCutter[in] Cutting profile.
bInside[in] Whether to leave inside part or outside.
devDeviation[in] Deviation.
Returns
Resulting body.

◆ decomposeIntoLumps()

void FacetModeler::Body::decomposeIntoLumps ( std::vector< Body > &  aLumps)

◆ deleteFace()

void FacetModeler::Body::deleteFace ( FacetModeler::Face pFace)

Removes and deletes face. Low level operation!

◆ deleteUnusedVertices()

void FacetModeler::Body::deleteUnusedVertices ( )

Deletes unused vertices from body.

◆ extrusion()

static Body FacetModeler::Body::extrusion ( const Profile2D rBase,
const OdGeVector3d vDir,
const DeviationParams devDeviation = FMGeGbl::gDefDev 
)
static

Creates extrusion.

Parameters
rBase[in] Base profile (in XY plane).
vDir[in] Extrusion direction.
devDeviation[in] Deviation.
Returns
Resulting body.

◆ faceCount()

OdUInt32 FacetModeler::Body::faceCount ( ) const

Returns face count.

◆ faceList()

FacetModeler::Face* FacetModeler::Body::faceList ( ) const

Returns face list.

◆ getSurfaceCount()

OdUInt32 FacetModeler::Body::getSurfaceCount ( )

◆ getSurfaceList()

FacetModeler::Surface* FacetModeler::Body::getSurfaceList ( )

◆ getVertexList()

FacetModeler::Vertex* FacetModeler::Body::getVertexList ( )

◆ hasCoincidentEdges()

bool FacetModeler::Body::hasCoincidentEdges ( ) const

◆ hasCoincidentVertices()

bool FacetModeler::Body::hasCoincidentVertices ( ) const

◆ infExtrusion()

static Body FacetModeler::Body::infExtrusion ( const Body rBase,
const Profile3D rCutter,
const DeviationParams devDeviation = FMGeGbl::gDefDev 
)
static

Create infinite extrusion from profile and height a little bit more height body.

Parameters
rBase[in] Base body.
rCutter[in] Cutting profile.
devDeviation[in] Deviation.
Returns
Resulting body.

◆ insideBody()

static Body FacetModeler::Body::insideBody ( const Profile2D rBase,
double  dDepth,
double  dDepthOrigin,
const DeviationParams devDeviation = FMGeGbl::gDefDev 
)
static

Creates inside body.

Parameters
rBase[in] Base profile (in XZ plane).
dDepth[in] Depth.
dDepthOrigin[in] Depth origin.
devDeviation[in] Deviation.
Returns
Resulting body.

◆ insideFrame()

static Body FacetModeler::Body::insideFrame ( const Profile2D rBase,
double  dWidth,
double  dDepth,
double  dDepthOrigin,
const DeviationParams devDeviation = FMGeGbl::gDefDev 
)
static

Creates inside frame.

Parameters
rBase[in] Base profile (in XZ plane).
dWidth[in] Width.
dDepth[in] Depth.
dDepthOrigin[in] Depth origin.
devDeviation[in] Deviation.
Returns
Resulting body.

◆ intersectLine()

bool FacetModeler::Body::intersectLine ( const OdGeLinearEnt3d gLine,
std::vector< OdGePoint3d > &  vecPoints,
bool  bSortResults = false 
) const

Intersects this Body with the given line. Returns true, if there are intersections. There can be multiple equal intersections.

◆ interval()

OdGeExtents3d FacetModeler::Body::interval ( ) const

Returns extents.

◆ isClosed()

bool FacetModeler::Body::isClosed ( ) const

Returns whether the body is closed (any face is connected to other one at any adge).

◆ isNull()

bool FacetModeler::Body::isNull ( ) const

Returns whether the body is empty.

◆ mergeCoincidentVertices()

bool FacetModeler::Body::mergeCoincidentVertices ( )

Merges coincident vertices.

◆ mergeCoplanarEntities()

void FacetModeler::Body::mergeCoplanarEntities ( )

Merges coplanar faces and collinear edges.

◆ negate()

void FacetModeler::Body::negate ( )

Inverts body.

◆ operator!=()

bool FacetModeler::Body::operator!= ( const Body aBody) const

◆ operator=()

Body& FacetModeler::Body::operator= ( const Body B)

Assignment operator.

Remarks
Doesn't create copy of the body - it only copies impl pointer.

◆ operator==()

bool FacetModeler::Body::operator== ( const Body aBody) const

◆ pyramid()

static Body FacetModeler::Body::pyramid ( const Profile2D rBase,
const OdGePoint3d ptApex,
const DeviationParams devDeviation = FMGeGbl::gDefDev 
)
static

Creates pyramid.

Parameters
rBase[in] Base profile.
ptApex[in] Pyramid apex.
devDeviation[in] Deviation.
Returns
Resulting body.

◆ regeneratePairEdges()

void FacetModeler::Body::regeneratePairEdges ( )

◆ removeFace()

void FacetModeler::Body::removeFace ( FacetModeler::Face pFace)

Removes face. Low level operation!

◆ resetColors()

void FacetModeler::Body::resetColors ( )

Creates custom body. Removes t-junctions.

Parameters
aVertices[in] Vertex data.
aFaceData[in] Face data.
aEdgeFlags[in] Edge flags.
aFaceFlags[in] Face flags.
aVertexFlags[in] Vertex flags.
Returns
Resulting body.

Creates a new Body from ACAD entity (OdDb3dSolid is supported)

Parameters
idEntity[in] original object (OdDb3dSolid).
Returns
Resulting body.

Sets faces and edges colors to zero

◆ revolution() [1/2]

static Body FacetModeler::Body::revolution ( const Profile2D base,
const OdGeCircArc3d revolutionAxisAndAngles,
const DeviationParams deviation = FMGeGbl::gDefDev,
const OdGeMatrix2d pBaseTransform = 0 
)
static

Creates revolution.

Parameters
base[in] Base profile.
axis[in] Revolution axis.
revolutionAngle[in] Revolution angle.
deviation[in] Deviation.
baseTransform[in] Additional transform to be applied to base profile while being revolved.
Returns
Resulting body.

◆ revolution() [2/2]

static Body FacetModeler::Body::revolution ( const Profile2D rBase,
double  dRadius,
double  dHeight,
const DeviationParams devDeviation = FMGeGbl::gDefDev 
)
static

Creates extrusion.

Parameters
rBase[in] Base profile (in XY plane).
rPath[in] Extrusion path.
devDeviation[in] Deviation.
Returns
Resulting body.

Creates extrusion.

Parameters
rBase[in] Base profile.
rPath[in] Extrusion path.
vNormal[in] Z axis for extrusion.
devDeviation[in] Deviation.
Returns
Resulting body.

Creates revolution.

Parameters
rBase[in] Base profile (X - along height, Y - along radius).
dRadius[in] Radius.
dHeight[in] Height.
devDeviation[in] Deviation.
Returns
Resulting body.

◆ setSurfaceCount()

void FacetModeler::Body::setSurfaceCount ( OdUInt32  count)

◆ setSurfaceList()

void FacetModeler::Body::setSurfaceList ( FacetModeler::Surface pList)

◆ setTag()

void FacetModeler::Body::setTag ( FacetModeler::AecTagType  iTag)

Sets tag 1.

◆ setVertexCount()

void FacetModeler::Body::setVertexCount ( OdUInt32  count)

◆ setVertexList()

void FacetModeler::Body::setVertexList ( FacetModeler::Vertex pList)

◆ singleFace()

static Body FacetModeler::Body::singleFace ( const Profile2D rBase,
const DeviationParams devDeviation = FMGeGbl::gDefDev 
)
static

Creates single face body.

Parameters
rBase[in] Base profile (in XY plane).
devDeviation[in] Deviation.
Returns
Resulting body.
Remarks
Body will have one face only if specified profile has one outer loop.

◆ slice() [1/3]

void FacetModeler::Body::slice ( const Contour2D cCutLine,
const OdGePlane pProjectOn,
Profile3D rResult,
bool  bIncludeBoundary = true 
) const

Returns slice along specified cut line profile.

◆ slice() [2/3]

void FacetModeler::Body::slice ( const OdGePlane rCutter,
Profile2D pResultIncludingBoundary,
Profile2D pResultExcludingCoincidingBoundary = 0,
Profile2D pResultExcludingOppositeBoundary = 0,
Profile2D pResultExcludingBoundary = 0,
FaceConstPtrArray pCoincidingFaces = 0,
FaceConstPtrArray pOppositeFaces = 0 
) const

Returns slice profile.

◆ slice() [3/3]

void FacetModeler::Body::slice ( const OdGePlane rCutter,
Profile3D rResult,
bool  bIncludeBoundary = true 
) const

Returns slice profile.

◆ sliceFaceDbg()

void FacetModeler::Body::sliceFaceDbg ( const OdGePlane rCutter,
OdUInt32  faceNum 
)

◆ splitFace()

void FacetModeler::Body::splitFace ( FacetModeler::Face pFace,
const OdGePlane pPlane,
std::vector< FacetModeler::Face * > *  pNewOuter = 0,
std::vector< FacetModeler::Face * > *  pNewInner = 0 
)

Splits single face by plane preserving topology.

Parameters
pFace[in] Face to split.
pPlane[in] Splitting plane.
pNewOuter[out] Resulting outer faces.
pNewInner[out] Resulting inner faces.

◆ surfaceCount()

OdUInt32 FacetModeler::Body::surfaceCount ( ) const

Returns surface count.

◆ surfaceList()

Surface* FacetModeler::Body::surfaceList ( ) const

Returns surface list.

◆ tag()

FacetModeler::AecTagType FacetModeler::Body::tag ( ) const

Returns tag 1.

◆ transform()

void FacetModeler::Body::transform ( const OdGeMatrix3d mMatrix)

Transforms body.

◆ vertexCount()

OdUInt32 FacetModeler::Body::vertexCount ( ) const

Returns vertex count.

◆ vertexList()

FacetModeler::Vertex* FacetModeler::Body::vertexList ( ) const

Returns vertex list.

◆ volume()

double FacetModeler::Body::volume ( ) const

Returns volume.

Friends And Related Function Documentation

◆ BodyImpl

friend class BodyImpl
friend

Definition at line 679 of file FMMdlBody.h.

◆ BodyInternalConsistencyRestorer

friend class BodyInternalConsistencyRestorer
friend

Definition at line 680 of file FMMdlBody.h.

◆ Face

friend class Face
friend

Definition at line 677 of file FMMdlBody.h.

◆ Surface

friend class Surface
friend

Definition at line 678 of file FMMdlBody.h.

◆ Vertex

friend class Vertex
friend

Definition at line 676 of file FMMdlBody.h.

Member Data Documentation

◆ kEmpty

FMGEOMETRY_API_STATIC const Body FacetModeler::Body::kEmpty
static

Definition at line 265 of file FMMdlBody.h.


The documentation for this class was generated from the following file: