EgtMachKernel 1.8f5 :

- corretto Update lavorazioni.
This commit is contained in:
Dario Sassi
2017-06-28 07:52:45 +00:00
parent b88aa9cf18
commit 0be287551f
3 changed files with 35 additions and 17 deletions
+34 -17
View File
@@ -1178,6 +1178,9 @@ Operation::AdjustStartEndMovements( void)
bMaxZ = true ;
}
// elimino vecchie risalite alla fine della lavorazione
RemoveRise() ;
// aggiusto l'inizio di ogni percorso di lavoro
bool bOk = true ;
int nClPathId = m_pGeomDB->GetFirstGroupInGroup( nClId) ;
@@ -1211,6 +1214,8 @@ Operation::AdjustOneStartMovement( int nClPathId, const DBLVECTOR& vAxPrev, bool
{
if ( m_pMchMgr == nullptr || m_pGeomDB == nullptr)
return false ;
// elimino eventuali CLIMB già presenti
RemoveClimb( nClPathId) ;
// recupero la prima entità di questo percorso
int nEntId = m_pGeomDB->GetFirstInGroup( nClPathId) ;
// recupero i dati Cam dell'entità
@@ -1226,7 +1231,7 @@ Operation::AdjustOneStartMovement( int nClPathId, const DBLVECTOR& vAxPrev, bool
if ( m_pGeomDB->Copy( nEntId, GDB_ID_NULL, nEntId, GDB_AFTER) == GDB_ID_NULL)
return false ;
// modifico quella originale (è la prima del percorso)
m_pGeomDB->RemoveName( nEntId) ;
m_pGeomDB->SetName( nEntId, MCH_CL_CLIMB) ;
DBLVECTOR vAxNew = vAxCurr ;
vAxNew[2] = vAxPrev[2] ;
// eventuale aggiustamenti speciali dipendenti dalla macchina
@@ -1269,18 +1274,18 @@ Operation::AdjustOneStartMovement( int nClPathId, const DBLVECTOR& vAxPrev, bool
if ( pNew1CamData == nullptr)
return false ;
// modifico questa entità
m_pGeomDB->RemoveName( nNew1Id) ;
m_pGeomDB->SetName( nNew1Id, MCH_CL_CLIMB) ;
DBLVECTOR vAxNew1 = vAxPrev ;
vAxNew1[2] = ( bSafeOk ? dSafeZ : dHomeZ) ;
int nMask = CamData::MSK_L3 ;
// eventuali aggiustamenti speciali dipendenti dalla macchina
Vector3d vtTool = pCamData->GetToolDir() ;
Vector3d vtTool = pNew1CamData->GetToolDir() ;
DBLVECTOR vAxTmp = vAxNew1 ;
bool bModif ;
if ( ! SpecialMoveZup( vtTool, vAxTmp, bModif))
return false ;
if ( bModif) {
pCamData->SetToolDir( vtTool) ;
pNew1CamData->SetToolDir( vtTool) ;
if ( vAxNew1.size() >= 4 && abs( vAxTmp[3] - vAxNew1[3]) > EPS_ANG_SMALL) {
vAxCurr[3] = vAxNew1[3] ;
nMask |= CamData::MSK_R1 ;
@@ -1305,8 +1310,8 @@ Operation::AdjustOneStartMovement( int nClPathId, const DBLVECTOR& vAxPrev, bool
CamData* pNew2CamData = GetCamData( m_pGeomDB->GetUserObj( nNew2Id)) ;
if ( pNew2CamData == nullptr)
return false ;
// modifico quella originale (è la prima del percorso)
m_pGeomDB->RemoveName( nNew2Id) ;
// la modifico
m_pGeomDB->SetName( nNew2Id, MCH_CL_CLIMB) ;
DBLVECTOR vAxNew2 = vAxCurr ;
vAxNew2[2] = ( bSafeOk ? dSafeZ : dHomeZ) ;
pNew2CamData->SetAxes( CamData::AS_OK, vAxNew2) ;
@@ -1324,7 +1329,7 @@ Operation::AdjustOneStartMovement( int nClPathId, const DBLVECTOR& vAxPrev, bool
if ( m_pGeomDB->Copy( nEntId, GDB_ID_NULL, nEntId, GDB_AFTER) == GDB_ID_NULL)
return false ;
// modifico quella originale (è la prima del percorso)
m_pGeomDB->RemoveName( nEntId) ;
m_pGeomDB->SetName( nEntId, MCH_CL_CLIMB) ;
DBLVECTOR vAxNew = vAxPrev ;
vAxNew[2] = vAxCurr[2] ;
pCamData->SetAxes( CamData::AS_OK, vAxNew) ;
@@ -1337,7 +1342,7 @@ Operation::AdjustOneStartMovement( int nClPathId, const DBLVECTOR& vAxPrev, bool
if ( m_pGeomDB->Copy( nEntId, GDB_ID_NULL, nEntId, GDB_AFTER) == GDB_ID_NULL)
return false ;
// modifico quella originale (è la prima del percorso)
m_pGeomDB->RemoveName( nEntId) ;
m_pGeomDB->SetName( nEntId, MCH_CL_CLIMB) ;
DBLVECTOR vAxNew = vAxCurr ;
vAxNew[2] = vAxPrev[2] ;
// eventuali aggiustamenti speciali dipendenti dalla macchina
@@ -1380,6 +1385,22 @@ Operation::ToolChangeNeeded( const Operation& Op1, const Operation& Op2)
return true ;
}
//----------------------------------------------------------------------------
bool
Operation::RemoveClimb( int nClPathId)
{
if ( m_pMchMgr == nullptr || m_pGeomDB == nullptr)
return false ;
// elimino tutte le entità CLIMB all'inizio del percorso
int nId = m_pGeomDB->GetFirstNameInGroup( nClPathId, MCH_CL_CLIMB) ;
while ( nId != GDB_ID_NULL) {
m_pGeomDB->Erase( nId) ;
nId = m_pGeomDB->GetFirstNameInGroup( nClPathId, MCH_CL_CLIMB) ;
}
return true ;
}
//----------------------------------------------------------------------------
bool
Operation::AddRise( DBLVECTOR& vAxVal, double dDelta)
@@ -1411,7 +1432,7 @@ Operation::AddRise( DBLVECTOR& vAxVal, double dDelta)
if ( nId == GDB_ID_NULL)
return false ;
m_pGeomDB->SetName( nId, MCH_CL_RISE) ;
// creo oggetto dati Cam
// creo oggetto dati Cam da associare al punto
PtrOwner<CamData> pCam( pCamData->Clone()) ;
if ( IsNull( pCam))
return false ;
@@ -1435,13 +1456,13 @@ Operation::AddRise( DBLVECTOR& vAxVal, double dDelta)
nFlag = 3 ; // movimento a Zmax
}
// eventuale aggiustamenti speciali dipendenti dalla macchina
Vector3d vtTool = pCamData->GetToolDir() ;
Vector3d vtTool = pCam->GetToolDir() ;
DBLVECTOR vAxTmp = vAxVal ;
bool bModif ;
if ( ! SpecialMoveZup( vtTool, vAxTmp, bModif))
return false ;
if ( bModif) {
pCamData->SetToolDir( vtTool) ;
pCam->SetToolDir( vtTool) ;
vAxVal = vAxTmp ;
}
// verifico extra-corsa dell'asse Z
@@ -1788,12 +1809,8 @@ Operation::SpecialMoveZup( Vector3d& vtTool, DBLVECTOR& vAx, bool& bModif)
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + GVAR_TDIR, vtTool) ;
// valore degli assi
int nNumAxes = int( vAx.size()) ;
for ( int i = 1 ; i <= MAX_AXES ; ++ i) {
if ( i <= nNumAxes)
bOk = bOk && pMch->LuaSetGlobVar( GetGlobVarAxisValue( i, EMC_VAR), vAx[i-1]) ;
else
bOk = bOk && pMch->LuaResetGlobVar( GetGlobVarAxisValue( i, EMC_VAR)) ;
}
for ( int i = 1 ; i <= nNumAxes ; ++ i)
bOk = bOk && pMch->LuaSetGlobVar( GetGlobVarAxisValue( i, EMC_VAR), vAx[i-1]) ;
// eseguo
bOk = bOk && pMch->LuaCallFunction( ON_SPECIAL_MOVEZUP, false) ;
// recupero valori parametri obbligatori