diff --git a/EgtExchange.rc b/EgtExchange.rc index 5d923e7..ebf93ab 100644 Binary files a/EgtExchange.rc and b/EgtExchange.rc differ diff --git a/ImportCnc.cpp b/ImportCnc.cpp index c4afc73..2e81f9f 100644 --- a/ImportCnc.cpp +++ b/ImportCnc.cpp @@ -71,6 +71,9 @@ ImportCnc::Import( const string& sFile, IGeomDB* pGDB, int nIdGroup, int nFlag) return false ; } + // imposto le opzioni di importazione + m_nFlag = nFlag ; + // inizializzo lo scanner Scanner TheScanner ; if ( ! TheScanner.Init( sFile, "")) { @@ -91,6 +94,7 @@ ImportCnc::Import( const string& sFile, IGeomDB* pGDB, int nIdGroup, int nFlag) m_nArcType = NO_ARCTYPE ; m_nComp = 0 ; m_nCompSide = NO_COMP ; + m_ptHome = ORIG ; m_ptLast = ORIG ; m_ptNext = ORIG ; m_ptCen = ORIG ; @@ -110,9 +114,9 @@ ImportCnc::Import( const string& sFile, IGeomDB* pGDB, int nIdGroup, int nFlag) } } - // se importazione riuscita e richiesta elaborazione finale - if ( bOk && nFlag != EICFLAG_NONE) - bOk = PostProcess( nFlag) ; + // se importazione riuscita eseguo elaborazione finale + if ( bOk) + bOk = PostProcess() ; return bOk ; } @@ -212,7 +216,8 @@ ImportCnc::ParseRemark( const string& sLine) if ( iFrom != string::npos) { Point3d ptHome ; if ( FromString( sLine.substr( iFrom + 5), ptHome)) { - m_ptLast = ptHome ; + m_ptHome = ptHome ; + m_ptLast = m_ptHome ; m_ptNext = m_ptLast ; } return true ; @@ -325,7 +330,10 @@ ImportCnc::ParseX( const string& sToken) m_vtOffs.x = dVal ; break ; default : - m_ptNext.x = ( m_bAbsCoord ? m_vtOffs.x + dVal : m_ptLast.x + dVal) ; + if ( m_bZeroMach) + m_ptNext.x = m_ptHome.x + dVal ; + else + m_ptNext.x = ( m_bAbsCoord ? m_vtOffs.x + dVal : m_ptLast.x + dVal) ; m_bToMove = true ; break ; } @@ -348,7 +356,10 @@ ImportCnc::ParseY( const string& sToken) m_vtOffs.y = dVal ; break ; default : - m_ptNext.y = ( m_bAbsCoord ? m_vtOffs.y + dVal : m_ptLast.y + dVal) ; + if ( m_bZeroMach) + m_ptNext.y = m_ptHome.y + dVal ; + else + m_ptNext.y = ( m_bAbsCoord ? m_vtOffs.y + dVal : m_ptLast.y + dVal) ; m_bToMove = true ; break ; } @@ -371,7 +382,10 @@ ImportCnc::ParseZ( const string& sToken) m_vtOffs.z = dVal ; break ; default : - m_ptNext.z = ( m_bAbsCoord ? m_vtOffs.z + dVal : m_ptLast.z + dVal) ; + if ( m_bZeroMach) + m_ptNext.z = m_ptHome.z + dVal ; + else + m_ptNext.z = ( m_bAbsCoord ? m_vtOffs.z + dVal : m_ptLast.z + dVal) ; m_bToMove = true ; break ; } @@ -541,6 +555,10 @@ ImportCnc::ExecSetIPL( void) bool ImportCnc::ExecMovement( void) { + // se richiesto di ignorare i movimenti in Zero Macchina + if ( ( m_nFlag & EICFLAG_SKIP_ZEROMACH) != 0 && m_bZeroMach) + return true ; + // eseguo movimento switch ( m_nMoveType) { case RAPID : return AddLine( L_RAPID) ; @@ -822,10 +840,10 @@ ImportCnc::GetToolGroup( void) //---------------------------------------------------------------------------- bool -ImportCnc::PostProcess( int nFlag) +ImportCnc::PostProcess( void) { // se richiesto concatenamento dei percorsi - if ( ( nFlag & EICFLAG_CHAIN) != 0) { + if ( ( m_nFlag & EICFLAG_CHAIN) != 0) { // gestore di curva composita PtrOwner pCompo ; // ciclo sui gruppi @@ -899,7 +917,7 @@ ImportCnc::PostProcess( int nFlag) } // se richiesta eliminazione dei movimenti in rapido - if ( ( nFlag & EICFLAG_SKIP_RAPID) != 0) { + if ( ( m_nFlag & EICFLAG_SKIP_RAPID) != 0) { // ciclo sui gruppi int nGroupId = m_nFirstGroup ; while ( nGroupId != GDB_ID_NULL) { diff --git a/ImportCnc.h b/ImportCnc.h index dec60ac..a6301ea 100644 --- a/ImportCnc.h +++ b/ImportCnc.h @@ -51,7 +51,7 @@ class ImportCnc : public IImportCnc bool SetCircC2PN( const Point3d& ptCen, const Point3d& ptStart, const Point3d& ptNearEnd, const Vector3d& vtN, ICurveArc* pCrvArc) ; int GetToolGroup( void) ; - bool PostProcess( int nFlag) ; + bool PostProcess( void) ; bool IsRapid( int nId) ; bool InsertCurveComposite( ICurveComposite* pCompo, Color cCol, int nComp, int nSide, int nIdRef, int nSonBeforeAfter) ; @@ -69,6 +69,7 @@ class ImportCnc : public IImportCnc IGeomDB* m_pGDB ; int m_nIdGroup ; Frame3d m_frGroup ; + int m_nFlag ; bool m_bToMove ; int m_nTool ; int m_nNextTool ; @@ -82,6 +83,7 @@ class ImportCnc : public IImportCnc int m_nCompSide ; int m_nInterpPl ; int m_nArcType ; + Point3d m_ptHome ; Point3d m_ptLast ; Point3d m_ptNext ; Point3d m_ptCen ;