23#ifndef AECEDGEGRAPH_H_INCLUDED
24#define AECEDGEGRAPH_H_INCLUDED
83 return (
iS == edge.
iE &&
iE == edge.
iS);
95 return (e1.
iS == e2.
iS && e1.
iE == e2.
iE);
193 SliceEdgeData() : overlappedCount(0), oppositeCount(0)
197 void DebugDrawEdges()
const;
198 void DebugDrawGraph();
200 void DebugDrawColoredGraph();
203 void DebugDrawColoredOrderedGraph(
OdInt16 edgeBaseColor = 0);
207 void DebugDrawColoredOrderedGraph2d(
const OdGePlane& plane,
OdInt16 edgeBaseColor);
OdUInt32 GetEdgeStartNodeIdx(OdUInt32 aEdgeIdx) const
const SliceNode & GetEdgeEndNode(OdUInt32 aEdgeIdx) const
void ResetEdgesProcessedFlag()
OdUInt32 AddNode(const OdGePoint3d &pt, const OdGeTol tol=FMGeGbl::gTol)
void ReserveBuffers(size_t nFaces)
const SliceNode & GetEdgeStartNode(OdUInt32 aEdgeIdx) const
void RemoveEdge(OdUInt32 idx, OdGePoint2dArray *pArr=NULL)
bool LeaveOrder(const OdGePoint3d &ptS, const OdGePoint3d &ptE, const OdGeVector3d &vFaceNormal, const OdGeVector3d &vCutNormal)
void ReserveBuffersIfEmpty()
void ResetEdgeProcessed(OdUInt32 aEdgeIdx)
SliceNode & GetNode(OdUInt32 aNodeIdx)
const OdGePoint3d & GetEdgeEndPoint(OdUInt32 aEdgeIdx) const
OdArray< SliceNode > aNodes
const OdGePoint3d & GetNodePosition(OdUInt32 aNodeIdx) const
void AddEdge(const OdGePoint3d &ptS, const OdGePoint3d &ptE, const OdGePlane &pSegPlane, const OdGePlane &pCutPlane, const Edge *tag=0, const OdGeTol tol=FMGeGbl::gTol)
OdUInt32 GetEdgeEndNodeIdx(OdUInt32 aEdgeIdx) const
void SetEdgeProcessed(OdUInt32 aEdgeIdx)
const SliceEdge & GetEdge(OdUInt32 aEdgeIdx) const
void AddEdge(const OdGeLineSeg3d &lSeg, const OdGePlane &pSegPlane, const OdGePlane &pCutPlane)
OdArray< SliceEdge, OdMemoryAllocator< SliceEdge > > aEdges
void ReorderLinks(const OdGePlane &plane)
void AddEdge(const OdGePoint3d &ptSProjected, const OdGePoint3d &ptEProjected, const OdGePoint3d &ptSOriginal, const OdGePoint3d &ptEOriginal, const OdGePlane &pSegPlane, const OdGePlane &pCutPlane)
OdUInt32 EdgesCount() const
SliceNode & GetEdgeStartNode(OdUInt32 aEdgeIdx)
const OdGePoint3d & GetEdgeStartPoint(OdUInt32 aEdgeIdx) const
void RemoveOppositeEdges()
bool IsEdgesConcatenated(OdUInt32 iPreviousEdge, OdUInt32 iNextEdge) const
bool IsEdgeProcessed(OdUInt32 aEdgeIdx) const
void MergeDuplicatedEdges(bool bUseReverseEdgeAtMerge)
void RestoreEdgeNodesIdxs(OdUInt32 idx1, OdUInt32 idx2)
void AddEdge(OdUInt32 iS, OdUInt32 iE)
OdUInt32 NodesCount() const
bool DoesEdgeExist(OdUInt32 iS, OdUInt32 iE, OdUInt32 &res) const
SliceEdge & GetEdge(OdUInt32 aEdgeIdx)
SliceNode & GetEdgeEndNode(OdUInt32 aEdgeIdx)
double GetAddNodeTol(const OdGeTol tol=FMGeGbl::gTol) const
const SliceNode & GetNode(OdUInt32 aNodeIdx) const
static FMGEOMETRY_API_STATIC OdGeTol gTol
SliceEdge(OdUInt32 s, OdUInt32 e, const Edge *_tag=0, bool _bLeaveOrder=false)
bool IsOpposite(const SliceEdge &edge) const
SliceNode(const OdGePoint3d &point)