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:
+28
-7
@@ -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 ;
|
||||
|
||||
Reference in New Issue
Block a user