EgtMachKernel :
- in PocketingNT e SurfFinishing aggiunto migliorato il ricalcolo automatico della lavorazione - mofifica parametri per CalcPocketing.
This commit is contained in:
+28
-3
@@ -44,7 +44,6 @@
|
||||
#include "/EgtDev/Include/EGkCalcPocketing.h"
|
||||
#include "/EgtDev/Include/EGkSurfLocal.h"
|
||||
#include "/EgtDev/Include/EGkDistPointSurfFr.h"
|
||||
#include "/EgtDev/Include/EGkDistPointSurfTm.h"
|
||||
#include <algorithm>
|
||||
|
||||
using namespace std ;
|
||||
@@ -723,6 +722,20 @@ PocketingNT::MyApply( bool bRecalc, bool bPostApply)
|
||||
m_pGeomDB->EmptyGroup( nAuxId) ;
|
||||
bChain = true ;
|
||||
}
|
||||
// altrimenti, controllo esistenza delle regioni (per compatibilità)
|
||||
else {
|
||||
int nPathId = m_pGeomDB->GetFirstGroupInGroup( nAuxId) ;
|
||||
while ( nPathId != GDB_ID_NULL && ! bChain) {
|
||||
int nGeoId = m_pGeomDB->GetFirstInGroup( nPathId) ;
|
||||
while ( nGeoId != GDB_ID_NULL && ! bChain) {
|
||||
bChain = ( m_pGeomDB->GetGeoType( nGeoId) != SRF_FLATRGN) ;
|
||||
nGeoId = m_pGeomDB->GetNext( nGeoId) ;
|
||||
}
|
||||
nPathId = m_pGeomDB->GetNextGroup( nPathId) ;
|
||||
}
|
||||
if ( bChain)
|
||||
m_pGeomDB->EmptyGroup( nAuxId) ;
|
||||
}
|
||||
|
||||
// rendo corrente l'utensile usato nella lavorazione
|
||||
if ( ! m_pMchMgr->SetCalcTool( m_TParams.m_sName, m_TParams.m_sHead, m_TParams.m_nExit)) {
|
||||
@@ -3629,7 +3642,8 @@ PocketingNT::CalcPaths( STEPINFOPOVECTOR& vStepInfo)
|
||||
ICRVCOMPOPOVECTOR vCrvPaths ;
|
||||
if ( ! CalcPocketing( vStepInfo[i].pSfrPock, m_TParams.m_dDiam / 2, GetOffsR(), m_Params.m_dSideStep,
|
||||
m_Params.m_dSideAngle, m_dOpenMinSafe, m_Params.m_nSubType, true, m_Params.m_bInvert,
|
||||
false, true, bAdjustFeed, ptStartRef, vStepInfo[i].pSfrLimit, false, dMaxOptSize, vCrvPaths)) {
|
||||
false, true, bAdjustFeed, ptStartRef, vStepInfo[i].pSfrLimit, false, dMaxOptSize,
|
||||
m_Params.m_dLiTang, GetLeadInType(), vCrvPaths)) {
|
||||
m_pMchMgr->SetLastError( 3028, "Error in PocketingNT : Error in CalcPocketing") ;
|
||||
return false ;
|
||||
}
|
||||
@@ -3697,7 +3711,18 @@ PocketingNT::CalcPaths( STEPINFOPOVECTOR& vStepInfo)
|
||||
! vStepInfo[i].vPaths[0].bOutStart &&
|
||||
! vStepInfo[i].vPaths[0].bOutEnd) ;
|
||||
}
|
||||
|
||||
// se svuotatura a spirale ed entrata ad elica, aggiusto il raggio massimo
|
||||
if ( m_Params.m_nSubType == POCKET_SUB_SPIRALOUT && GetLeadInType() == POCKET_LI_HELIX) {
|
||||
for ( const StepInfoPO& currStep : vStepInfo) {
|
||||
if ( currStep.pSfrPock != nullptr && currStep.pSfrPock->IsValid()) {
|
||||
double dRad = 0. ;
|
||||
currStep.pSfrPock->GetMaxOffset( dRad) ;
|
||||
m_dMaxHelixRad = min( 0.5 * min( m_Params.m_dLiTang, m_TParams.m_dDiam), dRad - ( m_TParams.m_dDiam / 2. + GetOffsR())) ; ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// calcolo la curva di ritorno ( se necessaria)
|
||||
for ( int i = 0 ; i < int( vStepInfo.size()) ; ++ i) {
|
||||
for ( int j = 0 ; j < int( vStepInfo[i].vPaths.size()) ; ++ j) {
|
||||
|
||||
+28
-5
@@ -527,7 +527,7 @@ SurfFinishing::Apply( bool bRecalc, bool bPostApply)
|
||||
bool
|
||||
SurfFinishing::MyApply( bool bRecalc, bool bPostApply)
|
||||
{
|
||||
// reset numero tagli nella lavorazione
|
||||
// reset numero percorsi di finitura generati
|
||||
int nCurrPaths = m_nPaths ;
|
||||
m_nPaths = 0 ;
|
||||
|
||||
@@ -586,6 +586,25 @@ SurfFinishing::MyApply( bool bRecalc, bool bPostApply)
|
||||
m_pGeomDB->EmptyGroup( nAuxId) ;
|
||||
bChain = true ;
|
||||
}
|
||||
else {
|
||||
// altrimenti, controllo esistenza delle regioni (per compatibilità)
|
||||
int nPathId = m_pGeomDB->GetFirstGroupInGroup( nAuxId) ;
|
||||
while ( nPathId != GDB_ID_NULL && ! bChain) {
|
||||
int nGeoId = m_pGeomDB->GetFirstInGroup( nPathId) ;
|
||||
while ( nGeoId != GDB_ID_NULL && ! bChain) {
|
||||
if ( m_Params.m_nSubType == SURFFIN_SUB_ZIGZAG || m_Params.m_nSubType == SURFFIN_SUB_ONEWAY ||
|
||||
m_Params.m_nSubType == SURFFIN_SUB_SPIRALIN || m_Params.m_nSubType == SURFFIN_SUB_SPIRALOUT ||
|
||||
m_Params.m_nSubType == SURFFIN_SUB_Z_CONST || m_Params.m_nSubType == SURFFIN_SUB_OPTIMAL)
|
||||
bChain = ( m_pGeomDB->GetGeoType( nGeoId) != SRF_FLATRGN) ;
|
||||
else if ( m_Params.m_nSubType == SURFFIN_SUB_PROJECT)
|
||||
bChain = ( m_pGeomDB->GetGeoType( nPathId) != CRV_COMPO) ;
|
||||
nGeoId = m_pGeomDB->GetNext( nGeoId) ;
|
||||
}
|
||||
nPathId = m_pGeomDB->GetNextGroup( nPathId) ;
|
||||
}
|
||||
if ( bChain)
|
||||
m_pGeomDB->EmptyGroup( nAuxId) ;
|
||||
}
|
||||
|
||||
// rendo corrente l'utensile usato nella lavorazione
|
||||
if ( ! m_pMchMgr->SetCalcTool( m_TParams.m_sName, m_TParams.m_sHead, m_TParams.m_nExit)) {
|
||||
@@ -1802,7 +1821,8 @@ SurfFinishing::AddZigZag( ICAvToolSurfTm* pCAvTlStm, const Frame3d& frSurf, cons
|
||||
double dPockRadOffs = m_TParams.m_dDiam / 2 - m_Params.m_dSideStep - m_Params.m_dOverlap ;
|
||||
ICRVCOMPOPOVECTOR vpCrvs ;
|
||||
if ( ! CalcPocketing( pSfrPock, dPockRad, dPockRadOffs, m_Params.m_dSideStep, m_Params.m_dSideAngle, 5.,
|
||||
POCKET_ZIGZAG, false, false, true, false, false, P_INVALID, nullptr, true, m_Params.m_dSideStep, vpCrvs)) {
|
||||
POCKET_ZIGZAG, false, false, true, false, false, P_INVALID, nullptr, true, m_Params.m_dSideStep,
|
||||
m_Params.m_dLiTang, GetLeadInType(), vpCrvs)) {
|
||||
m_pMchMgr->SetLastError( 3125, "Error in SurfFinishing : CalcPocketing failed") ;
|
||||
return false ;
|
||||
}
|
||||
@@ -2003,7 +2023,8 @@ SurfFinishing::AddOneWay( ICAvToolSurfTm* pCAvTlStm, const Frame3d& frSurf, cons
|
||||
double dPockRadOffs = m_TParams.m_dDiam / 2 - m_Params.m_dSideStep - m_Params.m_dOverlap ;
|
||||
ICRVCOMPOPOVECTOR vpCrvs ;
|
||||
if ( ! CalcPocketing( pSfrPock, dPockRad, dPockRadOffs, m_Params.m_dSideStep, m_Params.m_dSideAngle, 5.,
|
||||
POCKET_ONEWAY, false, false, true, false, false, P_INVALID, nullptr, true, m_Params.m_dSideStep, vpCrvs)) {
|
||||
POCKET_ONEWAY, false, false, true, false, false, P_INVALID, nullptr, true, m_Params.m_dSideStep,
|
||||
m_Params.m_dLiTang, GetLeadInType(), vpCrvs)) {
|
||||
m_pMchMgr->SetLastError( 3125, "Error in SurfFinishing : CalcPocketing failed") ;
|
||||
return false ;
|
||||
}
|
||||
@@ -2205,7 +2226,8 @@ SurfFinishing::AddSpiral( ICAvToolSurfTm* pCAvTlStm, const Frame3d& frSurf, cons
|
||||
int nType = ( bInVsOut ? POCKET_SPIRALIN : POCKET_SPIRALOUT) ;
|
||||
ICRVCOMPOPOVECTOR vpCrvs ;
|
||||
if ( ! CalcPocketing( pSfrPock, dPockRad, dPockRadOffs, m_Params.m_dSideStep, m_Params.m_dSideAngle, 5.,
|
||||
nType, false, false, true, false, false, P_INVALID, nullptr, true, m_Params.m_dSideStep, vpCrvs)) {
|
||||
nType, false, false, true, false, false, P_INVALID, nullptr, true, m_Params.m_dSideStep,
|
||||
m_Params.m_dLiTang, GetLeadInType(), vpCrvs)) {
|
||||
m_pMchMgr->SetLastError( 3125, "Error in SurfFinishing : CalcPocketing failed") ;
|
||||
return false ;
|
||||
}
|
||||
@@ -4502,7 +4524,8 @@ SurfFinishing::AddOptimal( ICAvToolSurfTm* pCAvTlStm, const SURFLOCALVECTOR& vSr
|
||||
// lavorazione Spiral
|
||||
ICRVCOMPOPOVECTOR vpCrvs ;
|
||||
if ( ! CalcPocketing( pSfrSpiral, m_Params.m_dSideStep, 0., m_Params.m_dSideStep, m_Params.m_dSideAngle, 5.,
|
||||
POCKET_SPIRALIN, false, false, true, false, false, P_INVALID, nullptr, true, m_Params.m_dSideStep, vpCrvs)) {
|
||||
POCKET_SPIRALIN, false, false, true, false, false, P_INVALID, nullptr, true, m_Params.m_dSideStep,
|
||||
m_Params.m_dLiTang, GetLeadInType(), vpCrvs)) {
|
||||
m_pMchMgr->SetLastError( 3125, "Error in SurfFinishing : CalcPocketing failed") ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
+2
-1
@@ -2409,7 +2409,8 @@ SurfRoughing::CalcPaths( const INTINTVECTOR& vPocket, STEPINFOSRVECTOR& vStepInf
|
||||
ICRVCOMPOPOVECTOR vCrvPaths ;
|
||||
if ( ! CalcPocketing( vStepInfo[nInd].pSfrPock, m_TParams.m_dDiam / 2, 0., m_Params.m_dSideStep,
|
||||
m_Params.m_dSideAngle, 5., vStepInfo[nInd].nSubType, true, vStepInfo[nInd].bInverted,
|
||||
false, true, true, ptEndLastPath, vStepInfo[nInd].pSfrLimit, false, m_Params.m_dSideStep, vCrvPaths)) {
|
||||
false, true, true, ptEndLastPath, vStepInfo[nInd].pSfrLimit, false, m_Params.m_dSideStep,
|
||||
m_Params.m_dLiTang, GetLeadInType(), 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