EgtMachKernel :

- in PocketingNT aggiunta gestione lucidature.
This commit is contained in:
Riccardo Elitropi
2026-03-31 18:55:32 +02:00
parent f9964a2f3c
commit 73739a2931
3 changed files with 43 additions and 14 deletions
+35 -8
View File
@@ -4325,14 +4325,31 @@ PocketingNT::CalcPaths( STEPINFOPOVECTOR& vStepInfo)
bool bAdjustFeed = true ;
GetValInNotes( m_Params.m_sUserNotes, UN_ADJUSTFEED, bAdjustFeed) ;
// verifico se percorso di lucidatura
bool bAllOffset = false ;
bool bPolishing = ( m_TParams.m_nType == TT_MILL_POLISHING) ;
if ( bPolishing) {
int nType = GetType() ;
if ( ( nType == POCKET_SPIRALIN || GetType() == POCKET_SPIRALOUT) && m_Params.m_dEpicyclesRad < EPS_SMALL)
bPolishing = false ;
if ( bPolishing) {
if ( ( nType == POCKET_SPIRALIN || GetType() == POCKET_SPIRALOUT) && m_Params.m_dEpicyclesDist < 100. * EPS_SMALL) {
m_pMchMgr->SetLastError( 2413, "Error in Pocketing : Toolpath not computable") ;
return false ;
}
bAllOffset = true ;
}
}
// scorro gli indici delle superfici
for ( int i = 0 ; i < int( vStepInfo.size()) ; ++ i) {
// calcolo i percorsi di Pocketing
// calcolo i percorsi di Pocketing ( o di lucidatura se richiesto)
ICRVCOMPOPOVECTOR vCrvPaths ;
if ( ! CalcPocketing( vStepInfo[i].pSfrPock, m_TParams.m_dDiam / 2, GetOffsR(), GetSideStep(),
m_Params.m_dSideAngle, m_dOpenMinSafe, m_Params.m_nSubType, true, true, m_Params.m_bInvert,
false, true, bAdjustFeed, ptStartRef, vStepInfo[i].pSfrLimit, false, dMaxOptSize,
m_Params.m_dLiTang, GetLeadInType(), vCrvPaths)) {
false, true, bAdjustFeed, ptStartRef, vStepInfo[i].pSfrLimit, bAllOffset, dMaxOptSize,
GetLeadInType(), m_Params.m_dLiTang, m_Params.m_dLiElev, GetLeadOutType(), m_Params.m_dLoTang,
bPolishing, m_Params.m_dEpicyclesRad, m_Params.m_dEpicyclesDist, vCrvPaths)) {
m_pMchMgr->SetLastError( 3028, "Error in PocketingNT : Error in CalcPocketing") ;
return false ;
}
@@ -4593,11 +4610,18 @@ PocketingNT::AddPocket( STEPINFOPOVECTOR& vStepInfo, const Vector3d& vtTool, dou
// se attacco a zigzag o a spirale o a scivolo, l'elevazione va nell'attacco
if ( GetLeadInType() != POCKET_LI_NONE) {
double dMyLIO_ELEV_TOL = min( LIO_ELEV_TOL, dSafeZ) ;
// se prima entità in assoluto
// se prima entità in assoluto
if ( bAbsFirst) {
// muovo ptP1 alla quota dell'elevazione corrente
ptP1 += vtTool * ( dCurrElev + dMyLIO_ELEV_TOL) ;
dCurrElev = - min( LIO_ELEV_TOL, dSafeZ) ;
// se lucidatura forzo il valore al parametro di elevazione in ingresso
if ( m_TParams.m_nType == TT_MILL_POLISHING) {
ptP1 += vtTool * max( m_Params.m_dLiElev, dCurrElev + LIO_ELEV_TOL) ;
dCurrElev = 0 ;
}
// altrimenti, muovo ptP1 alla quota dell'elevazione corrente
else {
ptP1 += vtTool * ( dCurrElev + dMyLIO_ELEV_TOL) ;
dCurrElev = - min( LIO_ELEV_TOL, dSafeZ) ;
}
}
// altrimenti
else if ( ! currPath.bOutStart)
@@ -5502,7 +5526,10 @@ PocketingNT::AddLeadOut( const Point3d& ptEnd, const Vector3d& vtEnd, const Vect
// recupero le quote per la curva
Point3d ptIni ; pCrv->GetStartPoint( ptIni) ;
Point3d ptFin ; pCrv->GetEndPoint( ptFin) ;
ptFin += vtN * 1.0 ;
double dExtraElev = 1.0 ;
if ( m_TParams.m_nType == TT_MILL_POLISHING)
dExtraElev = max( m_Params.m_dLiElev, 1.0) ;
ptFin += vtN * dExtraElev ;
double dNini = ( ptIni - ORIG) * vtN ;
double dNfin = ( ptFin - ORIG) * vtN ;
AdjustCurveSlope( pCrv, dNini, dNfin) ;
+6 -5
View File
@@ -2267,7 +2267,7 @@ SurfFinishing::AddZigZag( ICAvToolSurfTm* pCAvTlStm, const Frame3d& frSurf, cons
ICRVCOMPOPOVECTOR vpCrvs ;
if ( ! CalcPocketing( pSfrCnt, m_TParams.m_dDiam / 2., 0., m_Params.m_dSideStep, m_Params.m_dSideAngle, 5.,
POCKET_ZIGZAG, false, false, false, true, false, false, P_INVALID, nullptr, true, m_Params.m_dSideStep,
m_Params.m_dLiTang, GetLeadInType(), vpCrvs)) {
GetLeadInType(), m_Params.m_dLiTang, 0., GetLeadOutType(), m_Params.m_dLoTang, false, 0., 0., vpCrvs)) {
m_pMchMgr->SetLastError( 3125, "Error in SurfFinishing : CalcPocketing failed") ;
return false ;
}
@@ -2295,7 +2295,7 @@ SurfFinishing::AddOneWay( ICAvToolSurfTm* pCAvTlStm, const Frame3d& frSurf, cons
ICRVCOMPOPOVECTOR vpCrvs ;
if ( ! CalcPocketing( pSfrCnt, m_TParams.m_dDiam / 2., 0., m_Params.m_dSideStep, m_Params.m_dSideAngle, 5.,
POCKET_ONEWAY, false, false, false, true, false, false, P_INVALID, nullptr, true, m_Params.m_dSideStep,
m_Params.m_dLiTang, GetLeadInType(), vpCrvs)) {
GetLeadInType(), m_Params.m_dLiTang, 0., GetLeadOutType(), m_Params.m_dLoTang, false, 0., 0., vpCrvs)) {
m_pMchMgr->SetLastError( 3125, "Error in SurfFinishing : CalcPocketing failed") ;
return false ;
}
@@ -2323,7 +2323,7 @@ SurfFinishing::AddSpiral( ICAvToolSurfTm* pCAvTlStm, const Frame3d& frSurf, cons
ICRVCOMPOPOVECTOR vpCrvs ;
if ( ! CalcPocketing( pSfrCnt, m_TParams.m_dDiam / 2., 0., m_Params.m_dSideStep, m_Params.m_dSideAngle, 5.,
nType, false, false, false, true, false, false, P_INVALID, nullptr, true, m_Params.m_dSideStep,
m_Params.m_dLiTang, GetLeadInType(), vpCrvs)) {
GetLeadInType(), m_Params.m_dLiTang, 0., GetLeadOutType(), m_Params.m_dLoTang, false, 0., 0., vpCrvs)) {
m_pMchMgr->SetLastError( 3125, "Error in SurfFinishing : CalcPocketing failed") ;
return false ;
}
@@ -4762,7 +4762,8 @@ SurfFinishing::GetOffsetCurvesFromPencilProjection( const ICRVCOMPOPOVECTOR& vCr
ICRVCOMPOPOVECTOR vCrvZigZag ;
if ( ! CalcPocketing( pSfrChunk, m_TParams.m_dDiam / 2., 0., m_Params.m_dSideStep, m_Params.m_dSideAngle,
5., POCKET_SUB_ZIGZAG, false, false, m_Params.m_bInvert, true, false,
false, P_INVALID, nullptr, true, INFINITO, INFINITO, GetLeadInType(), vCrvZigZag))
false, P_INVALID, nullptr, true, INFINITO, GetLeadInType(), m_Params.m_dLiTang, 0.,
GetLeadOutType(), m_Params.m_dLoTang, false, 0., 0., vCrvZigZag))
return false ;
// inserisco le curve ricavate
for ( auto& pCompo : vCrvZigZag) {
@@ -5460,7 +5461,7 @@ SurfFinishing::CalcOptimalZigZagCurves( const ISurfFlatRegion* pSfrLoc, const Fr
ICRVCOMPOPOVECTOR vpCrvs ;
if ( ! CalcPocketing( pSfrChunk, m_TParams.m_dDiam / 2., 0., m_Params.m_dSideStep, m_Params.m_dSideAngle, 5.,
nSubType, false, false, false, true, false, false, P_INVALID, nullptr, true, m_Params.m_dSideStep,
m_Params.m_dLiTang, GetLeadInType(), vpCrvs)) {
GetLeadInType(), m_Params.m_dLiTang, 0., GetLeadOutType(), m_Params.m_dLoTang, false, 0., 0., vpCrvs)) {
m_pMchMgr->SetLastError( 3125, "Error in SurfFinishing : CalcPocketing failed") ;
return false ;
}
+2 -1
View File
@@ -3007,7 +3007,8 @@ SurfRoughing::CalcPaths( const INTINTVECTOR& vPocket, STEPINFOSRVECTOR& vStepInf
if ( ! CalcPocketing( vStepInfo[nInd].pSfrPock, m_TParams.m_dDiam / 2, 0., m_Params.m_dSideStep,
m_Params.m_dSideAngle, 5., vStepInfo[nInd].nSubType, true, true, vStepInfo[nInd].bInverted,
false, true, true, ptEndLastPath, vStepInfo[nInd].pSfrLimit, false, m_Params.m_dSideStep,
m_Params.m_dLiTang, GetLeadInType(), vCrvPaths)) {
GetLeadInType(), m_Params.m_dLiTang, m_Params.m_dLiElev, GetLeadOutType(), m_Params.m_dLoTang,
false, 0., 0., vCrvPaths)) {
if ( vStepInfo[nInd].bIsExtraStep) {
string sWarn = "Warning in SurfRoughing : CalcPocketing failed with substep (" + ToString( vStepInfo[nInd].dDepth, 1) + ")" ;
m_pMchMgr->SetWarning( 3055, sWarn) ;