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
+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 ;
}
}