EgtMachKernel 1.8e5 :
- gestione da parametri lavorazione di angoli iniziali suggeriti e asse rotante bloccato - in fresatura, svuotatura, incisione e lav. generica aggiunta possibilità di invertire direzione utensile - in fresatura aggiunto parametro per tipo lavorazione faccia (perpendicolare, parallela, ...) - differenziata distanza sicurezza standard da distanza sicurezza per rinvio da sotto - migliorati approcci e retrazioni con rinvio da sotto - migliorata segnalazione errori.
This commit is contained in:
+50
-5
@@ -39,6 +39,9 @@ using namespace std ;
|
||||
// 2905 = "Error in Chiseling : machining depth (xxx) bigger than MaxMaterial (yyy)"
|
||||
// 2906 = "Error in Chiseling : Entity GetElevation"
|
||||
// 2907 = "Error in Chiseling : Chaining failed"
|
||||
// 2908 = "Error in Chiseling : axes values not calculable"
|
||||
// 2909 = "Error in Chiseling : link movements not calculable"
|
||||
// 2910 = "Error in Chiseling : post apply not calculable"
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
struct SqHole
|
||||
@@ -219,6 +222,9 @@ Chiseling::SetParam( int nType, bool bVal)
|
||||
case MPA_INVERT :
|
||||
m_Params.m_bInvert = bVal ;
|
||||
return true ;
|
||||
case MPA_TOOLINVERT :
|
||||
m_Params.m_bToolInvert = bVal ;
|
||||
return true ;
|
||||
}
|
||||
return false ;
|
||||
}
|
||||
@@ -318,6 +324,12 @@ Chiseling::SetParam( int nType, const string& sVal)
|
||||
case MPA_USERNOTES :
|
||||
m_Params.m_sUserNotes = sVal ;
|
||||
break ;
|
||||
case MPA_INITANGS :
|
||||
m_Params.m_sInitAngs = sVal ;
|
||||
break ;
|
||||
case MPA_BLOCKEDAXIS :
|
||||
m_Params.m_sBlockedAxis = sVal ;
|
||||
break ;
|
||||
default :
|
||||
return false ;
|
||||
}
|
||||
@@ -481,18 +493,36 @@ Chiseling::Apply( bool bRecalc)
|
||||
return true ;
|
||||
}
|
||||
|
||||
// imposto eventuale asse bloccato da lavorazione
|
||||
if ( ! m_Params.m_sBlockedAxis.empty()) {
|
||||
string sAxis, sVal ;
|
||||
Split( m_Params.m_sBlockedAxis, "=", true, sAxis, sVal) ;
|
||||
double dVal = 0 ;
|
||||
FromString( sVal, dVal) ;
|
||||
m_pMchMgr->ClearRotAxisBlock() ;
|
||||
m_pMchMgr->SetRotAxisBlock( sAxis, dVal) ;
|
||||
}
|
||||
|
||||
// calcolo gli assi macchina
|
||||
string sHint = ExtractHint( m_Params.m_sUserNotes) ;
|
||||
if ( ! CalculateAxesValues( sHint))
|
||||
if ( ! m_Params.m_sInitAngs.empty())
|
||||
sHint = m_Params.m_sInitAngs ;
|
||||
if ( ! CalculateAxesValues( sHint)) {
|
||||
m_pMchMgr->SetLastError( 2908, "Error in Chiseling : axes values not calculable") ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
// gestione movimenti all'inizio di ogni singolo percorso di lavorazione e alla fine della lavorazione
|
||||
if ( ! AdjustStartEndMovements())
|
||||
if ( ! AdjustStartEndMovements()) {
|
||||
m_pMchMgr->SetLastError( 2909, "Error in Chiseling : link movements not calculable") ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
// esecuzione eventuali personalizzazioni
|
||||
if ( ! PostApply())
|
||||
if ( ! PostApply()) {
|
||||
m_pMchMgr->SetLastError( 2910, "Error in Chiseling : post apply not calculable") ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
@@ -505,6 +535,9 @@ Chiseling::GetParam( int nType, bool& bVal) const
|
||||
case MPA_INVERT :
|
||||
bVal = m_Params.m_bInvert ;
|
||||
return true ;
|
||||
case MPA_TOOLINVERT :
|
||||
bVal = m_Params.m_bToolInvert ;
|
||||
return true ;
|
||||
}
|
||||
bVal = false ;
|
||||
return false ;
|
||||
@@ -595,6 +628,12 @@ Chiseling::GetParam( int nType, string& sVal) const
|
||||
case MPA_USERNOTES :
|
||||
sVal = m_Params.m_sUserNotes ;
|
||||
return true ;
|
||||
case MPA_INITANGS :
|
||||
sVal = m_Params.m_sInitAngs ;
|
||||
return true ;
|
||||
case MPA_BLOCKEDAXIS :
|
||||
sVal = m_Params.m_sBlockedAxis ;
|
||||
return true ;
|
||||
}
|
||||
sVal = "" ;
|
||||
return false ;
|
||||
@@ -811,8 +850,6 @@ bool
|
||||
Chiseling::Chain( int nGrpDestId)
|
||||
{
|
||||
// vettore puntatori alle curve
|
||||
typedef PtrOwner<ICurve> POWNCURVE ;
|
||||
typedef std::vector<POWNCURVE> POCRVVECTOR ;
|
||||
POCRVVECTOR vpCrvs ;
|
||||
vpCrvs.reserve( m_vId.size()) ;
|
||||
// recupero tutte le curve e le porto in globale
|
||||
@@ -957,6 +994,14 @@ Chiseling::ProcessPath( int nPathId, int nPvId, int nClId)
|
||||
double dThick ;
|
||||
pCompo->GetThickness( dThick) ;
|
||||
|
||||
// eventuale inversione direzione utensile
|
||||
if ( m_Params.m_bToolInvert) {
|
||||
vtExtr.Invert() ;
|
||||
pCompo->SetExtrusion( vtExtr) ;
|
||||
dThick = - dThick ;
|
||||
pCompo->SetThickness( dThick) ;
|
||||
}
|
||||
|
||||
// se richiesto offset
|
||||
double dOffs = GetOffsR() ;
|
||||
if ( abs( dOffs) > EPS_SMALL) {
|
||||
|
||||
Reference in New Issue
Block a user