EgtMachKernel (NewLink) :
- correzione a funzione SpecialLink e aggiunto parametro a funzione GetDoubleToolData.
This commit is contained in:
+24
-16
@@ -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)) ;
|
||||
|
||||
Reference in New Issue
Block a user