EgtMachKernel :

- piccoli aggiustamenti sui tabs.
This commit is contained in:
Dario Sassi
2020-06-12 07:36:10 +00:00
parent dda2eeafbe
commit 4cb2356e4f
+35 -1
View File
@@ -4228,13 +4228,46 @@ Milling::CalcTabsPositions( const ICurveComposite* pCompo, bool bPathTabsEnable,
if ( ! bPathTabsEnable)
return true ;
// lunghezza di un Tab
double dTabLen = tdTabs.m_dRampLen + tdTabs.m_dTopLen + tdTabs.m_dRampLen ;
// lunghezza del percorso
double dLen ; pCompo->GetLength( dLen) ; dLen -= m_dAddedOverlap ;
// vettore estrusione del percorso
Vector3d vtExtr ; pCompo->GetExtrusion( vtExtr) ;
if ( vtExtr.IsSmall())
vtExtr = Z_AX ;
#if 0
// determinazione intervalli validi
Intervals ivTabs ;
// inizializzo intervallo valido
ivTabs.Set( 0, dLen) ;
// elimino le zone vicine agli angoli
bool bContinue = true ;
double dCurrLen = 0 ;
const ICurve* pCurrCrv = pCompo->GetFirstCurve() ;
const ICurve* pNextCrv = pCompo->GetNextCurve() ;
while ( pNextCrv != nullptr) {
// aggiorno lunghezza
double dTmp = 0 ;
pCurrCrv->GetLength( dTmp) ;
dCurrLen += dTmp ;
// verifico se angolo tra le entità
Vector3d vtTg1 ; pCurrCrv->GetEndDir( vtTg1) ;
Vector3d vtTg2 ; pCurrCrv->GetStartDir( vtTg2) ;
if ( abs( ( vtTg1 ^ vtTg2) * vtExtr) > sin( 5 * DEGTORAD)) {
}
// passo al successivo
pCurrCrv = pNextCrv ;
pNextCrv = ( bContinue ? pCompo->GetNextCurve() : nullptr) ;
if ( pNextCrv == nullptr && pCompo->IsClosed()) {
pNextCrv = pCompo->GetFirstCurve() ;
bContinue = false ;
}
}
// elimino parti (test)
if ( dLen > 300) {
ivTabs.Subtract( 0, 100) ;
@@ -4243,13 +4276,14 @@ Milling::CalcTabsPositions( const ICurveComposite* pCompo, bool bPathTabsEnable,
else {
ivTabs.Subtract( 0.4 * dLen, 0.6 * dLen) ;
}
#endif
// determino posizioni di inizio dei Tabs
double dNextTab = 0.5 * tdTabs.m_dBottomLen ;
double dCurrLen = 0 ;
while ( dCurrLen + dNextTab < dLen) {
vdTabs.emplace_back( dCurrLen + dNextTab) ;
dCurrLen += dNextTab + tdTabs.m_dRampLen + tdTabs.m_dTopLen + tdTabs.m_dRampLen ;
dCurrLen += dNextTab + dTabLen ;
dNextTab = tdTabs.m_dBottomLen ;
}
if ( ! vdTabs.empty())