EgtMachKernel :

- piccole modifiche e correzioni a fresature.
This commit is contained in:
Dario Sassi
2018-03-03 18:20:34 +00:00
parent 19d3915bbb
commit b2df4c8407
2 changed files with 21 additions and 4 deletions
+20 -4
View File
@@ -181,6 +181,7 @@ Milling::Milling( void)
m_TParams.m_sName = "*" ;
m_TParams.m_sHead = "*" ;
m_nMills = 0 ;
m_bStepOn = false ;
}
//----------------------------------------------------------------------------
@@ -1360,6 +1361,7 @@ Milling::ProcessPath( int nPathId, int nPvId, int nClId)
}
// eventuale sovrapposizione per percorso chiuso
double dAddedOverlap = 0 ;
if ( pCompo->IsClosed()) {
if ( m_Params.m_dOverlap > EPS_SMALL) {
double dParS, dParE ;
@@ -1368,6 +1370,7 @@ Milling::ProcessPath( int nPathId, int nPvId, int nClId)
PtrOwner<ICurve> pCrv( pCompo->CopyParamRange( dParS, dParE)) ;
if ( ! IsNull( pCrv)) {
pCompo->AddCurve( Release( pCrv)) ;
dAddedOverlap = m_Params.m_dOverlap ;
}
}
}
@@ -1531,22 +1534,30 @@ Milling::ProcessPath( int nPathId, int nPvId, int nClId)
// Se una sola passata
if ( dOkStep < EPS_SMALL || dElev <= dOkStep) {
// eseguo lavorazione
m_bStepOn = false ;
if ( ! AddStandardMilling( pCompo, vtTool, vtExtr, dDepth, dElev, bSplitArcs))
return false ;
}
// se altrimenti passate a zig-zag
else if ( m_Params.m_nStepType == MILL_ST_ZIGZAG) {
m_bStepOn = true ;
if ( ! AddZigZagMilling( pCompo, vtTool, vtExtr, dDepth, dElev, dOkStep, bSplitArcs))
return false ;
}
// se altrimenti passate a one-way
else if ( m_Params.m_nStepType == MILL_ST_ONEWAY) {
m_bStepOn = true ;
if ( ! AddOneWayMilling( pCompo, vtTool, vtExtr, dDepth, dElev, dOkStep, bSplitArcs))
return false ;
}
// se altrimenti passate a spirale
else if ( m_Params.m_nStepType == MILL_ST_SPIRAL) {
m_bStepOn = true ;
if ( dAddedOverlap > EPS_SMALL) {
pCompo->Invert() ;
pCompo->TrimStartAtLen( dAddedOverlap) ;
pCompo->Invert() ;
}
if ( ! AddSpiralMilling( pCompo, vtTool, vtExtr, dDepth, dElev, dOkStep, bSplitArcs))
return false ;
}
@@ -2641,10 +2652,10 @@ Milling::GetLeadInType( void) const
( m_Params.m_dLiTang < min( 0.1 * m_TParams.m_dDiam, 1.0) || m_Params.m_dLiElev < 10 * EPS_SMALL))
return MILL_LI_NONE ;
if ( ( m_Params.m_nLeadInType == MILL_LI_HELIX || m_Params.m_nLeadInType == MILL_LI_ZIGZAG) &&
m_Params.m_nStepType == MILL_ST_ZIGZAG)
m_bStepOn && m_Params.m_nStepType == MILL_ST_ZIGZAG)
return MILL_LI_NONE ;
if ( ( m_Params.m_nLeadInType == MILL_LI_HELIX || m_Params.m_nLeadInType == MILL_LI_ZIGZAG) &&
m_Params.m_nStepType == MILL_ST_SPIRAL)
m_bStepOn && m_Params.m_nStepType == MILL_ST_SPIRAL)
return MILL_LI_NONE ;
if ( ( m_Params.m_nLeadInType == MILL_LI_HELIX || m_Params.m_nLeadInType == MILL_LI_ZIGZAG) &&
( m_TParams.m_nType & TF_SAWBLADE) != 0)
@@ -2887,7 +2898,8 @@ Milling::AddLeadOut( const Point3d& ptEnd, const Vector3d& vtEnd, const Vector3d
double dElev = min( m_Params.m_dLoElev, dEndElev + LIO_ELEV_TOL) ;
// se uscita come ingresso o step invertito
if ( nType == MILL_LO_AS_LI || bInvert) {
switch ( GetLeadInType()) {
int nLiType = GetLeadInType() ;
switch ( nLiType) {
case MILL_LI_LINEAR : nType = MILL_LO_LINEAR ; break ;
case MILL_LI_TANGENT : nType = MILL_LO_TANGENT ; break ;
case MILL_LI_GLIDE : nType = MILL_LO_GLIDE ; break ;
@@ -2897,6 +2909,10 @@ Milling::AddLeadOut( const Point3d& ptEnd, const Vector3d& vtEnd, const Vector3d
}
dTang = m_Params.m_dLiTang ;
dPerp = m_Params.m_dLiPerp ;
if ( nLiType == MILL_LI_HELIX) {
dTang = 0.5 * min( m_Params.m_dLiTang, m_TParams.m_dDiam) ;
dPerp = dTang ;
}
dElev = min( m_Params.m_dLiElev, dEndElev + LIO_ELEV_TOL) ;
}
// senso di rotazione da dir tg a dir esterna
+1
View File
@@ -121,6 +121,7 @@ class Milling : public Machining
MillingData m_Params ; // parametri lavorazione
ToolData m_TParams ; // parametri utensile
int m_nMills ; // numero di percorsi di lavoro generati
bool m_bStepOn ; // flag per indicare che effettivamente si lavora a step
bool m_bAggrBottom ; // flag utilizzo di aggregato da sotto
Vector3d m_vtAggrBottom ; // vettore direzione ausiliaria aggregato da sotto
AggrBottom m_AggrBottom ; // dati eventuale aggregato da sotto