From 498e5b37f476c094cde04e32ac8eaadab5e6411a Mon Sep 17 00:00:00 2001 From: DarioS Date: Mon, 6 Jun 2022 07:01:57 +0200 Subject: [PATCH] EgtGeomKernel 2.4f1 : - in accodamento curva a composita con aggiustamento estremo si verifica di non modificare troppo la curva stessa - in offset curve migliorata gestione concatenamento finale. --- CurveComposite.cpp | 7 +++++++ EgtGeomKernel.rc | Bin 11718 -> 11718 bytes OffsetCurve.cpp | 18 ++++++++++-------- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/CurveComposite.cpp b/CurveComposite.cpp index b1a7f09..6419aba 100644 --- a/CurveComposite.cpp +++ b/CurveComposite.cpp @@ -209,8 +209,15 @@ CurveComposite::AddSimpleCurve( ICurve* pSmplCrv, bool bEndOrStart, double dLinT if ( ! AreSamePointEpsilon( ptCrvStart, ptEnd, 0.01 * EPS_SMALL)) { // se in tolleranza, modifico l'inizio dell'entità if ( SqDist( ptCrvStart, ptEnd) < ( dLinTol * dLinTol)) { + // lunghezza della curva originale + double dOldLen ; pCrv->GetLength( dOldLen) ; + // eseguo modifica if ( ! pCrv->ModifyStart( ptEnd)) return false ; + // verifico che la lunghezza non sia variata troppo + double dNewLen ; pCrv->GetLength( dNewLen) ; + if ( abs( dNewLen - dOldLen) > 10 * dLinTol) + return false ; } else return false ; diff --git a/EgtGeomKernel.rc b/EgtGeomKernel.rc index f08cb69037ef0974c6197a2afe684527985f21d6..80e1d54522e157d6de6459e597b5757d7d333c1e 100644 GIT binary patch delta 287 zcmX>WeJpyzI%aKGhCGIJh8%`WhGK>c1_cHUhESkLCPN8BDnkm89}HwAf_cT0FKS6| z{=m${%xcD5$yHoBlN&fWCja7;VNPQ(oP1DFce5K;4+~t4H8Vn7%7bxp zm#`1Q02E0iO*jlzQ?et~#Rn(f)0sEh($ delta 279 zcmX>WeJpyzI%aiGhCGIJh8%`ehGHOAV9;O)W+-7u1ma8}FBB-731Uyas3kpFPd#gM z9Lo$QR#OHY29wSA#m+NLuH({~{EbtEIhDa=vLd(cW-qQD7P!1MGeTU-gK=}8un#kK zNhD2J4AoMyBgLf$C*RYVH~EvAh+sb0N1k9G2=d2fJ@skKm{OZBYJFt_0FdTL AM*si- diff --git a/OffsetCurve.cpp b/OffsetCurve.cpp index a7e989c..f91b2eb 100644 --- a/OffsetCurve.cpp +++ b/OffsetCurve.cpp @@ -589,16 +589,18 @@ OffsetCurve::Make( const ICurve* pCrv, double dDist, int nType) pCrvCo2->GetEndPoint( ptEnd2) ; // verifiche di concatenamento if ( AreSamePointEpsilon( ptEnd, ptStart2, 10 * EPS_SMALL)) { - pCrvCo->AddCurve( pCrvCo2, true, 10 * EPS_SMALL) ; - m_CrvLst.erase( iIter2) ; - ptEnd = ptEnd2 ; - iIter2 = next( iIter) ; + if ( pCrvCo->AddCurve( pCrvCo2, true, 10 * EPS_SMALL)) { + m_CrvLst.erase( iIter2) ; + ptEnd = ptEnd2 ; + iIter2 = next( iIter) ; + } } else if ( AreSamePointEpsilon( ptEnd2, ptStart, 10 * EPS_SMALL)) { - pCrvCo->AddCurve( pCrvCo2, false, 10 * EPS_SMALL) ; - m_CrvLst.erase( iIter2) ; - ptStart = ptStart2 ; - iIter2 = next( iIter) ; + if ( pCrvCo->AddCurve( pCrvCo2, false, 10 * EPS_SMALL)) { + m_CrvLst.erase( iIter2) ; + ptStart = ptStart2 ; + iIter2 = next( iIter) ; + } } else ++ iIter2 ;