EgtMachKernel 2.3a6 :
- corretta lavorazione mortasature inclinate.
This commit is contained in:
Binary file not shown.
+1
-1
@@ -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
@@ -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 ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user