EgtMachKernel :
- in PocketingNT aggiunta gestione lucidature.
This commit is contained in:
+35
-8
@@ -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
@@ -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
@@ -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) ;
|
||||
|
||||
Reference in New Issue
Block a user