EgtMachKernel 1.9i3 :
- in fresature e svuotature aggiunto controllo massimo affondamento anche con lavorazione a step.
This commit is contained in:
+3
-3
@@ -1201,11 +1201,11 @@ Chiseling::ProcessPath( int nPathId, int nPvId, int nClId)
|
||||
const double MAXMAT_TOL = EPS_SMALL ;
|
||||
if ( dElev > m_TParams.m_dMaxMat + MAXMAT_TOL) {
|
||||
if ( dDepth + max( dThick, 0.0) > m_TParams.m_dMaxMat) {
|
||||
dDepth = m_TParams.m_dMaxMat - max( dThick, 0.0) ;
|
||||
dElev = m_TParams.m_dMaxMat ;
|
||||
string sInfo = "Warning in Chiseling : machining depth (" + ToString( dElev, 1) +
|
||||
") bigger than MaxMaterial (" + ToString( m_TParams.m_dMaxMat, 1) + ")" ;
|
||||
LOG_INFO( GetEMkLogger(), sInfo.c_str()) ;
|
||||
dDepth = m_TParams.m_dMaxMat - max( dThick, 0.0) ;
|
||||
dElev = m_TParams.m_dMaxMat ;
|
||||
}
|
||||
else {
|
||||
string sInfo = "Error in Chiseling : machining depth (" + ToString( dElev, 1) +
|
||||
@@ -1216,7 +1216,7 @@ Chiseling::ProcessPath( int nPathId, int nPvId, int nClId)
|
||||
}
|
||||
|
||||
// vettore dei fori quadrati
|
||||
std::vector<SqHole> vSqHole ;
|
||||
vector<SqHole> vSqHole ;
|
||||
|
||||
// cerco gli angoli interni in cui fare la scalpellatura
|
||||
bool bClosed = pCompo->IsClosed() ;
|
||||
|
||||
Binary file not shown.
@@ -103,3 +103,7 @@ const double LIO_ELEV_TOL = 2.0 ;
|
||||
//----------------------------------------------------------------------------
|
||||
// Per FlatParts (vedi Nesting di EgtExecutor)
|
||||
const std::string NST_EXT_LAYER = "OutLoop" ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Sicurezza su massimo affondamento utensili
|
||||
const double MAX_DEPTH_SAFE = 2.0 ;
|
||||
|
||||
@@ -385,6 +385,7 @@ class MachMgr : public IMachMgr
|
||||
void ClearRotAxisBlock( void)
|
||||
{ m_vAxisBlock.clear() ; }
|
||||
bool IsKinematicRotAxisBlocked( int nInd) const ;
|
||||
int GetCalcTool( void) const ;
|
||||
double GetCalcRot1W( void) const ;
|
||||
bool SetCalcSolCh( int nScc, bool bExact) ;
|
||||
bool VerifyAngleOutstroke( int nInd, double dAng) const ;
|
||||
|
||||
@@ -454,6 +454,14 @@ MachMgr::GetCalcTool( string& sTool) const
|
||||
return ( ( pMch != nullptr) ? pMch->GetCurrTool( sTool) : false) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
MachMgr::GetCalcTool( void) const
|
||||
{
|
||||
Machine* pMch = GetCurrMachine() ;
|
||||
return ( ( pMch != nullptr) ? pMch->GetCurrTool() : GDB_ID_NULL) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
double
|
||||
MachMgr::GetCalcRot1W( void) const
|
||||
|
||||
+12
-5
@@ -136,22 +136,29 @@ Machine::LoadTool( Exit* pExit, const string& sTool)
|
||||
int nSolidId = m_pGeomDB->GetFirstNameInGroup( nTGrpId, "SOLID") ;
|
||||
if ( nSolidId == GDB_ID_NULL)
|
||||
return false ;
|
||||
// sposto eventuali info relative al porta utensile (ToolHolder) nel gruppo SOLID
|
||||
double dVal ;
|
||||
if ( m_pGeomDB->GetInfo( nTGrpId, TTH_LEN, dVal))
|
||||
m_pGeomDB->SetInfo( nSolidId, TTH_LEN, dVal) ;
|
||||
if ( m_pGeomDB->GetInfo( nTGrpId, TTH_DIAM, dVal))
|
||||
m_pGeomDB->SetInfo( nSolidId, TTH_DIAM, dVal) ;
|
||||
if ( m_pGeomDB->GetInfo( nTGrpId, TTH_STEM_DIAM, dVal))
|
||||
m_pGeomDB->SetInfo( nSolidId, TTH_STEM_DIAM, dVal) ;
|
||||
// sposto il gruppo SOLID nell'uscita ed elimino la sua vecchia base
|
||||
m_pGeomDB->RelocateGlob( nSolidId, nExGrp, GDB_FIRST_SON) ;
|
||||
m_pGeomDB->Erase( nTGrpId) ;
|
||||
// rinomino il gruppo SOLID con il nome dell'utensile
|
||||
if ( ! m_pGeomDB->SetName( nSolidId, sTool)) {
|
||||
string sOut = "LoadTool error : " + sTool + " invalid name" ;
|
||||
LOG_INFO( GetEMkLogger(), sOut.c_str())
|
||||
return false ;
|
||||
}
|
||||
// lo ruoto 90 deg attorno alla X locale
|
||||
int nT = m_pGeomDB->GetFirstGroupInGroup( nExGrp) ;
|
||||
if ( nT == GDB_ID_NULL)
|
||||
return false ;
|
||||
m_pGeomDB->Rotate( nT, ORIG, X_AX, 0, 1) ;
|
||||
m_pGeomDB->Rotate( nSolidId, ORIG, X_AX, 0, 1) ;
|
||||
// se mortasa, lo ruoto 90 deg attorno a Z
|
||||
int nType ;
|
||||
if ( m_pMchMgr->TdbGetCurrToolParam( TPA_TYPE, nType) && nType == TT_MORTISE_STD)
|
||||
m_pGeomDB->Rotate( nT, ORIG, Z_AX, 0, 1) ;
|
||||
m_pGeomDB->Rotate( nSolidId, ORIG, Z_AX, 0, 1) ;
|
||||
pExit->SetTool( sTool) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
+7
-7
@@ -136,13 +136,13 @@ Machining::PrepareToolPreview( void) const
|
||||
// altrimenti lo svuoto
|
||||
else
|
||||
m_pGeomDB->EmptyGroup( nStId) ;
|
||||
// se necessario, imposto l'utensile corrente
|
||||
string sCurrTool ; m_pMchMgr->GetCalcTool( sCurrTool) ;
|
||||
const_cast<Machining*>( this)->UpdateToolData() ;
|
||||
if ( ! EqualNoCase( sCurrTool, GetToolName())) {
|
||||
if ( ! m_pMchMgr->SetCalcTool( GetToolName(), GetHeadName(), GetExitNbr()))
|
||||
return false ;
|
||||
}
|
||||
// se necessario, imposto l'utensile corrente
|
||||
string sCurrTool ; m_pMchMgr->GetCalcTool( sCurrTool) ;
|
||||
const_cast<Machining*>( this)->UpdateToolData() ;
|
||||
if ( ! EqualNoCase( sCurrTool, GetToolName())) {
|
||||
if ( ! m_pMchMgr->SetCalcTool( GetToolName(), GetHeadName(), GetExitNbr()))
|
||||
return false ;
|
||||
}
|
||||
// copio la testa della lavorazione nel gruppo
|
||||
int nHeadId = m_pMchMgr->GetHeadId( GetHeadName()) ;
|
||||
int nId = m_pGeomDB->CopyGlob( nHeadId, GDB_ID_NULL, nStId) ;
|
||||
|
||||
+70
-15
@@ -55,6 +55,8 @@ using namespace std ;
|
||||
// 2319 = "Error in Milling : link movements not calculable"
|
||||
// 2320 = "Error in Milling : link outstroke xx"
|
||||
// 2321 = "Error in Milling : post apply not calculable"
|
||||
// 2322 = "Error in Milling : Tool loading failed"
|
||||
// 2323 = "Error in Milling : machining depth (xxx) bigger than MaxDepth (yyy)"
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
USEROBJ_REGISTER( GetOperationClass( OPER_MILLING), Milling) ;
|
||||
@@ -181,9 +183,12 @@ Milling::Milling( void)
|
||||
m_Params.m_sToolName = "*" ;
|
||||
m_TParams.m_sName = "*" ;
|
||||
m_TParams.m_sHead = "*" ;
|
||||
m_dTHoldLen = 0 ;
|
||||
m_dTHoldDiam = 0 ;
|
||||
m_nMills = 0 ;
|
||||
m_bStepOn = false ;
|
||||
m_nHeadSolCh = MCH_SCC_NONE ;
|
||||
m_bAggrBottom = false ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -462,6 +467,18 @@ Milling::Preview( bool bRecalc)
|
||||
}
|
||||
m_nHeadSolCh = m_pMchMgr->GetCurrMachine()->GetHeadSolCh( m_TParams.m_sHead) ;
|
||||
|
||||
// rendo corrente l'utensile usato nella lavorazione
|
||||
if ( ! m_pMchMgr->SetCalcTool( m_TParams.m_sName, m_TParams.m_sHead, m_TParams.m_nExit)) {
|
||||
m_pMchMgr->SetLastError( 2322, "Error in Milling : Tool loading failed") ;
|
||||
return false ;
|
||||
}
|
||||
// recupero i dati del portautensile
|
||||
int nToolId = m_pMchMgr->GetCalcTool() ;
|
||||
m_dTHoldLen = 0 ;
|
||||
m_pGeomDB->GetInfo( nToolId, TTH_LEN, m_dTHoldLen) ;
|
||||
m_dTHoldDiam = 0 ;
|
||||
m_pGeomDB->GetInfo( nToolId, TTH_DIAM, m_dTHoldDiam) ;
|
||||
|
||||
// se necessario, eseguo concatenamento ed inserisco i percorsi sotto la geometria ausiliaria
|
||||
if ( bChain && ! Chain( nAuxId)) {
|
||||
m_pMchMgr->SetLastError( 2315, "Error in Milling : Chaining failed") ;
|
||||
@@ -528,6 +545,18 @@ Milling::Apply( bool bRecalc, bool bPostApply)
|
||||
}
|
||||
m_nHeadSolCh = m_pMchMgr->GetCurrMachine()->GetHeadSolCh( m_TParams.m_sHead) ;
|
||||
|
||||
// rendo corrente l'utensile usato nella lavorazione
|
||||
if ( ! m_pMchMgr->SetCalcTool( m_TParams.m_sName, m_TParams.m_sHead, m_TParams.m_nExit)) {
|
||||
m_pMchMgr->SetLastError( 2322, "Error in Milling : Tool loading failed") ;
|
||||
return false ;
|
||||
}
|
||||
// recupero i dati del portautensile
|
||||
int nToolId = m_pMchMgr->GetCalcTool() ;
|
||||
m_dTHoldLen = 0 ;
|
||||
m_pGeomDB->GetInfo( nToolId, TTH_LEN, m_dTHoldLen) ;
|
||||
m_dTHoldDiam = 0 ;
|
||||
m_pGeomDB->GetInfo( nToolId, TTH_DIAM, m_dTHoldDiam) ;
|
||||
|
||||
// se necessario, eseguo concatenamento ed inserisco i percorsi sotto la geometria ausiliaria
|
||||
if ( bChain && ! Chain( nAuxId)) {
|
||||
m_pMchMgr->SetLastError( 2315, "Error in Milling : Chaining failed") ;
|
||||
@@ -1443,23 +1472,49 @@ Milling::ProcessPath( int nPathId, int nPvId, int nClId)
|
||||
") bigger than MaxMaterial (" + ToString( m_TParams.m_dMaxMat, 1) + ")" ;
|
||||
LOG_INFO( GetEMkLogger(), sInfo.c_str()) ;
|
||||
}
|
||||
// se lavorazione singola e l'elevazione supera la capacità dell'utensile
|
||||
if ( ( dOkStep < EPS_SMALL || dOkStep > dElev) && dElev > m_TParams.m_dMaxMat + EPS_SMALL) {
|
||||
// se affondamento riducibile : segnalo, riduco e continuo
|
||||
if ( dDepth + max( dThick, 0.0) > m_TParams.m_dMaxMat) {
|
||||
dDepth = m_TParams.m_dMaxMat - max( dThick, 0.0) ;
|
||||
string sInfo = "Warning in Milling : machining depth (" + ToString( dElev, 1) +
|
||||
") bigger than MaxMaterial (" + ToString( m_TParams.m_dMaxMat, 1) + ")" ;
|
||||
LOG_INFO( GetEMkLogger(), sInfo.c_str()) ;
|
||||
}
|
||||
// altrimenti errore
|
||||
else {
|
||||
string sInfo = "Error in Milling : machining depth (" + ToString( dElev, 1) +
|
||||
") bigger than MaxMaterial (" + ToString( m_TParams.m_dMaxMat, 1) + ")" ;
|
||||
m_pMchMgr->SetLastError( 2305, sInfo.c_str()) ;
|
||||
return false ;
|
||||
// se lavorazione singola
|
||||
if ( dOkStep < EPS_SMALL || dOkStep > dElev) {
|
||||
// se l'elevazione supera la capacità dell'utensile
|
||||
if ( dElev > m_TParams.m_dMaxMat + EPS_SMALL) {
|
||||
// se affondamento riducibile : segnalo, riduco e continuo
|
||||
if ( dDepth + max( dThick, 0.0) > m_TParams.m_dMaxMat) {
|
||||
string sInfo = "Warning in Milling : machining depth (" + ToString( dElev, 1) +
|
||||
") bigger than MaxMaterial (" + ToString( m_TParams.m_dMaxMat, 1) + ")" ;
|
||||
LOG_INFO( GetEMkLogger(), sInfo.c_str()) ;
|
||||
dDepth = m_TParams.m_dMaxMat - max( dThick, 0.0) ;
|
||||
dElev = m_TParams.m_dMaxMat ;
|
||||
}
|
||||
// altrimenti errore
|
||||
else {
|
||||
string sInfo = "Error in Milling : machining depth (" + ToString( dElev, 1) +
|
||||
") bigger than MaxMaterial (" + ToString( m_TParams.m_dMaxMat, 1) + ")" ;
|
||||
m_pMchMgr->SetLastError( 2305, sInfo.c_str()) ;
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
}
|
||||
// altrimenti lavorazione a step
|
||||
else {
|
||||
// se l'elevazione supera il massimo affondamento dell'utensile
|
||||
double dMaxDepth = m_TParams.m_dLen - ( m_TParams.m_dDiam > m_dTHoldDiam ? 0 : m_dTHoldLen) - MAX_DEPTH_SAFE ;
|
||||
if ( dElev > dMaxDepth + EPS_SMALL) {
|
||||
// se affondamento riducibile : segnalo, riduco e continuo
|
||||
if ( dDepth + max( dThick, 0.0) > dMaxDepth) {
|
||||
string sInfo = "Warning in Milling : machining depth (" + ToString( dElev, 1) +
|
||||
") bigger than MaxDepth (" + ToString( dMaxDepth, 1) + ")" ;
|
||||
LOG_INFO( GetEMkLogger(), sInfo.c_str()) ;
|
||||
dDepth = dMaxDepth - max( dThick, 0.0) ;
|
||||
dElev = dMaxDepth ;
|
||||
}
|
||||
// altrimenti errore
|
||||
else {
|
||||
string sInfo = "Error in Milling : machining depth (" + ToString( dElev, 1) +
|
||||
") bigger than MaxDepth (" + ToString( dMaxDepth, 1) + ")" ;
|
||||
m_pMchMgr->SetLastError( 2323, sInfo) ;
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// per lame e con elevazione di lato definita
|
||||
else if ( dSideElev > EPS_SMALL) {
|
||||
|
||||
@@ -127,6 +127,8 @@ class Milling : public Machining
|
||||
SELVECTOR m_vId ; // identificativi entità geometriche da lavorare
|
||||
MillingData m_Params ; // parametri lavorazione
|
||||
ToolData m_TParams ; // parametri utensile
|
||||
double m_dTHoldLen ; // lunghezza del porta-utensile
|
||||
double m_dTHoldDiam ; // diametro del porta-utensile
|
||||
int m_nMills ; // numero di percorsi di lavoro generati
|
||||
bool m_bStepOn ; // flag per indicare che effettivamente si lavora a step
|
||||
int m_nHeadSolCh ; // criterio scelta soluzione impostato nella testa
|
||||
|
||||
+10
-10
@@ -1165,17 +1165,17 @@ Mortising::ProcessPath( int nPathId, int nPvId, int nClId)
|
||||
LOG_INFO( GetEMkLogger(), sInfo.c_str()) ;
|
||||
}
|
||||
|
||||
// verifico che il massimo materiale dell'utensile sia sensato
|
||||
const double MIN_MAXMAT = 1.0 ;
|
||||
if ( m_TParams.m_dMaxMat < dElev && m_TParams.m_dMaxMat < MIN_MAXMAT) {
|
||||
string sInfo = "Error in Mortising : Tool MaxMaterial too small (" +
|
||||
ToString( m_TParams.m_dMaxMat, 2) + ")" ;
|
||||
m_pMchMgr->SetLastError( 2513, sInfo) ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
// verifico di non superare il massimo materiale
|
||||
const double MAXMAT_TOL = EPS_SMALL ;
|
||||
if ( dElev > m_TParams.m_dMaxMat + MAXMAT_TOL) {
|
||||
// verifico che il massimo materiale dell'utensile sia sensato
|
||||
const double MIN_MAXMAT = 1.0 ;
|
||||
if ( m_TParams.m_dMaxMat < dElev && m_TParams.m_dMaxMat < MIN_MAXMAT) {
|
||||
string sInfo = "Error in Mortising : Tool MaxMaterial too small (" +
|
||||
ToString( m_TParams.m_dMaxMat, 2) + ")" ;
|
||||
m_pMchMgr->SetLastError( 2513, sInfo) ;
|
||||
return false ;
|
||||
}
|
||||
if ( dElev > m_TParams.m_dMaxMat + EPS_SMALL) {
|
||||
// se lo step supera la capacità dell'utensile
|
||||
if ( m_Params.m_dStep > m_TParams.m_dMaxMat + EPS_SMALL) {
|
||||
dOkStep = m_TParams.m_dMaxMat ;
|
||||
|
||||
+79
-22
@@ -64,6 +64,8 @@ using namespace std ;
|
||||
// 2425 = "Error in Pocketing : link movements not calculable"
|
||||
// 2426 = "Error in Pocketing : link outstroke xxx"
|
||||
// 2427 = "Error in Pocketing : post apply not calculable"
|
||||
// 2428 = "Error in Pocketing : Tool loading failed"
|
||||
// 2429 = "Error in Pocketing : machining depth (xxx) bigger than MaxDepth (yyy)"
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
USEROBJ_REGISTER( GetOperationClass( OPER_POCKETING), Pocketing) ;
|
||||
@@ -190,8 +192,11 @@ Pocketing::Pocketing( void)
|
||||
m_Params.m_sToolName = "*" ;
|
||||
m_TParams.m_sName = "*" ;
|
||||
m_TParams.m_sHead = "*" ;
|
||||
m_dTHoldLen = 0 ;
|
||||
m_dTHoldDiam = 0 ;
|
||||
m_dMaxHelixRad = INFINITO ;
|
||||
m_nPockets = 0 ;
|
||||
m_bAggrBottom = false ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -438,6 +443,18 @@ Pocketing::Preview( bool bRecalc)
|
||||
return false ;
|
||||
}
|
||||
|
||||
// rendo corrente l'utensile usato nella lavorazione
|
||||
if ( ! m_pMchMgr->SetCalcTool( m_TParams.m_sName, m_TParams.m_sHead, m_TParams.m_nExit)) {
|
||||
m_pMchMgr->SetLastError( 2428, "Error in Pocketing : Tool loading failed") ;
|
||||
return false ;
|
||||
}
|
||||
// recupero i dati del portautensile
|
||||
int nToolId = m_pMchMgr->GetCalcTool() ;
|
||||
m_dTHoldLen = 0 ;
|
||||
m_pGeomDB->GetInfo( nToolId, TTH_LEN, m_dTHoldLen) ;
|
||||
m_dTHoldDiam = 0 ;
|
||||
m_pGeomDB->GetInfo( nToolId, TTH_DIAM, m_dTHoldDiam) ;
|
||||
|
||||
// se necessario, eseguo concatenamento ed inserisco i percorsi sotto la geometria ausiliaria
|
||||
if ( bChain && ! Chain( nAuxId)) {
|
||||
m_pMchMgr->SetLastError( 2421, "Error in Pocketing : Chaining failed") ;
|
||||
@@ -506,6 +523,18 @@ Pocketing::Apply( bool bRecalc, bool bPostApply)
|
||||
return false ;
|
||||
}
|
||||
|
||||
// rendo corrente l'utensile usato nella lavorazione
|
||||
if ( ! m_pMchMgr->SetCalcTool( m_TParams.m_sName, m_TParams.m_sHead, m_TParams.m_nExit)) {
|
||||
m_pMchMgr->SetLastError( 2428, "Error in Pocketing : Tool loading failed") ;
|
||||
return false ;
|
||||
}
|
||||
// recupero i dati del portautensile
|
||||
int nToolId = m_pMchMgr->GetCalcTool() ;
|
||||
m_dTHoldLen = 0 ;
|
||||
m_pGeomDB->GetInfo( nToolId, TTH_LEN, m_dTHoldLen) ;
|
||||
m_dTHoldDiam = 0 ;
|
||||
m_pGeomDB->GetInfo( nToolId, TTH_DIAM, m_dTHoldDiam) ;
|
||||
|
||||
// se necessario, eseguo concatenamento ed inserisco i percorsi sotto la geometria ausiliaria
|
||||
if ( bChain && ! Chain( nAuxId)) {
|
||||
m_pMchMgr->SetLastError( 2421, "Error in Pocketing : Chaining failed") ;
|
||||
@@ -1251,15 +1280,6 @@ Pocketing::ProcessPath( int nPathId, int nPvId, int nClId)
|
||||
if ( FromString( ExtractInfo( m_Params.m_sUserNotes, "MaxElev="), dMaxElev) && dElev > dMaxElev)
|
||||
dElev = dMaxElev ;
|
||||
|
||||
// verifico che il massimo materiale dell'utensile sia sensato
|
||||
const double MIN_MAXMAT = 1.0 ;
|
||||
if ( m_TParams.m_dMaxMat < dElev && m_TParams.m_dMaxMat < MIN_MAXMAT) {
|
||||
string sInfo = "Error in Pocketing : Tool MaxMaterial too small (" +
|
||||
ToString( m_TParams.m_dMaxMat, 2) + ")" ;
|
||||
m_pMchMgr->SetLastError( 2422, sInfo) ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
// verifico che lo step dell'utensile sia sensato
|
||||
double dOkStep = m_Params.m_dStep ;
|
||||
const double MIN_ZSTEP = 1.0 ;
|
||||
@@ -1270,6 +1290,15 @@ Pocketing::ProcessPath( int nPathId, int nPvId, int nClId)
|
||||
LOG_INFO( GetEMkLogger(), sInfo.c_str()) ;
|
||||
}
|
||||
|
||||
// verifico che il massimo materiale dell'utensile sia sensato
|
||||
const double MIN_MAXMAT = 1.0 ;
|
||||
if ( m_TParams.m_dMaxMat < dElev && m_TParams.m_dMaxMat < MIN_MAXMAT) {
|
||||
string sInfo = "Error in Pocketing : Tool MaxMaterial too small (" +
|
||||
ToString( m_TParams.m_dMaxMat, 2) + ")" ;
|
||||
m_pMchMgr->SetLastError( 2422, sInfo) ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
// verifico di non superare il massimo materiale
|
||||
// se lo step supera la capacità dell'utensile
|
||||
if ( m_Params.m_dStep > m_TParams.m_dMaxMat + EPS_SMALL) {
|
||||
@@ -1278,21 +1307,49 @@ Pocketing::ProcessPath( int nPathId, int nPvId, int nClId)
|
||||
") bigger than MaxMaterial (" + ToString( m_TParams.m_dMaxMat, 1) + ")" ;
|
||||
LOG_INFO( GetEMkLogger(), sInfo.c_str()) ;
|
||||
}
|
||||
// se lavorazione singola e l'elevazione supera la capacità dell'utensile
|
||||
if ( ( dOkStep < EPS_SMALL || dOkStep > dElev) && dElev > m_TParams.m_dMaxMat + EPS_SMALL) {
|
||||
if ( dDepth + max( dThick, 0.0) > m_TParams.m_dMaxMat) {
|
||||
dDepth = m_TParams.m_dMaxMat - max( dThick, 0.0) ;
|
||||
string sInfo = "Warning in Pocketing : machining depth (" + ToString( dElev, 1) +
|
||||
") bigger than MaxMaterial (" + ToString( m_TParams.m_dMaxMat, 1) + ")" ;
|
||||
LOG_INFO( GetEMkLogger(), sInfo.c_str()) ;
|
||||
}
|
||||
else {
|
||||
string sInfo = "Error in Pocketing : machining depth (" + ToString( dElev, 1) +
|
||||
") bigger than MaxMaterial (" + ToString( m_TParams.m_dMaxMat, 1) + ")" ;
|
||||
m_pMchMgr->SetLastError( 2407, sInfo) ;
|
||||
return false ;
|
||||
// se lavorazione singola
|
||||
if ( dOkStep < EPS_SMALL || dOkStep > dElev) {
|
||||
// se l'elevazione supera la capacità dell'utensile
|
||||
if ( dElev > m_TParams.m_dMaxMat + EPS_SMALL) {
|
||||
// se affondamento riducibile : segnalo, riduco e continuo
|
||||
if ( dDepth + max( dThick, 0.0) > m_TParams.m_dMaxMat) {
|
||||
string sInfo = "Warning in Pocketing : machining depth (" + ToString( dElev, 1) +
|
||||
") bigger than MaxMaterial (" + ToString( m_TParams.m_dMaxMat, 1) + ")" ;
|
||||
LOG_INFO( GetEMkLogger(), sInfo.c_str()) ;
|
||||
dDepth = m_TParams.m_dMaxMat - max( dThick, 0.0) ;
|
||||
dElev = m_TParams.m_dMaxMat ;
|
||||
}
|
||||
// altrimenti errore
|
||||
else {
|
||||
string sInfo = "Error in Pocketing : machining depth (" + ToString( dElev, 1) +
|
||||
") bigger than MaxMaterial (" + ToString( m_TParams.m_dMaxMat, 1) + ")" ;
|
||||
m_pMchMgr->SetLastError( 2407, sInfo) ;
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
}
|
||||
// altrimenti lavorazione a step
|
||||
else {
|
||||
// se l'elevazione supera il massimo affondamento dell'utensile
|
||||
double dMaxDepth = m_TParams.m_dLen - ( m_TParams.m_dDiam > m_dTHoldDiam ? 0 : m_dTHoldLen) - MAX_DEPTH_SAFE ;
|
||||
if ( dElev > dMaxDepth + EPS_SMALL) {
|
||||
// se affondamento riducibile : segnalo, riduco e continuo
|
||||
if ( dDepth + max( dThick, 0.0) > dMaxDepth) {
|
||||
string sInfo = "Warning in Pocketing : machining depth (" + ToString( dElev, 1) +
|
||||
") bigger than MaxDepth (" + ToString( dMaxDepth, 1) + ")" ;
|
||||
LOG_INFO( GetEMkLogger(), sInfo.c_str()) ;
|
||||
dDepth = dMaxDepth - max( dThick, 0.0) ;
|
||||
dElev = dMaxDepth ;
|
||||
}
|
||||
// altrimenti errore
|
||||
else {
|
||||
string sInfo = "Error in Pocketing : machining depth (" + ToString( dElev, 1) +
|
||||
") bigger than MaxDepth (" + ToString( dMaxDepth, 1) + ")" ;
|
||||
m_pMchMgr->SetLastError( 2429, sInfo) ;
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// verifiche per svuotature dal basso
|
||||
m_bAggrBottom = false ;
|
||||
|
||||
@@ -132,6 +132,8 @@ class Pocketing : public Machining
|
||||
SELVECTOR m_vId ; // identificativi entità geometriche da lavorare
|
||||
PocketingData m_Params ; // parametri lavorazione
|
||||
ToolData m_TParams ; // parametri utensile
|
||||
double m_dTHoldLen ; // lunghezza del porta-utensile
|
||||
double m_dTHoldDiam ; // diametro del porta-utensile
|
||||
double m_dMaxHelixRad ; // raggio massimo attacco ad elica nel caso di cerchi
|
||||
int m_nPockets ; // numero di percorsi di svuotatura generati
|
||||
bool m_bAggrBottom ; // flag di utilizzo dell'aggregato da sotto
|
||||
|
||||
+1
-1
@@ -1284,7 +1284,7 @@ Sawing::ProcessPath( int nPathId, int nPvId, int nClId)
|
||||
}
|
||||
}
|
||||
// verifico di non superare il massimo materiale
|
||||
if ( dDepth > m_TParams.m_dMaxMat) {
|
||||
if ( dDepth > m_TParams.m_dMaxMat + EPS_SMALL) {
|
||||
string sOut = "Error in Sawing : machining depth (" + ToString( dDepth, 1) +
|
||||
") bigger than MaxMaterial (" + ToString( m_TParams.m_dMaxMat, 1) + ")" ;
|
||||
m_pMchMgr->SetLastError( 2206, sOut.c_str()) ;
|
||||
|
||||
Reference in New Issue
Block a user