EgtMachKernel 1.6j5 :

- aggiunta gestione versione del DB utensili
- aggiunti 3 parametri agli utensili (coolant, maxAbsorption, minfeed).
This commit is contained in:
Dario Sassi
2015-10-31 19:12:17 +00:00
parent 8482af09c6
commit 05b5c993ac
5 changed files with 75 additions and 14 deletions
BIN
View File
Binary file not shown.
+40 -2
View File
@@ -25,7 +25,9 @@ using namespace std ;
//----------------------------------------------------------------------------
enum nToolKey {
TK_COR = 0,
TK_ABSMAX = 0,
TK_COOLANT,
TK_COR,
TK_CRAD,
TK_D,
TK_DRAW,
@@ -33,6 +35,7 @@ enum nToolKey {
TK_EXI,
TK_F,
TK_FE,
TK_FM,
TK_FS,
TK_FT,
TK_HEA,
@@ -54,6 +57,8 @@ enum nToolKey {
TK_ZZZ} ; // rappresenta il numero di elementi
static const std::array<std::string,TK_ZZZ> sToolKey = {
"ABSMAX",
"COOLANT",
"COR",
"CRAD",
"D",
@@ -62,6 +67,7 @@ static const std::array<std::string,TK_ZZZ> sToolKey = {
"EXI",
"F",
"FE",
"FM",
"FS",
"FT",
"HEA",
@@ -83,7 +89,7 @@ static const std::array<std::string,TK_ZZZ> sToolKey = {
//----------------------------------------------------------------------------
int
ToolData::GetSize( void) const
ToolData::GetSize( void)
{
// in debug verifico validità ultimo campo
assert( sToolKey[TK_UUID] == "UUID") ;
@@ -111,6 +117,12 @@ ToolData::FromString( const string& sString, int& nKey)
nKey = FindToolKey( ToUpper( sKey)) ;
bool bOk = ( nKey >= 0) ;
switch ( nKey) {
case TK_ABSMAX :
bOk = ::FromString( sVal, m_dMaxAbsorption) ;
break ;
case TK_COOLANT :
bOk = ::FromString( sVal, m_nCoolant) ;
break ;
case TK_COR :
bOk = ::FromString( sVal, m_nCorr) ;
break ;
@@ -135,6 +147,9 @@ ToolData::FromString( const string& sString, int& nKey)
case TK_FE :
bOk = ::FromString( sVal, m_dEndFeed) ;
break ;
case TK_FM :
bOk = ::FromString( sVal, m_dMinFeed) ;
break ;
case TK_FS :
bOk = ::FromString( sVal, m_dStartFeed) ;
break ;
@@ -202,6 +217,8 @@ string
ToolData::ToString( int nInd) const
{
switch ( nInd) {
case TK_ABSMAX : return ( sToolKey[TK_ABSMAX] + "=" + ::ToString( m_dMaxAbsorption)) ;
case TK_COOLANT : return ( sToolKey[TK_COOLANT] + "=" + ::ToString( m_nCoolant)) ;
case TK_COR : return ( sToolKey[TK_COR] + "=" + ::ToString( m_nCorr)) ;
case TK_CRAD : return ( sToolKey[TK_CRAD] + "=" + ::ToString( m_dCornRad)) ;
case TK_D : return ( sToolKey[TK_D] + "=" + ::ToString( m_dDiam)) ;
@@ -210,6 +227,7 @@ ToolData::ToString( int nInd) const
case TK_EXI : return ( sToolKey[TK_EXI] + "=" + ::ToString( m_nExit)) ;
case TK_F : return ( sToolKey[TK_F] + "=" + ::ToString( m_dFeed)) ;
case TK_FE : return ( sToolKey[TK_FE] + "=" + ::ToString( m_dEndFeed)) ;
case TK_FM : return ( sToolKey[TK_FM] + "=" + ::ToString( m_dMinFeed)) ;
case TK_FS : return ( sToolKey[TK_FS] + "=" + ::ToString( m_dStartFeed)) ;
case TK_FT : return ( sToolKey[TK_FT] + "=" + ::ToString( m_dTipFeed)) ;
case TK_HEA : return ( sToolKey[TK_HEA] + "=" + m_sHead) ;
@@ -255,6 +273,9 @@ ToolData::SetParam( int nType, int nVal)
return false ;
m_nType = nVal ;
return true ;
case TPA_COOLANT :
m_nCoolant = nVal ;
return true ;
}
return false ;
}
@@ -301,6 +322,8 @@ ToolData::SetParam( int nType, double dVal)
m_dOffsR = dVal ;
return true ;
case TPA_SPEED :
if ( ! VerifySpeed( dVal))
return false ;
m_dSpeed = dVal ;
return true ;
case TPA_SIDEANG :
@@ -312,6 +335,12 @@ ToolData::SetParam( int nType, double dVal)
case TPA_THICK :
m_dThick = dVal ;
return true ;
case TPA_MAXABSORPTION :
m_dMaxAbsorption = dVal ;
return true ;
case TPA_MINFEED :
m_dMinFeed = dVal ;
return true ;
}
return false ;
}
@@ -359,6 +388,9 @@ ToolData::GetParam( int nType, int& nVal) const
case TPA_TYPE :
nVal = m_nType ;
return true ;
case TPA_COOLANT :
nVal = m_nCoolant ;
return true ;
}
return false ;
}
@@ -416,6 +448,12 @@ ToolData::GetParam( int nType, double& dVal) const
case TPA_THICK :
dVal = m_dThick ;
return true ;
case TPA_MAXABSORPTION :
dVal = m_dMaxAbsorption ;
return true ;
case TPA_MINFEED :
dVal = m_dMinFeed ;
return true ;
}
return false ;
}
+5 -2
View File
@@ -43,6 +43,9 @@ struct ToolData
double m_dTipFeed ; // velocità di lavorazione di testa
double m_dOffsR ; // offset radiale
double m_dOffsL ; // offset longitudinale
int m_nCoolant ; // liquido di raffreddamento
double m_dMaxAbsorption ;// massimo assorbimento
double m_dMinFeed ; // minima riduzione di feed per contenere l'assorbimento
std::string m_sSysNotes ; // note interne
std::string m_sUserNotes ; // note dell'utente
@@ -50,9 +53,9 @@ struct ToolData
: m_Uuid(), m_nExit( 0), m_nCorr(0), m_nType(0), m_dMaxSpeed(0), m_dMaxMat(0),
m_dDiam( 0), m_dTDiam( 0), m_dLen( 0), m_dTLen( 0), m_dThick( 0), m_dCornRad( 0), m_dSideAng( 0),
m_dSpeed( 0), m_dFeed(0), m_dStartFeed( 0), m_dEndFeed( 0), m_dTipFeed( 0),
m_dOffsR( 0), m_dOffsL( 0) {}
m_dOffsR( 0), m_dOffsL( 0), m_nCoolant( 0), m_dMaxAbsorption( 0), m_dMinFeed( 0) {}
int GetSize( void) const ;
static int GetSize( void) ;
bool FromString( const std::string& sString, int& nKey) ;
std::string ToString( int nInd) const ;
+28 -8
View File
@@ -7,7 +7,8 @@
//
//
// Modifiche : 01.06.15 DS Creazione modulo.
//
// 21.10.15 DS Aggiunti VERSION e TOOLSIZE in HEADER (default VERSION = 1000 e TOOLSIZE = 26).
// Ora VERSION = 1001 e TOOLSIZE = 29.
//
//----------------------------------------------------------------------------
@@ -27,7 +28,10 @@ using namespace std ;
//----------------------------------------------------------------------------
const string TF_HEADER = "[HEADER]" ;
const string TF_VERSION = "VERSION" ;
const string TF_TOOLSIZE = "TOOLSIZE" ;
const string TF_TOTAL = "TOTAL" ;
const int TF_CURR_VER = 1001 ;
//----------------------------------------------------------------------------
ToolsMgr::ToolsMgr( void)
@@ -75,12 +79,18 @@ ToolsMgr::Load( const string& sToolsFile)
bool bEnd = false ;
// leggo l'intestazione
int nVersion = 0 ;
int nToolSize = 0 ;
int nTotal = 0 ;
if ( ! LoadHeader( TheScanner, nTotal, bEnd)) {
if ( ! LoadHeader( TheScanner, nVersion, nToolSize, nTotal, bEnd)) {
bOk = false ;
string sOut = "LoadTools : Error on Header" ;
LOG_ERROR( GetEMkLogger(), sOut.c_str())
}
{
string sOut = "LoadTools : FileVer = " + ToString( nVersion) + " CurrVer = " + ToString( TF_CURR_VER) ;
LOG_INFO( GetEMkLogger(), sOut.c_str())
}
// dimensiono maps
const int MIN_BUCKETS = 53 ;
@@ -88,7 +98,7 @@ ToolsMgr::Load( const string& sToolsFile)
// ciclo di lettura degli utensili
do {
if ( ! LoadOneTool( TheScanner, bEnd)) {
if ( ! LoadOneTool( TheScanner, nToolSize, bEnd)) {
bOk = false ;
string sOut = "LoadTools : Error on line " + ToString( TheScanner.GetCurrLineNbr()) ;
LOG_ERROR( GetEMkLogger(), sOut.c_str())
@@ -109,7 +119,7 @@ ToolsMgr::Load( const string& sToolsFile)
//----------------------------------------------------------------------------
bool
ToolsMgr::LoadHeader( Scanner& TheScanner, int& nTotal, bool& bEnd)
ToolsMgr::LoadHeader( Scanner& TheScanner, int& nVersion, int& nToolSize, int& nTotal, bool& bEnd)
{
// leggo la prossima linea
string sLine ;
@@ -124,6 +134,8 @@ ToolsMgr::LoadHeader( Scanner& TheScanner, int& nTotal, bool& bEnd)
bool bOk = true ;
// leggo le linee successive
bEnd = true ;
nVersion = 1000 ;
nToolSize = 26 ;
nTotal = 0 ;
while ( bOk && TheScanner.GetLine( sLine)) {
// se utensile successivo
@@ -136,7 +148,11 @@ ToolsMgr::LoadHeader( Scanner& TheScanner, int& nTotal, bool& bEnd)
string sKey, sVal ;
SplitFirst( sLine, "=", sKey, sVal) ;
// riconosco la chiave
if ( ToUpper( sKey) == TF_TOTAL)
if ( ToUpper( sKey) == TF_VERSION)
bOk = FromString( sVal, nVersion) ;
else if ( ToUpper( sKey) == TF_TOOLSIZE)
bOk = FromString( sVal, nToolSize) ;
else if ( ToUpper( sKey) == TF_TOTAL)
bOk = FromString( sVal, nTotal) ;
else
bOk = false ;
@@ -146,7 +162,7 @@ ToolsMgr::LoadHeader( Scanner& TheScanner, int& nTotal, bool& bEnd)
//----------------------------------------------------------------------------
bool
ToolsMgr::LoadOneTool( Scanner& TheScanner, bool& bEnd)
ToolsMgr::LoadOneTool( Scanner& TheScanner, int nToolSize, bool& bEnd)
{
ToolData tData ;
// leggo la prossima linea
@@ -166,7 +182,7 @@ ToolsMgr::LoadOneTool( Scanner& TheScanner, bool& bEnd)
bEnd = true ;
const int DIM_BS = 64 ;
bitset<DIM_BS> Flag ;
assert( tData.GetSize() <= DIM_BS) ;
assert( nToolSize <= DIM_BS) ;
while ( bOk && TheScanner.GetLine( sLine)) {
// se utensile successivo
if ( sLine.front() == '[' && sLine.back() == ']') {
@@ -182,7 +198,7 @@ ToolsMgr::LoadOneTool( Scanner& TheScanner, bool& bEnd)
Flag.set( nKey) ;
}
// verifico di aver letto tutti i campi
bOk = bOk && ( Flag.count() == tData.GetSize()) ;
bOk = bOk && ( Flag.count() == nToolSize) ;
// salvo i dati dell'utensile
bOk = bOk && m_utData.emplace( tData.m_Uuid, tData).second ;
bOk = bOk && m_suData.emplace( tData.m_sName, tData.m_Uuid).second ;
@@ -255,6 +271,10 @@ ToolsMgr::SaveHeader( Writer& TheWriter) const
string sOut ;
sOut = TF_HEADER ;
bOk = bOk && TheWriter.OutText( sOut) ;
sOut = TF_VERSION + "=" + ToString( TF_CURR_VER) ;
bOk = bOk && TheWriter.OutText( sOut) ;
sOut = TF_TOOLSIZE + "=" + ToString( ToolData::GetSize()) ;
bOk = bOk && TheWriter.OutText( sOut) ;
sOut = TF_TOTAL + "=" + ToString( int( m_utData.size())) ;
bOk = bOk && TheWriter.OutText( sOut) ;
return bOk ;
+2 -2
View File
@@ -46,8 +46,8 @@ class ToolsMgr
private :
bool Clear( void) ;
bool LoadHeader( Scanner& TheScanner, int& nTotal, bool& bEnd) ;
bool LoadOneTool( Scanner& TheScanner, bool& bEnd) ;
bool LoadHeader( Scanner& TheScanner, int& nVersion, int& nToolSize, int& nTotal, bool& bEnd) ;
bool LoadOneTool( Scanner& TheScanner, int nToolSize, bool& bEnd) ;
bool SaveHeader( Writer& TheWriter) const ;
bool SaveOneTool( const EgtUUID& Uuid, int& nCounter, Writer& TheWriter) const ;
bool VerifyTool( int nFamily, std::string& sName, int& nType) const ;