EgtMachKernel (NewLink) :

- correzione a funzione SpecialLink e aggiunto parametro a funzione GetDoubleToolData.
This commit is contained in:
Riccardo Elitropi
2026-03-19 09:52:01 +01:00
parent b418e2d3ef
commit 708fe02b9b
9 changed files with 42 additions and 35 deletions
+24 -16
View File
@@ -3503,7 +3503,7 @@ bool
Operation::ManageDoubleOperNew( Operation* pPrevOpe)
{
// recupero i dati della lavorazione precedente
string sPrevTool, sPrevHead ; int nPrevExitNbr ;
string sPrevTool, sPrevTcPos, sPrevHead ; int nPrevExitNbr ;
string sPrevDblTool, sPrevDblHead ; int nPrevDblExitNbr ;
bool bPrevInDouble = false ;
if ( pPrevOpe != nullptr && ! pPrevOpe->IsEmpty( NEED_ONE_TP_OK)) {
@@ -3513,15 +3513,15 @@ Operation::ManageDoubleOperNew( Operation* pPrevOpe)
bPrevInDouble = ( pPrevOpe->GetFirstFullToolpath( false) != GDB_ID_NULL) ;
}
if ( bPrevInDouble) {
if ( ! pPrevOpe->GetDoubleToolData( sPrevDblTool, sPrevDblHead, nPrevDblExitNbr))
if ( ! pPrevOpe->GetDoubleToolData( sPrevDblTool, sPrevTcPos, sPrevDblHead, nPrevDblExitNbr))
return false ;
}
// verifico se la lavorazione corrente è singola e in caso contrario recupero i dati della testa in doppio
string sCurrDblTool, sCurrDblHead ; int nCurrDblExitNbr ;
string sCurrDblTool, sCurrTcPos, sCurrDblHead ; int nCurrDblExitNbr ;
bool bCurrInDouble = ( GetFirstFullToolpath( false) != GDB_ID_NULL) ;
if ( bCurrInDouble) {
if ( ! GetDoubleToolData( sCurrDblTool, sCurrDblHead, nCurrDblExitNbr))
if ( ! GetDoubleToolData( sCurrDblTool, sCurrTcPos, sCurrDblHead, nCurrDblExitNbr))
return false ;
}
@@ -3620,7 +3620,7 @@ Operation::ManageDoubleOperNew( Operation* pPrevOpe)
if ( ! MoveHeadFromMachToMach( pPrevOpe, true, sPrevTool, sPrevHead, nPrevExitNbr,
true, GetToolName(), GetHeadName(), GetExitNbr(), false))
return false ;
// Porto la testa double delle lavorazione precednete alla lavorazine corrente
// Porto la testa double delle lavorazione precedente alla lavorazine corrente
if ( ! MoveHeadFromMachToMach( pPrevOpe, false, sPrevDblTool, sPrevDblHead, nPrevDblExitNbr,
false, sCurrDblTool, sCurrDblHead, nCurrDblExitNbr, false))
return false ;
@@ -4340,9 +4340,9 @@ Operation::ToolChangeNeeded( const Operation& Ope1, bool bMain1, const Operation
// se confronto il principale di Ope1 con il secondario di Ope2
else if ( bMain1 && ! bMain2) {
// verifico che la seconda operazione sia in doppio
string sDblTool2, sDblHead2 ;
string sDblTool2, sDblTcPos2, sDblHead2 ;
int nDblExitNbr2 ;
if ( ! Ope2.GetDoubleToolData( sDblTool2, sDblHead2, nDblExitNbr2))
if ( ! Ope2.GetDoubleToolData( sDblTool2, sDblTcPos2, sDblHead2, nDblExitNbr2))
return true ;
// se non cambia l'utensile, non cambia la testa fisica
if ( EqualNoCase( Ope1.GetToolName(), sDblTool2))
@@ -4354,9 +4354,9 @@ Operation::ToolChangeNeeded( const Operation& Ope1, bool bMain1, const Operation
// se confronto il secondario di Ope1 con il principale di Ope2
else if ( ! bMain1 && bMain2) {
// verifico che la prima operazione sia in doppio
string sDblTool1, sDblHead1 ;
string sDblTool1, sDblTcPos1, sDblHead1 ;
int nDblExitNbr1 ;
if ( ! Ope1.GetDoubleToolData( sDblTool1, sDblHead1, nDblExitNbr1))
if ( ! Ope1.GetDoubleToolData( sDblTool1, sDblTcPos1, sDblHead1, nDblExitNbr1))
return true ;
// se non cambia l'utensile, non cambia la testa fisica
if ( EqualNoCase( sDblTool1, Ope2.GetToolName()))
@@ -4368,10 +4368,10 @@ Operation::ToolChangeNeeded( const Operation& Ope1, bool bMain1, const Operation
// se confronto utensili secondari
else {
// verifico che le due lavorazioni siano in doppio
string sDblTool1, sDblTool2, sDblHead1, sDblHead2 ;
string sDblTool1, sDblTool2, sDblTcPos1, sDblTcPos2, sDblHead1, sDblHead2 ;
int nDblExitNbr1, nDblExitNbr2 ;
if ( ! Ope1.GetDoubleToolData( sDblTool1, sDblHead1, nDblExitNbr1) ||
! Ope2.GetDoubleToolData( sDblTool2, sDblHead2, nDblExitNbr2))
if ( ! Ope1.GetDoubleToolData( sDblTool1, sDblTcPos1, sDblHead1, nDblExitNbr1) ||
! Ope2.GetDoubleToolData( sDblTool2, sDblTcPos2, sDblHead2, nDblExitNbr2))
return true ;
// se non cambia l'utensile, non cambia la testa fisica
if ( EqualNoCase( sDblTool1, sDblTool2))
@@ -5927,10 +5927,18 @@ Operation::SpecialLink( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd, int
int nErr = 99 ;
// imposto valori parametri
bOk = bOk && pMch->LuaCreateGlobTable( EMC_VAR) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + GVAR_TOOL, GetToolName()) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + GVAR_HEAD, GetHeadName()) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + GVAR_EXIT, GetExitNbr()) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + GVAR_TCPOS, GetToolTcPos()) ;
string sToolName = GetToolName() ;
string sHeadName = GetHeadName() ;
int nExitNbr = GetExitNbr() ;
string sTcPos = GetToolTcPos() ;
if ( ( pPrevOpe != nullptr && ! bPrevMain) || ( pNextOpe != nullptr && ! bNextMain)) {
if ( ! GetDoubleToolData( sToolName, sTcPos, sHeadName, nExitNbr))
return false ;
}
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + GVAR_TOOL, sToolName) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + GVAR_HEAD, sHeadName) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + GVAR_EXIT, nExitNbr) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + GVAR_TCPOS, sTcPos) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_PREVMCHID, ( pPrevOpe != nullptr ? pPrevOpe->GetOwner() : GDB_ID_NULL)) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_PREVMAIN, ( bPrevMain ? MCH_CL : MCH_DBL)) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_PREVPHASE, ( pPrevOpe != nullptr ? pPrevOpe->m_nPhase : 0)) ;