24#ifndef __ODGIPLINECONTOUR_H__
25#define __ODGIPLINECONTOUR_H__
71template <
typename SimplClass = OdGiGeometrySimplifier>
91 m_pPlineCtrCalcInterface->
plineCalcShellWires(faceListSize, faceList, pEdgeData, pFaceData);
103 SimplClass::generateShellWires(faceListSize, faceList, pEdgeData, pFaceData);
140 m_pPlineCtrCalcSimplifier->
generateShellWires(faceListSize, faceList, pEdgeData, pFaceData);
152template <
typename VectClass = OdGiPlineContourCalcEmptyInheritance,
typename SimplClass = OdGiPlineContourCalcNonSimplifierInheritance>
187 rv = cmp_el(first.x, p2.first.x);
if (rv >= 0)
return rv > 0;
188 rv = cmp_el(first.y, p2.first.y);
if (rv >= 0)
return rv > 0;
189 rv = cmp_el(first.z, p2.first.z);
if (rv >= 0)
return rv > 0;
190 rv = cmp_el(second.x, p2.second.x);
if (rv >= 0)
return rv > 0;
191 rv = cmp_el(second.y, p2.second.y);
if (rv >= 0)
return rv > 0;
209 {
bool bFirst =
false;
211 const OdGsMarker gsMarker = curPair->subentMarker();
220 bool bSecond =
false;
221 if ((bFirst) ? (it->first == curPair->first) : (it->first == curPair->second))
223 if (it->subentMarker() == gsMarker)
228 else if ((bFirst) ? (it->second == curPair->first) : (it->second == curPair->second))
230 if (it->subentMarker() == gsMarker)
291 VectClass::pline(polyline, fromIndex, numSegs);
316 const OdUInt8 *pEdgeVis = pEdgeData ? pEdgeData->visibility() : NULL;
317 for (
OdInt32 nFaceList = 0; nFaceList < faceListSize; nFaceList++)
319 for (
OdInt32 nSeg = 1; nSeg < nElems; nSeg++)
320 {
if (!pEdgeVis || *pEdgeVis++)
321 filterPlineCalcMap(pVtx[faceList[nFaceList + nSeg]], pVtx[faceList[nFaceList + nSeg + 1]], gsMarker);
323 if (!pEdgeVis || *pEdgeVis++)
324 filterPlineCalcMap(pVtx[faceList[nFaceList + nElems]], pVtx[faceList[nFaceList + 1]], gsMarker);
370 { outPts[0] = it->first; outPts[1] = it->second;
371 if (curMarker != it->subentMarker())
383 if (curMarker != gsMarker)
#define SETBIT(flags, bit, value)
#define SETBIT_0(flags, bit)
bool OdLess(double x, double y, double tol=1.e-10)
bool OdGreater(double x, double y, double tol=1.e-10)
#define GETBIT(flags, bit)
#define SETBIT_1(flags, bit)
void push_back(const T &value)
double equalPoint() const
virtual OdUInt32 drawContextFlags() const
@ kForceMarkersOnModified
virtual const OdGiPathNode * currentGiPath() const =0
virtual OdGiSubEntityTraits & subEntityTraits() const =0
virtual void onTraitsModified()=0
const OdGePoint3d * vertexDataList() const
virtual void generateShellWires(OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0)
virtual void polylineOut(OdInt32 numPoints, const OdGePoint3d *vertexList)
OdGiConveyorContext * drawContext()
virtual OdGsMarker selectionMarker() const =0
OdGsMarker subentMarker() const
bool operator<(const PlineCtrCalcNode &p2) const
PlineCtrCalcNode(const OdGePoint3d &pt1, const OdGePoint3d &pt2, OdGsMarker gsMarker)
OdGePoint3dArray m_plineCtrCalcStrip
bool plineContoursCalcEnabled() const
void enablePlineContoursCalc(bool bSet)
std::pair< OdGePoint3d, OdGePoint3d > EdgePointsPair
virtual void dropPlineCalcShellWires(bool bStrips)
bool plineCalcDroppingState() const
void filterPlineCalcMap(const OdGePoint3d &p1, const OdGePoint3d &p2, OdGsMarker gsMarker)
PlineCtrCalcMap m_plineCtrCalcMap
std::pair< OdInt32, OdInt32 > EdgePointsKey
std::set< PlineCtrCalcNode > PlineCtrCalcMap
void enablePlineCalcSrips(bool bSet)
bool plineCalcStripsEnabled() const
virtual void plineCalcShellWires(OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0)
OdGsMarker buildPlineCalcStrip()
bool hasPlineStarted() const
virtual void pline(const OdGiPolyline &polyline, OdUInt32 fromIndex=0, OdUInt32 numSegs=0)
OdUInt32 m_nPlineCtrCalcFlags
void setPlineCalcInterface(OdGiPlineContourCalcSimplifierInterface *)
void plineCalcRedirectGenerateShellWires(OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData, const OdGiFaceData *pFaceData)
void setPlineCalcSimplifier(OdGiGeometrySimplifier *pSimplifier)
OdGiPlineContourCalcNonSimplifierInheritance()
OdGiGeometrySimplifier * plineCalcSimplifier()
OdGiGeometrySimplifier * plineCalcSimplifier()
void plineCalcRedirectGenerateShellWires(OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData, const OdGiFaceData *pFaceData)
virtual void generateShellWires(OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0)
void setPlineCalcInterface(OdGiPlineContourCalcSimplifierInterface *pInterface)
virtual void setSelectionMarker(OdGsMarker selectionMarker)=0
static GE_STATIC_EXPORT OdGeTol gTol
void pline(const OdGiPolyline &, OdUInt32=0, OdUInt32=0)
virtual void plineCalcShellWires(OdInt32 faceListSize, const OdInt32 *faceList, const OdGiEdgeData *pEdgeData=0, const OdGiFaceData *pFaceData=0)=0
virtual void dropPlineCalcShellWires(bool bStrips)=0