EgtExchange 2.1j3 :
- correzioni a import CNC con aggiunta tipi di controlli NUM, SIEMENS e TPA.
This commit is contained in:
+52
-5
@@ -119,6 +119,17 @@ ImportCnc::Import( const string& sFile, IGeomDB* pGDB, int nIdGroup, int nFlag)
|
||||
m_sToolName.clear() ;
|
||||
m_nExit = 1 ;
|
||||
|
||||
// se estensione xpi è NUM
|
||||
string sFileTitle, sFileExt ;
|
||||
SplitLast( sFile, ".", sFileTitle, sFileExt) ;
|
||||
ToUpper( sFileExt) ;
|
||||
if ( sFileExt == "XPI")
|
||||
m_nCNC = CNC_NUM ;
|
||||
else if ( sFileExt == "MPF")
|
||||
m_nCNC = CNC_SIEMENS ;
|
||||
else if ( sFileExt == "ISO")
|
||||
m_nCNC = CNC_TPA ;
|
||||
|
||||
// ciclo di lettura delle linee
|
||||
bool bOk = true ;
|
||||
string sLine ;
|
||||
@@ -150,9 +161,29 @@ ImportCnc::ProcessLine( const string& sLine)
|
||||
if ( sLine[0] == '$' || sLine[0] == '!')
|
||||
return true ;
|
||||
|
||||
// eliminazione di commenti intermedi o finali
|
||||
string sMyLine = sLine ;
|
||||
// se controllo OSAI elimino le parti dopo ;
|
||||
if ( m_nCNC == CNC_OSAI) {
|
||||
size_t nStart = sMyLine.find( ';') ;
|
||||
if ( nStart != string::npos)
|
||||
sMyLine.erase( nStart) ;
|
||||
}
|
||||
// se controllo NUM elimino le parti tra parentesi tonde
|
||||
else if ( m_nCNC == CNC_NUM) {
|
||||
size_t nStart = sMyLine.find( '(') ;
|
||||
if ( nStart != string::npos) {
|
||||
size_t nEnd = sMyLine.find( ')', nStart) ;
|
||||
if ( nEnd != string::npos)
|
||||
sMyLine.erase( nStart, nEnd - nStart + 1) ;
|
||||
else
|
||||
sMyLine.erase( nStart) ;
|
||||
}
|
||||
}
|
||||
|
||||
// divido la linea in parti
|
||||
STRVECTOR vsTokens ;
|
||||
TokenizePlus( sLine, "NGXYZIJKPQRUVWABCFTMHh", vsTokens) ;
|
||||
TokenizePlus( sMyLine, "NGXYZIJKPQRUVWABCFTMHhDEL", vsTokens) ;
|
||||
|
||||
// analizzo ogni singola parte
|
||||
for ( size_t i = 0 ; i < vsTokens.size() ; ++ i) {
|
||||
@@ -203,8 +234,17 @@ ImportCnc::ProcessLine( const string& sLine)
|
||||
case 'M' :
|
||||
ParseM( vsTokens[i]) ;
|
||||
break ;
|
||||
case 'H' :
|
||||
if ( m_nCNC == CNC_FANUC)
|
||||
ParseH( vsTokens[i]) ;
|
||||
break ;
|
||||
case 'h' :
|
||||
Parseh( vsTokens[i]) ;
|
||||
if ( m_nCNC == CNC_OSAI)
|
||||
ParseH( vsTokens[i]) ;
|
||||
break ;
|
||||
case 'D' :
|
||||
if ( m_nCNC != CNC_FANUC && m_nCNC != CNC_OSAI)
|
||||
ParseH( vsTokens[i]) ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
@@ -245,10 +285,17 @@ ImportCnc::ParseRemark( const string& sLine)
|
||||
if ( iCnc != string::npos) {
|
||||
string sCNC = sLine.substr( iCnc + 4) ;
|
||||
TrimRight( sCNC, " )") ;
|
||||
if ( ToUpper( sCNC) == "OSAI")
|
||||
sCNC = ToUpper( sCNC) ;
|
||||
if ( sCNC == "OSAI")
|
||||
m_nCNC = CNC_OSAI ;
|
||||
else if ( ToUpper( sCNC) == "FANUC")
|
||||
else if ( sCNC == "FANUC")
|
||||
m_nCNC = CNC_FANUC ;
|
||||
else if ( sCNC == "NUM")
|
||||
m_nCNC = CNC_NUM ;
|
||||
else if ( sCNC == "SIEMENS")
|
||||
m_nCNC = CNC_SIEMENS ;
|
||||
else if ( sCNC == "TPA")
|
||||
m_nCNC = CNC_TPA ;
|
||||
}
|
||||
// cerco indicazione di posizione Home
|
||||
string::size_type iFrom = sLine.find( "FROM/") ;
|
||||
@@ -652,7 +699,7 @@ ImportCnc::ParseM( const string& sToken)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
ImportCnc::Parseh( const string& sToken)
|
||||
ImportCnc::ParseH( const string& sToken)
|
||||
{
|
||||
int nVal ;
|
||||
int nStart = ( sToken[1] == '=' ? 2 : 1) ;
|
||||
|
||||
Reference in New Issue
Block a user