EgtMachKernel 2.3b5 :
- aggiunto Flag2 a CamData per secondo flag dei movimenti - nei movimenti Genera e Simula ora definito EMT.FLAG2 - in Simula possibilità di visualizzare quote assi principali anche se disabilitati come movimento EMT.ShowAxes.
This commit is contained in:
+43
-8
@@ -130,7 +130,7 @@ Operation::Init( MachMgr* pMchMgr)
|
||||
Operation::Operation( void)
|
||||
: m_nOwnerId( GDB_ID_NULL), m_pGeomDB( nullptr), m_pMchMgr( nullptr), m_nPhase( 1),
|
||||
m_nPathId( GDB_ID_NULL), m_bCurr( false), m_ptCurr(),
|
||||
m_vtTool(), m_vtCorr(), m_vtAux(), m_dFeed( 0), m_nFlag( 0), m_nIndex( 0)
|
||||
m_vtTool(), m_vtCorr(), m_vtAux(), m_dFeed( 0), m_nFlag( 0), m_nFlag2( 0), m_nIndex( 0)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -1236,8 +1236,8 @@ Operation::CalculateAxesValues( const string& sHint, bool bSolChExact)
|
||||
// Assegno gli angoli iniziali
|
||||
DBLVECTOR vAxRotPrec( nRotAxes, 0.) ;
|
||||
DBLVECTOR vAxVal ;
|
||||
// se utensile non cambiato, uso gli angoli finali della lavorazione precedente
|
||||
if ( ! sPrevTool.empty() && ! ToolChangeNeeded( *pPrevOp, *this) &&
|
||||
// se non richiesti angoli Home e utensile non cambiato, uso gli angoli finali della lavorazione precedente
|
||||
if ( GetUserNotesZmax() != 2 && ! sPrevTool.empty() && ! ToolChangeNeeded( *pPrevOp, *this) &&
|
||||
pPrevOp->GetFinalAxesValues( true, vAxVal)) {
|
||||
for ( int i = 0 ; i < nRotAxes ; ++ i)
|
||||
vAxRotPrec[i] = vAxVal[nLinAxes + i] ;
|
||||
@@ -1949,22 +1949,26 @@ Operation::AdjustOneStartMovement( int nClPathId, int nPrevClPathId, Operation*
|
||||
DBLVECTOR vAxNew = vAxCurr ;
|
||||
vAxNew[2] = dHomeZ ;
|
||||
int nFlagNew = 2 ;
|
||||
int nFlag2New = 1 ;
|
||||
// eventuali aggiustamenti speciali dipendenti dalla macchina
|
||||
DBLVECTOR vAxTmp = vAxNew ;
|
||||
Vector3d vtTool = pCamData->GetToolDir() ;
|
||||
int nFlagTmp = nFlagNew ;
|
||||
int nFlag2Tmp = nFlag2New ;
|
||||
bool bModif ;
|
||||
if ( ! SpecialMoveZup( vAxTmp, vtTool, nFlagTmp, bModif))
|
||||
if ( ! SpecialMoveZup( vAxTmp, vtTool, nFlagTmp, nFlag2Tmp, bModif))
|
||||
return false ;
|
||||
if ( bModif) {
|
||||
vAxNew = vAxTmp ;
|
||||
pCamData->SetToolDir( vtTool) ;
|
||||
nFlagNew = nFlagTmp ;
|
||||
nFlag2New = nFlag2Tmp ;
|
||||
}
|
||||
// applico le modifiche (non forzo emissione della Z che è già massima)
|
||||
pCamData->SetAxes( CamData::AS_OK, vAxNew) ;
|
||||
pCamData->ChangeAxesMask( CamData::MSK_L1 | CamData::MSK_L2 | CamData::MSK_R1 | CamData::MSK_R2 | CamData::MSK_R3) ;
|
||||
pCamData->SetFlag( nFlagNew) ;
|
||||
pCamData->SetFlag2( nFlag2New) ;
|
||||
}
|
||||
// verifico se la testa interferisce con i pezzi o i bloccaggi sulla tavola
|
||||
else {
|
||||
@@ -2015,22 +2019,26 @@ Operation::AdjustOneStartMovement( int nClPathId, int nPrevClPathId, Operation*
|
||||
DBLVECTOR vAxNew = vAxCurr ;
|
||||
vAxNew[2] = vAxNew1[2] ;
|
||||
int nFlagNew = 2 ;
|
||||
int nFlag2New = 1 ;
|
||||
// eventuali aggiustamenti speciali dipendenti dalla macchina
|
||||
Vector3d vtTool = pCamData->GetToolDir() ;
|
||||
DBLVECTOR vAxTmp = vAxNew ;
|
||||
int nFlagTmp = nFlagNew ;
|
||||
int nFlag2Tmp = nFlag2New ;
|
||||
bool bModif ;
|
||||
if ( ! SpecialMoveZup( vAxTmp, vtTool, nFlagTmp, bModif))
|
||||
if ( ! SpecialMoveZup( vAxTmp, vtTool, nFlagTmp, nFlag2Tmp, bModif))
|
||||
return false ;
|
||||
if ( bModif) {
|
||||
pCamData->SetToolDir( vtTool) ;
|
||||
vAxNew = vAxTmp ;
|
||||
nFlagNew = nFlagTmp ;
|
||||
nFlag2New = nFlag2Tmp ;
|
||||
}
|
||||
// applico le modifiche (non forzo emissione della Z che è già alta)
|
||||
pCamData->SetAxes( CamData::AS_OK, vAxNew) ;
|
||||
pCamData->ChangeAxesMask( CamData::MSK_L1 | CamData::MSK_L2 | CamData::MSK_R1 | CamData::MSK_R2 | CamData::MSK_R3) ;
|
||||
pCamData->SetFlag( nFlagNew) ;
|
||||
pCamData->SetFlag2( nFlag2New) ;
|
||||
}
|
||||
// altrimenti
|
||||
else {
|
||||
@@ -2058,22 +2066,26 @@ Operation::AdjustOneStartMovement( int nClPathId, int nPrevClPathId, Operation*
|
||||
DBLVECTOR vAxNew = vAxCurr ;
|
||||
vAxNew[2] = vAxPrev[2] ;
|
||||
int nFlagNew = 2 ;
|
||||
int nFlag2New = 0 ;
|
||||
// eventuali aggiustamenti speciali dipendenti dalla macchina
|
||||
Vector3d vtTool = pCamData->GetToolDir() ;
|
||||
DBLVECTOR vAxTmp = vAxNew ;
|
||||
int nFlagTmp = nFlagNew ;
|
||||
int nFlag2Tmp = nFlag2New ;
|
||||
bool bModif ;
|
||||
if ( ! SpecialMoveZup( vAxTmp, vtTool, nFlagTmp, bModif))
|
||||
if ( ! SpecialMoveZup( vAxTmp, vtTool, nFlagTmp, nFlag2Tmp, bModif))
|
||||
return false ;
|
||||
if ( bModif) {
|
||||
pCamData->SetToolDir( vtTool) ;
|
||||
vAxNew = vAxTmp ;
|
||||
nFlagNew = nFlagTmp ;
|
||||
nFlag2New = nFlag2Tmp ;
|
||||
}
|
||||
// applico le modifiche (non forzo emissione della Z che è già alta)
|
||||
pCamData->SetAxes( CamData::AS_OK, vAxNew) ;
|
||||
pCamData->ChangeAxesMask( CamData::MSK_L1 | CamData::MSK_L2 | CamData::MSK_R1 | CamData::MSK_R2 | CamData::MSK_R3) ;
|
||||
pCamData->SetFlag( nFlagNew) ;
|
||||
pCamData->SetFlag2( nFlag2New) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2169,6 +2181,7 @@ Operation::AddRise( DBLVECTOR& vAxVal, double dDelta, int nClPathId, bool bZHome
|
||||
return false ;
|
||||
// flag per tipo di movimento in rapido
|
||||
int nFlag = 0 ;
|
||||
int nFlag2 = 0 ;
|
||||
// se delta positivo lo uso come incremento di Z
|
||||
if ( dDelta > 0 || bZHomeDown) {
|
||||
vAxVal[2] += dDelta ;
|
||||
@@ -2181,18 +2194,21 @@ Operation::AddRise( DBLVECTOR& vAxVal, double dDelta, int nClPathId, bool bZHome
|
||||
m_pMchMgr->GetAllCurrAxesHomePos( vAxHome) ;
|
||||
vAxVal[2] = vAxHome[2] ;
|
||||
nFlag = 3 ; // movimento a Zmax
|
||||
nFlag2 = 1 ;
|
||||
}
|
||||
// eventuale aggiustamenti speciali dipendenti dalla macchina
|
||||
Vector3d vtTool = pCam->GetToolDir() ;
|
||||
DBLVECTOR vAxTmp = vAxVal ;
|
||||
int nFlagTmp = nFlag ;
|
||||
int nFlag2Tmp = nFlag2 ;
|
||||
bool bModif ;
|
||||
if ( ! SpecialMoveZup( vAxTmp, vtTool, nFlagTmp, bModif))
|
||||
if ( ! SpecialMoveZup( vAxTmp, vtTool, nFlagTmp, nFlag2Tmp, bModif))
|
||||
return false ;
|
||||
if ( bModif) {
|
||||
pCam->SetToolDir( vtTool) ;
|
||||
vAxVal = vAxTmp ;
|
||||
nFlag = nFlagTmp ;
|
||||
nFlag2 = nFlag2Tmp ;
|
||||
}
|
||||
// verifico extra-corsa dell'asse Z
|
||||
double dL1 = vAxVal[0] ;
|
||||
@@ -2208,6 +2224,7 @@ Operation::AddRise( DBLVECTOR& vAxVal, double dDelta, int nClPathId, bool bZHome
|
||||
pCam->SetMoveType( 0) ;
|
||||
pCam->SetFeed( 0) ;
|
||||
pCam->SetFlag( nFlag) ;
|
||||
pCam->SetFlag2( nFlag2) ;
|
||||
// associo questo oggetto a quello geometrico
|
||||
m_pGeomDB->SetUserObj( nId, Release( pCam)) ;
|
||||
|
||||
@@ -2484,6 +2501,9 @@ Operation::ForcedZmax( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd) const
|
||||
int nRotAxes = m_pMchMgr->GetCurrRotAxes() ;
|
||||
if ( nLinAxes + nRotAxes != vAxStart.size() || nLinAxes + nRotAxes != vAxEnd.size())
|
||||
return true ;
|
||||
// Verifico se richiesta risalita da note utente della lavorazione
|
||||
if ( GetUserNotesZmax() > 0)
|
||||
return true ;
|
||||
// Se testa con Info ZMAXONROT != 0 e movimento assi rotanti -> risalita a Zmax
|
||||
int nHeadId = pMch->GetCurrHead() ;
|
||||
DBLVECTOR vdVal ;
|
||||
@@ -2500,6 +2520,19 @@ Operation::ForcedZmax( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd) const
|
||||
return false ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int
|
||||
Operation::GetUserNotesZmax( void) const
|
||||
{
|
||||
string sUserNotes ;
|
||||
if ( m_pMchMgr != nullptr && m_pMchMgr->GetMachiningParam( MPA_USERNOTES, sUserNotes)) {
|
||||
int nVal ;
|
||||
if ( FromString( ExtractInfo( sUserNotes, "StartZmax="), nVal))
|
||||
return nVal ;
|
||||
}
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Operation::GetZHomeDown( void) const
|
||||
@@ -2678,7 +2711,7 @@ Operation::TestCollisionAvoid( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEn
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Operation::SpecialMoveZup( DBLVECTOR& vAx, Vector3d& vtTool, int& nFlag, bool& bModif)
|
||||
Operation::SpecialMoveZup( DBLVECTOR& vAx, Vector3d& vtTool, int& nFlag, int& nFlag2, bool& bModif)
|
||||
{
|
||||
// recupero la macchina corrente
|
||||
Machine* pMch = ( m_pMchMgr != nullptr ? m_pMchMgr->GetCurrMachine() : nullptr) ;
|
||||
@@ -2697,6 +2730,7 @@ Operation::SpecialMoveZup( DBLVECTOR& vAx, Vector3d& vtTool, int& nFlag, bool& b
|
||||
// imposto valori parametri
|
||||
bOk = bOk && pMch->LuaCreateGlobTable( EMC_VAR) ;
|
||||
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + GVAR_FLAG, nFlag) ;
|
||||
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + GVAR_FLAG2, nFlag2) ;
|
||||
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()) ;
|
||||
@@ -2713,6 +2747,7 @@ Operation::SpecialMoveZup( DBLVECTOR& vAx, Vector3d& vtTool, int& nFlag, bool& b
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_ERROR, nErr) ;
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_MODIF, bModif) ;
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + GVAR_FLAG, nFlag) ;
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + GVAR_FLAG2, nFlag2) ;
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + GVAR_TDIR, vtTool) ;
|
||||
for ( int i = 1 ; i <= nNumAxes ; ++ i)
|
||||
bOk = bOk && pMch->LuaGetGlobVar( GetGlobVarAxisValue( i, EMC_VAR), vAx[i-1]) ;
|
||||
|
||||
Reference in New Issue
Block a user