Merge commit '47f8df92f4a3311dd647a8f60f1fc29d56006675'
This commit is contained in:
+12
-5
@@ -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
@@ -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) ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user