EgtMachKernel :

- a CamData aggiunto parametro m_dOrigFeed per gestire trasformazioni di feed da tip utensile a assi macchina
- modifiche a Sawing per utilizzare questa modifica quando si opera su archi.
This commit is contained in:
Dario Sassi
2020-01-14 14:36:30 +00:00
parent 6a31d143df
commit 20d04076b6
3 changed files with 39 additions and 7 deletions
+27 -2
View File
@@ -49,7 +49,10 @@ static int CAM_PARAM_V5 = 20 ;
static std::string CAM_BDIR = "BDir" ;
static int CAM_PARAM_V6 = 21 ;
static std::string CAM_INDEX = "Idx" ;
static int CAM_TOTPARAM =CAM_PARAM_V6 ;
static int CAM_PARAM_V7 = 22 ;
static std::string CAM_ORIGFEED = "OrFeed" ;
static int CAM_TOTPARAM =CAM_PARAM_V7 ;
//----------------------------------------------------------------------------
USEROBJ_REGISTER( "EMkCamData", CamData) ;
@@ -83,6 +86,7 @@ CamData::Clone( void) const
pCam->m_vtN = m_vtN ;
pCam->m_dDeltaN = m_dDeltaN ;
pCam->m_dFeed = m_dFeed ;
pCam->m_dOrigFeed = m_dOrigFeed ;
pCam->m_nFlag = m_nFlag ;
pCam->m_nIndex = m_nIndex ;
pCam->m_nAxesStatus = m_nAxesStatus ;
@@ -118,6 +122,8 @@ CamData::Dump( string& sOut, bool bMM, const char* szNewLine) const
sOut += CAM_ACEN + "=" + ToString( m_dAngCen) + szNewLine ;
sOut += CAM_NDIR + "=" + ToString( m_vtN) + szNewLine ;
sOut += CAM_FEED + "=" + ToString( m_dFeed) + szNewLine ;
if ( m_dOrigFeed >= 0)
sOut += CAM_ORIGFEED + "=" + ToString( m_dOrigFeed) + szNewLine ;
sOut += CAM_FLAG + "=" + ToString( m_nFlag) + szNewLine ;
sOut += CAM_INDEX + "=" + ToString( m_nIndex) + szNewLine ;
sOut += CAM_AXSTS + "=" + ToString( m_nAxesStatus) + szNewLine ;
@@ -189,6 +195,8 @@ CamData::Save( int nBaseId, STRVECTOR& vString) const
vString[++k] = CAM_BDIR + "=" + ToString( m_vtBackAux) ;
// parametri aggiunti V6
vString[++k] = CAM_INDEX + "=" + ToString( m_nIndex) ;
// parametri aggiunti V7
vString[++k] = CAM_ORIGFEED + "=" + ToString( m_dOrigFeed) ;
}
catch( ...) {
return false ;
@@ -263,7 +271,15 @@ CamData::Load( const STRVECTOR& vString, int nBaseGdbId)
return false ;
}
else {
m_vtBackAux = V_NULL ;
m_nIndex = 0 ;
}
// parametri aggiunti V7
if ( int( vString.size()) >= CAM_PARAM_V7) {
if ( ! GetVal( vString[++k], CAM_ORIGFEED, m_dOrigFeed))
return false ;
}
else {
m_dOrigFeed = -1 ;
}
return true ;
}
@@ -519,6 +535,7 @@ CamData::CamData( void)
m_dAngCen = 0 ;
m_dDeltaN = 0 ;
m_dFeed = 0 ;
m_dOrigFeed = -1 ;
m_nFlag = 0 ;
m_nIndex = 0 ;
m_nAxesStatus = AS_NONE ;
@@ -617,6 +634,14 @@ CamData::SetFeed( double dFeed)
return true ;
}
//----------------------------------------------------------------------------
bool
CamData::SetOrigFeed( double dOrigFeed)
{
m_dOrigFeed = dOrigFeed ;
return true ;
}
//----------------------------------------------------------------------------
bool
CamData::SetFlag( int nFlag)
+4
View File
@@ -55,6 +55,7 @@ class CamData : public IUserObj
bool SetNormDir( const Vector3d& vtDir) ;
bool SetDeltaN( double dDeltaN) ;
bool SetFeed( double dFeed) ;
bool SetOrigFeed( double dOrigFeed) ;
bool SetFlag( int nFlag) ;
bool SetIndex( int nIndex) ;
bool SetAxes( int nStatus, const DBLVECTOR& vAxVal) ;
@@ -90,6 +91,8 @@ class CamData : public IUserObj
{ return m_dDeltaN ; }
double GetFeed( void) const
{ return m_dFeed ; }
double GetOrigFeed( void) const
{ return m_dOrigFeed ; }
int GetFlag( void) const
{ return m_nFlag ; }
int GetIndex( void) const
@@ -142,6 +145,7 @@ class CamData : public IUserObj
Vector3d m_vtN ; // vettore normale al piano di giacitura per archi
double m_dDeltaN ; // delta fine rispetto a inizio su normale
double m_dFeed ; // velocità di avanzamento in lavorazione
double m_dOrigFeed ; // velocità originale di avanzamento (sul tip utensile)
int m_nFlag ; // flag per usi vari
int m_nIndex ; // indice per usi vari
int m_nAxesStatus ; // stato dei valori degli assi
+8 -5
View File
@@ -733,9 +733,8 @@ Sawing::Update( bool bPostApply)
return false ;
}
// aggiustamento feed per movimenti 4 assi (se lavorazione ricalcolata)
if ( m_nStatus == MCH_ST_TO_VERIFY)
AdjustFeeds() ;
// aggiustamento feed per movimenti 4 assi
AdjustFeeds() ;
// gestione movimenti all'inizio di ogni singolo percorso di lavorazione e alla fine della lavorazione
if ( ! AdjustStartEndMovements()) {
@@ -794,8 +793,12 @@ Sawing::AdjustFeeds( void)
// correggo la feed di movimento
if ( dTipLen > EPS_SMALL && dAxLen > EPS_SMALL) {
double dCoeff = dAxLen / dTipLen ;
double dFeed = pCamData->GetFeed() ;
pCamData->SetFeed( dFeed * dCoeff) ;
double dOrigFeed = pCamData->GetOrigFeed() ;
if ( dOrigFeed < 0) {
dOrigFeed = pCamData->GetFeed() ;
pCamData->SetOrigFeed( dOrigFeed) ;
}
pCamData->SetFeed( dOrigFeed * dCoeff) ;
}
}
}