24#ifndef __FMMDL_BODY_H__
25#define __FMMDL_BODY_H__
32namespace GeMesh {
class OdGeTrMesh; }
212 std::vector<Face*>* pNewOuter = NULL,
213 std::vector<Face*>* pNewInner = NULL);
305 Profile3D& rResult,
bool bIncludeBoundary =
true)
const;
327 std::vector< OdGePoint3d >& aPoints,
bool bSortResults =
false)
const;
427 double dRadius,
double dHeight,
480 Body& rOperandA,
Body& rOperandB,
bool bOptimization =
false);
505 const std::vector<OdGePoint3d>& aVertices,
506 const std::vector<OdInt32>& aFaceData,
507 const std::vector<OdUInt32>* aFaceFlags = NULL,
508 const std::vector<OdUInt32>* aEdgeFlags = NULL,
509 const std::vector<OdUInt32>* aVertexFlags = NULL,
510 const std::vector<OdUInt32>* pFaceColors = NULL,
511 const std::vector<OdUInt32>* pEdgeColors = NULL,
512 const std::vector<OdGePoint2d>* pMappingCoords = NULL
732 void testCheckUnusedSurfaceData();
741 explicit Body(
class BodyImpl* pImpl);
751 friend class BodyImpl;
752 friend class BodyCustom;
753 friend class BodyInternalConsistencyRestorer;
#define FMGEOMETRY_API_STATIC
bool operator!=(T left, const OdGiVariant::EnumType right)
bool operator==(T left, const OdGiVariant::EnumType right)
static Body pyramid(const Profile2D &rBase, const OdGePoint3d &ptApex, const DeviationParams &deviation=FMGeGbl::gDefDev)
static Body extrusion(const Profile2D &rBase, const Contour3D &rPath, const DeviationParams &deviation=FMGeGbl::gDefDev)
void setVertexList(Vertex *pList)
void removeFace(Face *pFace)
void deleteUnusedSurfaces()
bool checkInternalConsistence(OdString *pFirstErrorDetected=NULL) const
void setSurfaceCount(OdUInt32 count)
bool mergeCoincidentVertices()
Surface * surfaceList() const
void setTag(TagType iTag)
OdUInt32 surfaceCount() const
static Body extrusion(const Profile2D &rBase, const OdGeVector3d &vDir, const DeviationParams &deviation=FMGeGbl::gDefDev)
static Body createFromMesh(const std::vector< OdGePoint3d > &aVertices, const std::vector< OdInt32 > &aFaceData, const std::vector< OdUInt32 > *aFaceFlags=NULL, const std::vector< OdUInt32 > *aEdgeFlags=NULL, const std::vector< OdUInt32 > *aVertexFlags=NULL, const std::vector< OdUInt32 > *pFaceColors=NULL, const std::vector< OdUInt32 > *pEdgeColors=NULL, const std::vector< OdGePoint2d > *pMappingCoords=NULL)
void setVertexCount(OdUInt32 count)
void addSurface(Surface *pSurface)
void slice(const OdGePlane &rCutter, Profile3D &rResult, bool bIncludeBoundary=true) const
void deleteUnusedVertices()
static Body box(const OdGePoint3d &ptOrigin, const OdGeVector3d &vSizes)
Body combine(Body &rAnother)
void clearFaceFlags(OdUInt32 clearValue=0)
static Body boolOper(BooleanOperation eOperation, Body &rOperandA, Body &rOperandB, bool bOptimization=false)
void regeneratePairEdges()
OdUInt32 faceCount() const
void splitFace(Face *pFace, const OdGePlane &pPlane, std::vector< Face * > *pNewOuter=NULL, std::vector< Face * > *pNewInner=NULL)
bool intersectLine(const OdGeLinearEnt3d &gLine, std::vector< OdGePoint3d > &aPoints, bool bSortResults=false) const
void transform(const OdGeMatrix3d &mMatrix)
static Body revolution(const Profile2D &rBase, double dRadius, double dHeight, const DeviationParams &deviation=FMGeGbl::gDefDev)
void clearBodyTags(TagType clearValue=0)
void slice(const OdGePlane &rCutter, Body &result, TagType tagSection=0) const
void setFaceList(Face *pList)
OdUInt32 cachedEdgesCount() const
void addFace(Face *pFace)
static Body extrusion(const Profile2D &rBase, const OdGeMatrix3d &mBasePlane, const OdGeVector3d &vDir, const DeviationParams &deviation=FMGeGbl::gDefDev)
Vertex * vertexList() const
void clearEdgeTags(TagType clearValue=0)
Vertex * addVertex(const OdGePoint3d &pt)
bool hasCoincidentEdges() const
void setSurfaceList(Surface *pList)
void setColor(OdUInt32 iColor)
bool hasCoincidentVertices() const
OdUInt32 vertexCount() const
void mergeCoplanarEntities()
static Body revolution(const Profile2D &base, const OdGeVector3d &revAxis, const OdGePoint3d &axisPosition, double startAng, double endAng, const DeviationParams &deviation=FMGeGbl::gDefDev)
void setFaceCount(OdUInt32 count)
void clearSurfaceTags(TagType clearValue=0)
bool containsNonManifoldEdges() const
void clearFaceTags(TagType clearValue=0)
void generateMesh(GeMesh::OdGeTrMesh &mesh) const
OdGeExtents3d interval() const
static Body extrusion(const Profile2D &rBase, const OdGePoint3dArray &rPath, const OdGeVector3d &vNormal, const DeviationParams &devDeviation=FMGeGbl::gDefDev)
OdUInt32 countEdges() const
static Body revolution(const Profile2D &base, const OdGeCircArc3d &revAxisAndAngles, const DeviationParams &deviation=FMGeGbl::gDefDev, const OdGeMatrix2d *pBaseTransform=NULL)
void simplify(double param)
void decomposeIntoLumps(std::vector< Body > &aLumps)
void addVertex(Vertex *pVertex)
void clearVertexTags(TagType clearValue=0)
void deleteFace(Face *pFace)
static FMGEOMETRY_API_STATIC const Body kEmpty
Face * addFace(Surface *pSurface=NULL)
Body(class BodyImpl *pImpl)
FMGEOMETRY_API void MarkShadedSurfaces(Body &aBody, double angleTol, bool bDetectSharpEdges=false)
FMGEOMETRY_API Body extrusion(const Profile2D &rBase, const OdGeMatrix3d &mBasePlane, const OdGeVector3d &vDir, const DeviationParams &devDeviation=FMGeGbl::gDefDev)
void MergeShadedSurfaces(Body &aBody, const OdArray< std::set< Surface * > > &shadedMergeData)
FMGEOMETRY_API void ClearShadedSurfaces(Body &aBody)
FMGEOMETRY_API Body revolution(const Profile2D &base, const OdGeVector3d &revAxis, const OdGePoint3d &axisPosition, double startAng, double endAng, const DeviationParams &deviation=FMGeGbl::gDefDev)
static FMGEOMETRY_API_STATIC DeviationParams gDefDev