diff --git a/CalcPocketing.cpp b/CalcPocketing.cpp index c10778f..9ebd827 100644 --- a/CalcPocketing.cpp +++ b/CalcPocketing.cpp @@ -79,6 +79,53 @@ static double TOL_TRAPEZOID = 50 * EPS_SMALL ; // tolleranza per casi a trapezio typedef vector VICRVCOMPOPOVECTOR ; //--------------------------------------------------------------------------- +// definizione varibaile di debug +#define ENABLE_DEBUG 0 +#if ENABLE_DEBUG + #include "EgtDev/Include/EGkGeoObjSave.h" + #include "EgtDev/Include/EGkGeoPoint3d.h" + #include "EgtDev/Include/EGkGeoVector3d.h" + //---------------------------------------------------------------------------- + // Debug Functions + //---------------------------------------------------------------------------- + void + DrawObjs( const ISURFFRPOVECTOR& vSfr, bool bSfrUniform, bool bAlphaCoverage, + const ICRVCOMPOPOVECTOR& vCompo, bool bCompoUniform, string sName) + { + // definisco i vettori per geometrie e colori + vector VT ; + vector VC ; + + // disegno le superfici + for ( int nS = 0 ; nS < int( vSfr.size()) ; ++ nS) { + if ( vSfr[nS] == nullptr || ! vSfr[nS]->IsValid()) + return ; + VT.emplace_back( static_cast( vSfr[nS]->Clone())) ; + VC.emplace_back( bAlphaCoverage ? Color( 0., 64., 0., .5) : Color( 0., 255., 0., .5)) ; + for ( int nC = 0 ; nC < vSfr[nS]->GetChunkCount() ; ++ nC) { + for ( int nL = 0 ; nL < vSfr[nS]->GetLoopCount( nC) ; ++ nL) { + PtrOwner pCrvCompo( ConvertCurveToComposite( vSfr[nS]->GetLoop( nC, nL))) ; + for ( int nU = 0 ; nU < pCrvCompo->GetCurveCount() ; ++ nU) { + int nProp0 ; pCrvCompo->GetCurveTempProp( nU, nProp0, 0) ; + VT.emplace_back( static_cast( pCrvCompo->GetCurve( nU)->Clone())) ; + VC.emplace_back( bSfrUniform ? WHITE : ( nProp0 == 0 ? ( bAlphaCoverage ? AQUA : BLUE) : ( bAlphaCoverage ? ORANGE : RED))) ; + } + } + } + } + + // disegno le curve + for ( int nC = 0 ; nC < int( vCompo.size()) ; ++ nC) { + if ( vCompo[nC] == nullptr || ! vCompo[nC]->IsValid()) + continue ; + VT.emplace_back( static_cast( vCompo[nC]->Clone())) ; + VC.emplace_back( Color( double( rand()) / RAND_MAX, double( rand()) / RAND_MAX, double( rand()) / RAND_MAX, 1.)) ; + } + + SaveGeoObj( VT, VC, sName) ; + return ; + } +#endif //--------------------------------------------------------------------------- static double @@ -7374,7 +7421,7 @@ AdjustCloseEsgesForConformalGuide( ICurveComposite* pCrvCompo, const PocketParam if ( IsNull( pMyCompo)) return false ; CRVCVECTOR ccClass ; - if ( pSfrLimit->GetCurveClassification( *vpCrvs[i], EPS_SMALL, ccClass)) { + if ( pSfrLimit->GetCurveClassification( *vpCrvs[i], 125 * EPS_SMALL, ccClass)) { for ( int j = 0 ; j < int( ccClass.size()) ; ++ j) { // recupero il tratto di curva PtrOwner pMyCurve( ConvertCurveToComposite( vpCrvs[i]->CopyParamRange( ccClass[j].dParS, ccClass[j].dParE))) ; @@ -8395,6 +8442,7 @@ GetConformalOffsets( const ISurfFlatRegion* pSfrChunk, const ISurfFlatRegion* pS for ( int j = 0 ; j < int( vCrvOffs[i].size()) ; ++ j) ModifyCurveToSmoothed( vCrvOffs[i][j], PockParam, dSmoothPar, dSmoothPar, false) ; } + return true ; }