EgtMachKernel :
- aggiunto posizionamento in home alla fine delle lavorazioni.
This commit is contained in:
+81
-2
@@ -686,7 +686,7 @@ Machining::CalculateClPathAxesValues( int nClPathId, int nLinAxes, int nRotAxes,
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machining::AdjustStartMovements(void)
|
||||
Machining::AdjustStartEndMovements(void)
|
||||
{
|
||||
if ( m_pMchMgr == nullptr || m_pGeomDB == nullptr)
|
||||
return false ;
|
||||
@@ -761,7 +761,8 @@ Machining::AdjustStartMovements(void)
|
||||
}
|
||||
|
||||
// aggiungo risalita finale
|
||||
AddRise( vAxVal) ;
|
||||
bOk = bOk && AddRise( vAxVal) ;
|
||||
bOk = bOk && AddHome() ;
|
||||
|
||||
return bOk ;
|
||||
}
|
||||
@@ -918,6 +919,84 @@ Machining::RemoveRise( void)
|
||||
m_pGeomDB->Erase( nId) ;
|
||||
nId = m_pGeomDB->GetFirstNameInGroup( nClPathId, MCH_RISE) ;
|
||||
}
|
||||
// elimino a maggior ragione le entità HOME
|
||||
nId = m_pGeomDB->GetFirstNameInGroup( nClPathId, MCH_HOME) ;
|
||||
while ( nId != GDB_ID_NULL) {
|
||||
m_pGeomDB->Erase( nId) ;
|
||||
nId = m_pGeomDB->GetFirstNameInGroup( nClPathId, MCH_HOME) ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machining::AddHome( void)
|
||||
{
|
||||
if ( m_pMchMgr == nullptr || m_pGeomDB == nullptr)
|
||||
return false ;
|
||||
// recupero gruppo per geometria di lavorazione (Cutter Location)
|
||||
int nClId = m_pGeomDB->GetFirstNameInGroup( GetOwner(), MCH_CL) ;
|
||||
if ( nClId == GDB_ID_NULL)
|
||||
return false ;
|
||||
// recupero l'ultimo percorso
|
||||
int nLastPxClId = m_pGeomDB->GetLastGroupInGroup( nClId) ;
|
||||
// recupero l'ultima entità del percorso di nome RISE
|
||||
int nEntId = m_pGeomDB->GetLastNameInGroup( nLastPxClId, MCH_RISE) ;
|
||||
if ( nEntId == GDB_ID_NULL)
|
||||
return false ;
|
||||
// ne recupero i dati Cam
|
||||
CamData* pCamData = dynamic_cast<CamData*>( m_pGeomDB->GetUserObj( nEntId)) ;
|
||||
if ( pCamData == nullptr)
|
||||
return false ;
|
||||
// creo oggetto punto per DB geometrico
|
||||
PtrOwner<IGeoPoint3d> pGP( CreateGeoPoint3d()) ;
|
||||
if ( IsNull( pGP))
|
||||
return false ;
|
||||
// assegno le coordinate del punto
|
||||
pGP->Set( pCamData->GetBasePoint()) ;
|
||||
// inserisco l'oggetto nel DB geometrico
|
||||
int nId = m_pGeomDB->AddGeoObj( GDB_ID_NULL, nLastPxClId, Release( pGP)) ;
|
||||
if ( nId == GDB_ID_NULL)
|
||||
return false ;
|
||||
m_pGeomDB->SetName( nId, MCH_HOME) ;
|
||||
// creo oggetto dati Cam
|
||||
PtrOwner<CamData> pCam( pCamData->Clone()) ;
|
||||
if ( IsNull( pCam))
|
||||
return false ;
|
||||
// flag di movimento in rapido (rapido a Home)
|
||||
int nFlag = 4 ;
|
||||
// recupero coordinate home
|
||||
DBLVECTOR vAxHome ;
|
||||
m_pMchMgr->GetAllCalcAxesHomePos( vAxHome) ;
|
||||
// assegno i dati
|
||||
pCam->SetAxes( CamData::AS_OK, vAxHome) ;
|
||||
pCam->SetFeed( 0) ;
|
||||
pCam->SetFlag( nFlag) ;
|
||||
// associo questo oggetto a quello geometrico
|
||||
m_pGeomDB->SetUserObj( nId, Release( pCam)) ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machining::RemoveHome( void)
|
||||
{
|
||||
if ( m_pMchMgr == nullptr || m_pGeomDB == nullptr)
|
||||
return false ;
|
||||
// recupero gruppo per geometria di lavorazione (Cutter Location)
|
||||
int nClId = m_pGeomDB->GetFirstNameInGroup( GetOwner(), MCH_CL) ;
|
||||
if ( nClId == GDB_ID_NULL)
|
||||
return false ;
|
||||
// recupero l'ultimo percorso CL
|
||||
int nClPathId = m_pGeomDB->GetLastGroupInGroup( nClId) ;
|
||||
// elimino tutte le entità HOME alla fine del percorso
|
||||
int nId = m_pGeomDB->GetFirstNameInGroup( nClPathId, MCH_HOME) ;
|
||||
while ( nId != GDB_ID_NULL) {
|
||||
m_pGeomDB->Erase( nId) ;
|
||||
nId = m_pGeomDB->GetFirstNameInGroup( nClPathId, MCH_HOME) ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user