EgtMachKernel 1.6v8 :

- gestita posizione Tavola Home diversa da posizione 0 Macchina in disposizione
- in generazione si assegna il nome macchina
- nel confronto attrezzaggio utensili si tiene conto della posizione in ToolChanger
- se angoli indeterminati ma si determinano con asse ausiliario, li rendo tali direttamente
- aggiunto comando per ricaricare DB utensili e lavorazioni
- aggiunta funzione GetPhaseLastOperation
- ora inserimento lavorazione avviene alla fine della fase corrente
- migliorato split di grezzo con lavorazioni
- in taglio di lama e fresatura irrobustito allungamenti/accorciamenti percorso.
This commit is contained in:
Dario Sassi
2016-10-24 08:27:58 +00:00
parent 1a862d9758
commit d4e4ea3871
17 changed files with 229 additions and 108 deletions
+28 -7
View File
@@ -461,8 +461,13 @@ Disposition::AddFixture( const string& sName, const Point3d& ptPos, double dAngD
// resetto il riferimento del gruppo
Frame3d* pfrFixt = m_pGeomDB->GetGroupFrame( nFixtId) ;
pfrFixt->Reset() ;
// recupero eventuale spostamento corrente della tavola
Vector3d vtDelta1 ;
Machine* pMch = m_pMchMgr->GetCurrMachine() ;
if ( pMch == nullptr || ! pMch->GetCurrTableDeltaRef1( vtDelta1))
return false ;
// la muovo nella posizione voluta
Vector3d vtMove = ( m_ptRef1 + ptPos) - ORIG ;
Vector3d vtMove = ( m_ptRef1 + vtDelta1 + ptPos) - ORIG ;
m_pGeomDB->TranslateGlob( nFixtId, vtMove) ;
// la ruoto
if ( fabs( dAngDeg) > EPS_ANG_SMALL)
@@ -529,10 +534,15 @@ Disposition::MoveFixture( int nId, const Vector3d& vtMove)
// verifico aggiornamento tavola
if ( ! m_bTabOk && ! SetTable( m_sTabName))
return false ;
// verifico che la posizione finale sia nell'area della tavola
// recupero eventuale spostamento corrente della tavola
Vector3d vtDelta1 ;
Machine* pMch = m_pMchMgr->GetCurrMachine() ;
if ( pMch == nullptr || ! pMch->GetCurrTableDeltaRef1( vtDelta1))
return false ;
// verifico che la posizione finale sia nell'area della tavola (espressa in posizione 0)
Frame3d frFixt ;
if ( ! m_pGeomDB->GetGroupFrame( nId, frFixt) ||
! m_b3Area1.EnclosesXY( frFixt.Orig() + vtMove))
! m_b3Area1.EnclosesXY( frFixt.Orig() - vtDelta1 + vtMove))
return false ;
// muovo l'oggetto
m_pGeomDB->TranslateGlob( nId, vtMove) ;
@@ -616,8 +626,13 @@ Disposition::PlaceFixture( int nId, const Point3d& ptPos, double dAngDeg, double
// resetto il riferimento del gruppo
Frame3d* pfrFixt = m_pGeomDB->GetGroupFrame( nId) ;
pfrFixt->Reset() ;
// recupero eventuale spostamento corrente della tavola
Vector3d vtDelta1 ;
Machine* pMch = m_pMchMgr->GetCurrMachine() ;
if ( pMch == nullptr || ! pMch->GetCurrTableDeltaRef1( vtDelta1))
return false ;
// lo muovo nella posizione voluta
Vector3d vtMove = ( m_ptRef1 + ptPos) - ORIG ;
Vector3d vtMove = ( m_ptRef1 + vtDelta1 + ptPos) - ORIG ;
m_pGeomDB->TranslateGlob( nId, vtMove) ;
// lo ruoto
if ( fabs( dAngDeg) > EPS_ANG_SMALL)
@@ -771,9 +786,15 @@ Disposition::MoveToCenterRawPart( int nRawId, const Point3d& ptP, int nFlag, boo
b3Raw.Translate( vtMove) ;
if ( ! m_b3Area1.EnclosesXY( b3Raw))
return false ;
// recupero eventuale spostamento corrente della tavola
Vector3d vtDelta1 ;
Machine* pMch = m_pMchMgr->GetCurrMachine() ;
if ( pMch == nullptr || ! pMch->GetCurrTableDeltaRef1( vtDelta1))
return false ;
// eseguo traslazione in globale
if ( ! vtMove.IsSmall())
m_pGeomDB->TranslateGlob( nRawId, vtMove) ;
Vector3d vtTotMove = vtMove + vtDelta1 ;
if ( ! vtTotMove.IsSmall())
m_pGeomDB->TranslateGlob( nRawId, vtTotMove) ;
// se da aggiungere alla lista
if ( bAddToList) {
auto iIter = find_if( m_vMvrData.begin(), m_vMvrData.end(),
@@ -816,7 +837,7 @@ Disposition::MoveRawPart( int nRawId, const Vector3d& vtMove)
Machine* pMch = m_pMchMgr->GetCurrMachine() ;
if ( pMch == nullptr || ! pMch->GetCurrTableDeltaRef1( vtDelta1))
return false ;
// verifico se il grezzo nella posizione finale sarà nella tavola
// verifico se il grezzo nella posizione finale sarà nella tavola (espressa in posizione 0)
b3Raw.Translate( vtMove - vtDelta1) ;
if ( ! m_b3Area1.EnclosesXY( b3Raw))
return false ;