EgtMachKernel :

- prime modifiche per gestione TipTrace in simulazione.
This commit is contained in:
Dario Sassi
2025-05-31 12:32:20 +02:00
parent 29214d1d1a
commit b8fb4336cb
2 changed files with 32 additions and 0 deletions
+30
View File
@@ -88,7 +88,9 @@ SimulatorSP::SimulatorSP( void)
m_nAuxEInd = 0 ;
m_nExit = 0 ;
m_dTDiam = 0 ;
m_dTLen = 0 ;
m_bCutOnTip = false ;
m_nCurrTrace = GDB_ID_NULL ;
m_bEnableVm = false ;
m_dSafeDist = SAFEDIST_STD ;
m_nAxesMask = 0 ;
@@ -207,7 +209,9 @@ SimulatorSP::Start( bool bFirst)
m_sHead.clear() ;
m_nExit = 0 ;
m_dTDiam = 0 ;
m_dTLen = 0 ;
m_bCutOnTip = false ;
m_nCurrTrace = GDB_ID_NULL ;
ResetInterpolation() ;
ResetAxes() ;
ResetAuxAxes() ;
@@ -573,6 +577,7 @@ SimulatorSP::UpdateTool( bool bFirst, int& nErr)
m_sHead = sHead ;
m_nExit = nExit ;
m_pMchMgr->TdbGetCurrToolParam( TPA_DIAM, m_dTDiam) ;
m_pMchMgr->TdbGetCurrToolParam( TPA_LEN, m_dTLen) ;
double dTipFeed = 0 ;
m_pMchMgr->TdbGetCurrToolParam( TPA_TIPFEED, dTipFeed) ;
m_bCutOnTip = ( dTipFeed > EPS_MACH_LEN_PAR) ;
@@ -616,6 +621,7 @@ SimulatorSP::UpdateTool( bool bFirst, int& nErr)
m_sHead = sHead ;
m_nExit = nExit ;
m_pMchMgr->TdbGetCurrToolParam( TPA_DIAM, m_dTDiam) ;
m_pMchMgr->TdbGetCurrToolParam( TPA_LEN, m_dTLen) ;
double dTipFeed = 0 ;
m_pMchMgr->TdbGetCurrToolParam( TPA_TIPFEED, dTipFeed) ;
m_bCutOnTip = ( dTipFeed > EPS_MACH_LEN_PAR) ;
@@ -888,6 +894,8 @@ SimulatorSP::FindAndManagePathStart( int& nStatus)
m_dCoeff = 0 ;
}
}
// reset eventuale curva di TipTrace
m_nCurrTrace = GDB_ID_NULL ;
// se trovato nuovo CLpath con entità, gestisco inizio percorso di lavoro
if ( m_nEntId != GDB_ID_NULL) {
++ m_nCLPathInd ;
@@ -955,6 +963,8 @@ SimulatorSP::ManagePathEnd( int& nStatus)
// gestione stato
if ( ! bOk)
nStatus = CalcStatusOnError( 0) ;
// reset eventuale curva di TipTrace
m_nCurrTrace = GDB_ID_NULL ;
return bOk ;
}
@@ -1195,6 +1205,26 @@ SimulatorSP::ManageSingleMove( int& nStatus, double& dMove)
// eseguo eventuale collision check
bCollCheck = bCollCheck && ExecCollisionCheck( nCdInd, nObjInd, nMoveType) ;
}
// eventuale salvataggio punto tip utensile
if ( nMoveType == 1) {
int nTipTraceId ;
if ( m_pMachine->LuaGetGlobVar( GLOB_VAR + ".TIPTRACE", nTipTraceId)) {
int nHeadId = m_pMachine->GetHeadId( m_sHead) ;
int nExitId = m_pMachine->GetExitId( m_sHead, m_nExit) ;
Frame3d frExit ;
if ( m_pGeomDB->GetGroupGlobFrame( nExitId, frExit)) {
Point3d ptTip = frExit.Orig() - m_dTLen * frExit.VersZ() ;
if ( m_nCurrTrace == GDB_ID_NULL) {
PolyLine PL ;
PL.AddUPoint( -1, ptTip + 10 * EPS_SMALL * frExit.VersZ()) ;
PL.AddUPoint( 0, ptTip) ;
m_nCurrTrace = ExeCreateCurveCompoFromPoints( nTipTraceId, PL, GDB_ID_ROOT) ;
}
else
ExeAddCurveCompoLine( m_nCurrTrace, ptTip, true, GDB_ID_ROOT) ;
}
}
}
}
// Eseguo movimento su arco
else {