Merge commit '47f8df92f4a3311dd647a8f60f1fc29d56006675'

This commit is contained in:
Dario Sassi
2025-01-24 20:42:36 +01:00
2 changed files with 16 additions and 11 deletions
+12 -5
View File
@@ -3666,7 +3666,7 @@ SurfFinishing::AddOptimal( ICAvToolSurfTm* pCAvTlStm, const SURFLOCALVECTOR& vSr
if ( IsNull( pSfrToWork) || ! pSfrToWork->IsValid())
return false ;
// Offset
if ( ! pSfrToWork->Offset( dPockRadOffs, ICurve::OFF_FILLET))
if ( ! pSfrToWork->Offset( dPockRadOffs + m_Params.m_dSideStep, ICurve::OFF_FILLET))
return false ;
// imposto i lati chiusi
for ( int nCC = 0 ; nCC < pSfrToWork->GetChunkCount() ; ++ nCC) {
@@ -3746,8 +3746,12 @@ SurfFinishing::AddOptimal( ICAvToolSurfTm* pCAvTlStm, const SURFLOCALVECTOR& vSr
// ----------------------- Lavorazione Zconst -------------------------------
if ( ! IsNull( pSfrZConst) && pSfrZConst->IsValid()) {
// recupero dai parametri eventuale Offset di sovrapposizione per ZConst
double dZConstOverlap = m_TParams.m_dDiam / 2 ;
if ( FromString( ExtractInfo( m_Params.m_sUserNotes, "ZConstOverlap="), dZConstOverlap))
dZConstOverlap = Clamp( dZConstOverlap, 0., m_TParams.m_dDiam / 2) ;
// mi assicuro di non uscire dalla superficie originale
pSfrZConst->Offset( m_Params.m_dSideStep, ICurve::OFF_FILLET) ;
pSfrZConst->Offset( m_Params.m_dSideStep + dZConstOverlap, ICurve::OFF_FILLET) ;
pSfrZConst->Intersect( *pSfr) ;
// lavoro ogni singolo Chunk singolarmente ( non estendo lati aperti per eveitare merge con gli stessi Chunks)
for ( int nC = 0 ; nC < pSfrZConst->GetChunkCount() ; ++ nC) {
@@ -4013,8 +4017,8 @@ SurfFinishing::AddProjection( ICAvToolSurfTm* pCAvTlStm, const SURFLOCALVECTOR&
// definisco variabili globali
BBox3d BBox3Loc ; // box totale delle superici rispetto a frLoc
CISURFTMPVECTOR vpStm ; // superfici TriMesh selezionate in globale
ICRVCOMPOPVECTOR vCrvToProj ; // vettore delle curve da proiettare sulla superfcie
ISURFTMPOVECTOR vpStm ; // superfici TriMesh selezionate in globale
ICRVCOMPOPOVECTOR vCrvToProj ; // vettore delle curve da proiettare sulla superficie
// scorro il vettore di superfici selezionate
for ( int i = 0 ; i < int( vSrfLoc.size()) ; ++ i) {
@@ -4037,8 +4041,11 @@ SurfFinishing::AddProjection( ICAvToolSurfTm* pCAvTlStm, const SURFLOCALVECTOR&
if ( bSkipMaxDown) {
// definisco i dati di calcolo della Silhouette
const double SILH_TOL = 1.0 ;
CISURFTMPVECTOR vSurf ; vSurf.reserve( vpStm.size()) ;
for ( int i = 0; i < int( vpStm.size()) ; ++ i)
vSurf.emplace_back( vpStm[i]) ;
PtrOwner<ICAvParSilhouettesSurfTm> pCavParSilh( CreateCAvParSilhouettesSurfTm()) ;
if ( IsNull( pCavParSilh) || ! pCavParSilh->SetData( vpStm, frLoc, SILH_TOL))
if ( IsNull( pCavParSilh) || ! pCavParSilh->SetData( vSurf, frLoc, SILH_TOL))
return false ;
// recupero il vettore di PolyLine della silhouette
POLYLINEVECTOR vPL ;
+4 -6
View File
@@ -2053,7 +2053,7 @@ ISurfFlatRegion*
SurfRoughing::GetSfrByStmIntersection( const IntersParPlanesSurfTm& IPPStm, double dDist, double dSmallOffs) const
{
// interseco la superficie alla quota corrente
PNTVECTOR vPnt ;
PNTVECTOR vPnt ;
BIPNTVECTOR vBpt ;
TRIA3DVECTOR vTria ;
if ( ! IPPStm.GetInters( dDist, vPnt, vBpt, vTria))
@@ -2064,7 +2064,7 @@ SurfRoughing::GetSfrByStmIntersection( const IntersParPlanesSurfTm& IPPStm, doub
return CreateSurfFlatRegion() ;
// definisco la tolleranza per i concatenamenti
double dToler = EPS_SMALL ;
double dToler = 10 * EPS_SMALL ;
// costruisco la FlatRegion da ritornare
SurfFlatRegionByContours SfrByC ;
@@ -2109,10 +2109,8 @@ SurfRoughing::GetSfrByStmIntersection( const IntersParPlanesSurfTm& IPPStm, doub
continue ;
// se curva chiusa entro 5 volte la tolleranza ma considerata aperta, la chiudo bene
Point3d ptStart, ptEnd ;
if ( pCrvCompo->GetStartPoint( ptStart) &&
pCrvCompo->GetEndPoint( ptEnd) &&
AreSamePointEpsilon( ptStart, ptEnd, 5. * dToler) &&
! AreSamePointApprox( ptStart, ptEnd)) {
if ( pCrvCompo->GetStartPoint( ptStart) && pCrvCompo->GetEndPoint( ptEnd) &&
AreSamePointEpsilon( ptStart, ptEnd, 5. * dToler) && ! AreSamePointApprox( ptStart, ptEnd)) {
// porto il punto finale a coincidere esattamente con l'inizio
pCrvCompo->ModifyEnd( ptStart) ;
}