EgtMachKernel 2.3a6 :

- corretta lavorazione mortasature inclinate.
This commit is contained in:
Dario Sassi
2021-02-01 08:08:24 +00:00
parent 769a780273
commit 100f5aacdb
4 changed files with 21 additions and 14 deletions
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -1344,7 +1344,7 @@ Machine::GetNearestAngleInStroke( int nInd, double dAngRef, double& dAng) const
// cerco l'angolo più vicino stando nella corsa
while ( dAng - dAngRef > ANG_STRAIGHT && dAng - ANG_FULL >= m_vCalcRotAx[nInd].stroke.Min)
dAng -= ANG_FULL ;
while ( dAng - dAngRef < - ANG_STRAIGHT && dAng + ANG_FULL <= m_vCalcRotAx[nInd].stroke.Max)
while ( dAng - dAngRef < -ANG_STRAIGHT && dAng + ANG_FULL <= m_vCalcRotAx[nInd].stroke.Max)
dAng += ANG_FULL ;
return ( dAng >= m_vCalcRotAx[nInd].stroke.Min &&
dAng <= m_vCalcRotAx[nInd].stroke.Max) ;
+18 -13
View File
@@ -1184,9 +1184,14 @@ Mortising::ProcessPath( int nPathId, int nPvId, int nClId)
// eventuali allungamenti/accorciamenti
{
// inclinazione della direzione utensile rispetto al movimento
Vector3d vtTg ; pCompo->GetMidDir( vtTg) ;
double dSinAng = max( ( vtTg ^ vtExtr).Len(), sin( 45 * DEGTORAD)) ;
double dStartAddLen = m_Params.m_dStartAddLen / dSinAng ;
double dEndAddLen = m_Params.m_dEndAddLen / dSinAng ;
// verifico che il percorso sia abbastanza lungo
double dLen ; pCompo->GetLength( dLen) ;
if ( dLen + m_Params.m_dStartAddLen + m_Params.m_dEndAddLen < 10 * EPS_SMALL) {
if ( dLen + dStartAddLen + dEndAddLen < 10 * EPS_SMALL) {
m_pMchMgr->SetWarning( 2555, "Warning in Mortising : skipped Path too short") ;
return true ;
}
@@ -1194,26 +1199,26 @@ Mortising::ProcessPath( int nPathId, int nPvId, int nClId)
if ( pCompo->GetCurveCount() == 1 && pCompo->IsClosed())
pCompo->AddJoint( 0.5) ;
// eventuali allungamenti
if ( m_Params.m_dStartAddLen > EPS_SMALL) {
if ( ! pCompo->ExtendStartByLen( m_Params.m_dStartAddLen))
if ( dStartAddLen > EPS_SMALL) {
if ( ! pCompo->ExtendStartByLen( dStartAddLen))
return false ;
dLen += m_Params.m_dStartAddLen ;
dLen += dStartAddLen ;
}
if ( m_Params.m_dEndAddLen > EPS_SMALL) {
if ( ! pCompo->ExtendEndByLen( m_Params.m_dEndAddLen))
if (dEndAddLen > EPS_SMALL) {
if ( ! pCompo->ExtendEndByLen( dEndAddLen))
return false ;
dLen += m_Params.m_dEndAddLen ;
dLen += dEndAddLen ;
}
// eventuale accorciamenti (da fare dopo tutti gli allungamenti)
if ( m_Params.m_dStartAddLen < - EPS_SMALL) {
if ( ! pCompo->TrimStartAtLen( - m_Params.m_dStartAddLen))
if ( dStartAddLen < - EPS_SMALL) {
if ( ! pCompo->TrimStartAtLen( -dStartAddLen))
return false ;
dLen += m_Params.m_dStartAddLen ;
dLen += dStartAddLen ;
}
if ( m_Params.m_dEndAddLen < - EPS_SMALL) {
if ( ! pCompo->TrimEndAtLen( dLen + m_Params.m_dEndAddLen))
if ( dEndAddLen < - EPS_SMALL) {
if ( ! pCompo->TrimEndAtLen( dLen + dEndAddLen))
return false ;
dLen += m_Params.m_dEndAddLen ;
dLen += dEndAddLen ;
}
}
+2
View File
@@ -689,6 +689,8 @@ Operation::AdjustCurveFromSurf( ICurveComposite* pCrvCompo, int nToolDir, int nF
while ( pCrv != nullptr) {
Vector3d vtDir ; pCrv->GetMidDir( vtDir) ;
if ( ( vtN ^ vtDir) * vtRef < COS_ANG_MAX) {
vtDirPrev = vtDir ;
vtDirNext = vtDir ;
pCrvCompo->ChangeStartPoint( i) ;
break ;
}