EgtMachKernel :

- in Milling modificata GetPointOutOfRaw per teste da sotto
- in TestCollisionAvoid di Operation adattato richiamo di CDeCylClosedSurfTm per nuovo ordine parametri
- in Simulator corretta gestione lame con gambo per Virtual Milling
- in Simulator dopo OnSimulMoveStart con movimento in rapido aggiorno quote degli assi disabilitati dal mask.
This commit is contained in:
Dario Sassi
2021-01-07 07:54:05 +00:00
parent 6bcfdbf673
commit ac570fe364
3 changed files with 13 additions and 5 deletions
+4 -3
View File
@@ -4909,11 +4909,12 @@ Milling::GetPointOutOfRaw( const Point3d& ptP, const Vector3d& vtTool, double dE
}
// per lame
else {
// determino se l'inizio dell'attacco è fuori dal grezzo (considero movimento lama in Z)
// determino se l'inizio dell'attacco è fuori dal grezzo (considero movimento lama in +/- Z)
double dTemp ;
if ( ! GetElevation( m_nPhase, ptP, vtTool, 0.5 * m_TParams.m_dDiam, Z_AX, dTemp) || dTemp > 10 * EPS_SMALL)
Vector3d vtMove = ( m_bAboveHead ? Z_AX : -Z_AX) ;
if ( ! GetElevation( m_nPhase, ptP, vtTool, 0.5 * m_TParams.m_dDiam, vtMove, dTemp) || dTemp > 10 * EPS_SMALL)
return false ;
if ( ! GetElevation( m_nPhase, ptP + vtTool * m_TParams.m_dThick, vtTool, 0.5 * m_TParams.m_dDiam, Z_AX, dTemp) || dTemp > 10 * EPS_SMALL)
if ( ! GetElevation( m_nPhase, ptP + vtTool * m_TParams.m_dThick, vtTool, 0.5 * m_TParams.m_dDiam, vtMove, dTemp) || dTemp > 10 * EPS_SMALL)
return false ;
return true ;
}
+1 -1
View File
@@ -2570,7 +2570,7 @@ Operation::TestCollisionAvoid( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEn
// traslo il riferimento per avere il cilindro centrato sull'asse Y in positivo
frHsol.Translate( frHsol.VersZ() * ptMin.z) ;
// verifica di collisione tra cilindro e solido
if ( pStm == nullptr || CDeCylClosedSurfTm( frHsol, vtDiag.z, max( vtDiag.x, vtDiag.y) / 2, dSafeDist, *pStm)) {
if ( pStm == nullptr || CDeCylClosedSurfTm( frHsol, max( vtDiag.x, vtDiag.y) / 2, vtDiag.z, dSafeDist, *pStm)) {
bCollide = true ;
break ;
}
+8 -1
View File
@@ -462,7 +462,7 @@ Simulator::UpdateTool( bool bFirst)
else if ( nToolType == TT_SAW_STD || nToolType == TT_SAW_FLAT) {
double dLen ; m_pMchMgr->TdbGetCurrToolParam( TPA_LEN, dLen) ;
double dThick ; m_pMchMgr->TdbGetCurrToolParam( TPA_THICK, dThick) ;
m_dVmTdOffs = - dLen + dThick ;
m_dVmTdOffs = ( ( dLen <= dThick) ? -dLen + dThick : 0) ;
m_dVmAdOffs = 0 ;
}
else {
@@ -924,6 +924,13 @@ Simulator::ManageSingleMove( int& nStatus, double& dMove)
nStatus = ( Stopped() ? MCH_SIM_STOP : ( nErr == 1 ? MCH_SIM_OUTSTROKE : MCH_SIM_ERR)) ;
return false ;
}
// Se movimento in rapido aggiorno quote degli assi disabilitati dal mask
if ( nMoveType == 0) {
for ( size_t i = 0 ; i < m_AxesName.size() ; ++ i) {
if ( ( pCamData->GetAxesMask() & 1 << i) == 0)
AxesEnd[i] = m_AxesVal[i] ;
}
}
}
// Dati per eventuale verifica di collisione