From fdce6e1853d3d47239ec2d448459515018800be0 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Sat, 2 Mar 2024 11:52:34 +0100 Subject: [PATCH] EgtGeomKernel 2.6c1 : - piccolissima aggiunta a offset di regioni. --- EgtGeomKernel.rc | Bin 11710 -> 11710 bytes SurfFlatRegionOffset.cpp | 14 ++++++++------ Voronoi.cpp | 38 +++++++++++++++++++------------------- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/EgtGeomKernel.rc b/EgtGeomKernel.rc index 77ada765245526139f2ba376a847c4665fcae96b..e7c1fc4b962e7db91858ae6808a08c386ba0de23 100644 GIT binary patch delta 118 zcmdlNy)SyhH#Syd1|0^&&A-{?nVFLr3@0mc>u&bq>S2M3-{!MM7I$OZ+#~G9j8n2h Q8ZL=uq6g#VEaea`08}a+`Tzg` delta 118 zcmdlNy)SyhH#Sxy1|0^I&A-{?nVFLqOeQOG>u&bq>S2M3-{!MM7I$OZ+#~G9j8n2h Q8ZL=uq6g#VEaea`09WoF3IG5A diff --git a/SurfFlatRegionOffset.cpp b/SurfFlatRegionOffset.cpp index 2bc7780..9d5ff40 100644 --- a/SurfFlatRegionOffset.cpp +++ b/SurfFlatRegionOffset.cpp @@ -37,7 +37,7 @@ SurfFlatRegion::CreateOffsetSurf( double dDist, int nType) const if ( nChunk == 0) return nullptr ; - // se offset nullo, la nuova regione è la copia di quella attuale + // se offset nullo, la nuova regione è la copia di quella attuale if ( abs( dDist) < 10 * EPS_SMALL) return this->Clone() ; @@ -71,7 +71,7 @@ SurfFlatRegion::CreateOffsetSurf( double dDist, int nType) const while ( bOk && ! IsNull( pOffs)) { if ( pOffs->GetType() == CRV_COMPO) { CurveComposite* pOffsCompo = GetBasicCurveComposite( pOffs) ; - // assegno proprietà + // assegno proprietà pOffsCompo->SetTempProp( j, 1) ; for ( int k = 0 ; k < pOffsCompo->GetCurveCount() ; ++k) pOffsCompo->SetCurveTempProp( k, j, 1) ; @@ -81,7 +81,7 @@ SurfFlatRegion::CreateOffsetSurf( double dDist, int nType) const } else pOffs->SetTempProp( j, 1) ; - // se prima curva esterna, è il primo contorno esterno della nuova regione + // se prima curva esterna, è il primo contorno esterno della nuova regione if ( j == 0 && bFirstCurve) { if ( ! pSfrChk->AddExtLoop( Release( pOffs))) return nullptr ; @@ -138,7 +138,7 @@ SurfFlatRegion::CreateOffsetSurf( double dDist, int nType) const // -------------------- OFFSET CON VORONOI ------------------------------------- else { - // verifico se oggetto Voronoi della superficie è definito + // verifico se oggetto Voronoi della superficie è definito if ( m_pVoronoiObj == nullptr) CalcVoronoiObject() ; @@ -155,8 +155,10 @@ SurfFlatRegion::CreateOffsetSurf( double dDist, int nType) const // rimuovo eventuali sovrapposizioni ICURVEPLIST CrvLst ; AdjustLoops( Release( vOffs[i]), CrvLst, true) ; - for ( auto pCrv : CrvLst) + for ( auto pCrv : CrvLst) { + pCrv->SetExtrusion( Z_AX) ; vLoops.emplace_back( pCrv) ; + } } pSfr.Set( MyNewSurfFromLoops( vLoops)) ; @@ -180,7 +182,7 @@ SurfFlatRegion::Offset( double dDist, int nType) if ( nChunk == 0) return false ; - // se offset nullo, non devo fare alcunchè + // se offset nullo, non devo fare alcunchè if ( abs( dDist) < 10 * EPS_SMALL) return true ; diff --git a/Voronoi.cpp b/Voronoi.cpp index 400b6d3..d512ec8 100644 --- a/Voronoi.cpp +++ b/Voronoi.cpp @@ -79,7 +79,7 @@ Voronoi::AddCurve( const ICurve* pCrv) if ( pCrv == nullptr) return false ; - // verifico se è una linea + // verifico se è una linea int nType = pCrv->GetType() ; bool bIsLine = ( nType == CRV_LINE) ; if ( nType == CRV_COMPO) { @@ -92,7 +92,7 @@ Voronoi::AddCurve( const ICurve* pCrv) // verifico sia piana e trovo piano su cui giace Plane3d plPlane ; if ( bIsLine) { - // linea è sicuramente piana. Scelgo piano definito dall'estrusione ( se definita) + // linea è sicuramente piana. Scelgo piano definito dall'estrusione ( se definita) Point3d ptS ; pCrv->GetStartPoint( ptS) ; Vector3d vtExtr ; pCrv->GetExtrusion( vtExtr) ; if ( ! vtExtr.IsSmall()) @@ -110,7 +110,7 @@ Voronoi::AddCurve( const ICurve* pCrv) m_Frame.Set( plPlane.GetPoint(), plPlane.GetVersN()) ; } else { - // altrimenti verifico sia complanare ad eventuali curve già presenti + // altrimenti verifico sia complanare ad eventuali curve già presenti if ( ! AreSameOrOppositeVectorApprox( m_Frame.VersZ(), plPlane.GetVersN()) || ! PointInPlaneApprox( m_Frame.Orig(), plPlane)) return false ; } @@ -122,7 +122,7 @@ Voronoi::AddCurve( const ICurve* pCrv) pCrvLoc->ToLoc( m_Frame) ; try { - // verifico se oggetto vroni è stato inizializzato + // verifico se oggetto vroni è stato inizializzato if ( m_vroni == nullptr) { m_vroni = new( nothrow) vroniObject() ; if ( m_vroni == nullptr) @@ -165,7 +165,7 @@ Voronoi::AddSurfFlatRegion( const ISurfFlatRegion* pSfr) m_Frame.Set( ptCen, vtN) ; } else { - // verifico sia complanare ad eventuali curve già presenti + // verifico sia complanare ad eventuali curve già presenti Plane3d plPlane ; plPlane.Set( ptCen, pSfr->GetNormVersor()) ; if ( ! AreSameOrOppositeVectorApprox( m_Frame.VersZ(), pSfr->GetNormVersor()) || ! PointInPlaneApprox( m_Frame.Orig(), plPlane)) @@ -173,7 +173,7 @@ Voronoi::AddSurfFlatRegion( const ISurfFlatRegion* pSfr) } try { - // verifico se oggetto vroni è stato inizializzato + // verifico se oggetto vroni è stato inizializzato if ( m_vroni == nullptr) { m_vroni = new( nothrow) vroniObject() ; if ( m_vroni == nullptr) @@ -315,7 +315,7 @@ Voronoi::AddCompoToVroni( const ICurveComposite* pCompo, int& nVroniCrv, int nLo for ( int i = 0 ; i < pCopy->GetCurveCount() ; i++) { Point3d ptForcedEnd = P_INVALID ; - // se curva è chiusa, forzo l'end point a coincidere con lo start ( per le tolleranze di vroni) + // se curva è chiusa, forzo l'end point a coincidere con lo start ( per le tolleranze di vroni) if ( i == pCopy->GetCurveCount() - 1 && bClosed) pCompo->GetStartPoint( ptForcedEnd) ; @@ -359,7 +359,7 @@ Voronoi::AddBezierToVroni( const ICurveBezier* pBezier, int& nVroniCrv, int nLoo ICurve* Voronoi::GetCurve( int nId) const { - // verifico validità indice + // verifico validità indice if ( nId < 0 || nId > ( int)m_vpCrvs.size() - 1) return nullptr ; // ne faccio una copia @@ -375,11 +375,11 @@ Voronoi::GetCurve( int nId) const bool Voronoi::CalcVoronoi( int nBound) { - // se già stato calcolato con lo stesso bound non devo fare nulla + // se già stato calcolato con lo stesso bound non devo fare nulla if ( m_bVDComputed && nBound == m_nBound) return true ; - // se già stato calcolato reset dei dati + // se già stato calcolato reset dei dati if ( m_bVDComputed) m_vroni->ResetVoronoiDiagram() ; @@ -657,12 +657,12 @@ Voronoi::CalcFatCurve( ICURVEPOVECTOR& vCrvs, double dOffs, bool bSquareEnds, bo // sistemo i raccordi if ( bClosed && bSquareMids) { - // se curva è chiusa tutti i raccordi rispondono a bSquareMids + // se curva è chiusa tutti i raccordi rispondono a bSquareMids IdentifyFillets( pCrvOffs, dOffs) ; AdjustCurveFillets( pCrvOffs, dOffs, ICurve::OFF_EXTEND) ; } else if ( ! bClosed && ( bSquareMids || bSquareEnds)) { - // se curva è aperta devo distinguere i raccordi interni da quelli relativi agli estremi e + // se curva è aperta devo distinguere i raccordi interni da quelli relativi agli estremi e // modificare solo quelli richiesti for ( int j = 0 ; j < pCrvOffs->GetCurveCount() ; j ++) { int nOrigCrv ; pCrvOffs->GetCurveTempProp( j, nOrigCrv) ; @@ -744,13 +744,13 @@ Voronoi::CalcVroniOffset( ICRVCOMPOPLIST& OffsList, double dOffs, bool bRightOff bOk = pCrvOffs->AddCurve( Release( pArc)) ; } - // se la curva è stata aggiunta + // se la curva è stata aggiunta if ( bOk) { - // setto come info la sottocurva da cui si è generata + // setto come info la sottocurva da cui si è generata int nCurrCrvId = pCrvOffs->GetCurveCount() - 1 ; pCrvOffs->SetCurveTempProp( nCurrCrvId, nOrigCrv + 1, 0) ; pCrvOffs->SetCurveTempProp( nCurrCrvId, nOrigLoop, 1) ; - // verifico se è raccordo relativo agli estremi della curva + // verifico se è raccordo relativo agli estremi della curva if ( nOrigCrv == -1 && ( nOrigPnt == 0 || nOrigPnt == nOrigCrvCnt)) pCrvOffs->SetCurveTempParam( nCurrCrvId, 1.0, 0) ; } @@ -798,7 +798,7 @@ Voronoi::VerifyCurvesValidityForOffset() if ( m_vpCrvs.size() == 1) return true ; - // se ho più curve, devono essere tutte chiuse + // se ho più curve, devono essere tutte chiuse for ( auto pCrv : m_vpCrvs) { if ( ! pCrv->IsClosed()) return false ; @@ -825,7 +825,7 @@ Voronoi::VerifyCurvesValidityForOffset() if ( nRes == CCREGC_NULL || nRes == CCREGC_SAME || nRes == CCREGC_INTERS) return false ; if ( ( bRefCCW && nRes == CCREGC_IN1) || ( ! bRefCCW && nRes == CCREGC_IN2)) { - // se è interna ad una curva con orientamento principale, verifico sia esterna ad almeno una curva con orientamento + // se è interna ad una curva con orientamento principale, verifico sia esterna ad almeno una curva con orientamento // diverso dal principale bool bFound = false ; for ( int k = 0 ; k < ( int)vArea.size() ; k++) { @@ -910,7 +910,7 @@ Voronoi::AdjustOpenOffsetCurve( ICurveComposite& pCompo, double dOffs) // mi posiziono dopo la junction pCompo.ChangeStartPoint( vJunctions[0] + 1) ; delete( pCompo.RemoveFirstOrLastCurve()) ; - // verifico validità della curva + // verifico validità della curva int nSide = GetOffsetCurveSide( pCompo, 0) ; if ( nSide == nSideRef) { // scorro fino alla prima curva non valida ed elimino la curva da quel punto fino alla fine @@ -921,7 +921,7 @@ Voronoi::AdjustOpenOffsetCurve( ICurveComposite& pCompo, double dOffs) } } else { - // elimino finchè non trovo una curva valida + // elimino finchè non trovo una curva valida while( nSide != nSideRef && pCompo.IsValid()) { delete( pCompo.RemoveFirstOrLastCurve( false)) ; if ( pCompo.IsValid())