diff --git a/API.h b/API.h index 6981988..d7337a2 100644 --- a/API.h +++ b/API.h @@ -31,7 +31,7 @@ bool EgtSetGridFrame( const Frame3d& frFrame) ; bool EgtGetGridFrame( int nRefId, Frame3d& frFrame) ; bool EgtGetGridVersZ( int nRefId, Vector3d& vtVersZ) ; bool EgtOpenFile( const std::string& sFilePath) ; -bool EgtImportFile( const std::string& sFilePath) ; +bool EgtInsertFile( const std::string& sFilePath) ; bool EgtSaveFile( const std::string& sFilePath, int nFlag) ; //--------------------------- GeomDBCreate ----------------------------------- diff --git a/API_Exchange.cpp b/API_Exchange.cpp index 2f0e6d5..9eda291 100644 --- a/API_Exchange.cpp +++ b/API_Exchange.cpp @@ -82,14 +82,25 @@ EgtImportDxf( const string& sFilePath) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) + bool bOk = true ; // importo il file DXF // aggiungo un gruppo pezzo int nPartId = pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ; // preparo l'importatore PtrOwner pImpDxf( CreateImportDxf()) ; - VERIFY_NULL( Get( pImpDxf), "Error in CreateImportDxf", false) + bOk = bOk && ! IsNull( pImpDxf) ; // eseguo l'importazione - return pImpDxf->Import( sFilePath, pGeomDB, nPartId) ; + bOk = bOk && pImpDxf->Import( sFilePath, pGeomDB, nPartId) ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLuaPath = sFilePath ; + ReplaceString( sLuaPath, "\\", "\\\\") ; + string sLua = "EgtImportDxf('" + sLuaPath + "')" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + // restituisco il risultato + return bOk ; } //----------------------------------------------------------------------------- @@ -105,15 +116,26 @@ EgtImportStl( const string& sFilePath) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) + bool bOk = true ; // importo il file STL // aggiungo un gruppo pezzo e un gruppo layer int nPartId = pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ; int nLayerId = pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ; // preparo l'importatore PtrOwner pImpStl( CreateImportStl()) ; - VERIFY_NULL( Get( pImpStl), "Error in CreateImportStl", false) + bOk = bOk && ! IsNull( pImpStl) ; // eseguo l'importazione - return pImpStl->Import( sFilePath, pGeomDB, nLayerId) ; + bOk = bOk && pImpStl->Import( sFilePath, pGeomDB, nLayerId) ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLuaPath = sFilePath ; + ReplaceString( sLuaPath, "\\", "\\\\") ; + string sLua = "EgtImportStl('" + sLuaPath + "')" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + // restituisco il risultato + return bOk ; } //----------------------------------------------------------------------------- @@ -129,14 +151,25 @@ EgtImportCnc( const string& sFilePath) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) + bool bOk = true ; // importo il file CNC // aggiungo un gruppo pezzo int nPartId = pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ; // preparo l'importatore PtrOwner pImpCnc( CreateImportCnc()) ; - VERIFY_NULL( Get( pImpCnc), "Error in CreateImportCnc", false) + bOk = bOk && ! IsNull( pImpCnc) ; // eseguo l'importazione - return pImpCnc->Import( sFilePath, pGeomDB, nPartId) ; + bOk = bOk && pImpCnc->Import( sFilePath, pGeomDB, nPartId) ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLuaPath = sFilePath ; + ReplaceString( sLuaPath, "\\", "\\\\") ; + string sLua = "EgtImportCnc('" + sLuaPath + "')" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + // restituisco il risultato + return bOk ; } //----------------------------------------------------------------------------- @@ -152,12 +185,24 @@ EgtExportDxf( int nId, const string& sFilePath) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) + bool bOk = true ; // esporto il file DXF // preparo l'esportatore PtrOwner pExpDxf( CreateExportDxf()) ; - VERIFY_NULL( Get( pExpDxf), "Error in CreateExportDxf", false) + bOk = bOk && ! IsNull( pExpDxf) ; // eseguo l'esportazione - return pExpDxf->Export( pGeomDB, nId, sFilePath) ; + bOk = bOk && pExpDxf->Export( pGeomDB, nId, sFilePath) ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLuaPath = sFilePath ; + ReplaceString( sLuaPath, "\\", "\\\\") ; + string sLua = "EgtExportDxf(" + ToString( nId) + ",'" + + sLuaPath + "')" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + // restituisco il risultato + return bOk ; } //----------------------------------------------------------------------------- @@ -173,10 +218,22 @@ EgtExportStl( int nId, const string& sFilePath) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) + bool bOk = true ; // esporto il file STL // preparo l'esportatore PtrOwner pExpStl( CreateExportStl()) ; - VERIFY_NULL( Get( pExpStl), "Error in CreateExportStl", false) + bOk = bOk && ! IsNull( pExpStl) ; // eseguo l'esportazione - return pExpStl->Export( pGeomDB, nId, sFilePath) ; + bOk = bOk && pExpStl->Export( pGeomDB, nId, sFilePath) ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLuaPath = sFilePath ; + ReplaceString( sLuaPath, "\\", "\\\\") ; + string sLua = "EgtExportStl(" + ToString( nId) + ",'" + + sLuaPath + "')" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + // restituisco il risultato + return bOk ; } diff --git a/API_GeomDB.cpp b/API_GeomDB.cpp index 9b76e1b..19299de 100644 --- a/API_GeomDB.cpp +++ b/API_GeomDB.cpp @@ -15,6 +15,7 @@ #include "stdafx.h" #include "API.h" #include "API_Macro.h" +#include "AuxTools.h" #include "/EgtDev/Include/EInAPI.h" #include "/EgtDev/Include/EGkStringUtils3d.h" #include "/EgtDev/Include/EGnStringConverter.h" @@ -179,10 +180,18 @@ __stdcall EgtNewFile( void) { GseContext* pGseCtx = GetCurrGseContext() ; VERIFY_CTX_GEOMDB( pGseCtx, FALSE) + bool bOk = true ; // reinizializzazione (con pulizia) del DB geometrico - pGseCtx->m_pGeomDB->Init() ; - pGseCtx->m_pGeomDB->SetDefaultMaterial( pGseCtx->m_colDef) ; - return TRUE ; + bOk = bOk && pGseCtx->m_pGeomDB->Init() ; + bOk = bOk && pGseCtx->m_pGeomDB->SetDefaultMaterial( pGseCtx->m_colDef) ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLua = "EgtNewFile()" + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + // restituisco il risultato + return ( bOk ? TRUE : FALSE) ; } //----------------------------------------------------------------------------- @@ -196,26 +205,51 @@ __stdcall EgtOpenFile( const wchar_t* wsFilePath) bool EgtOpenFile( const string& sFilePath) { + GseContext* pGseCtx = GetCurrGseContext() ; + VERIFY_CTX_GEOMDB( pGseCtx, false) + bool bOk = true ; // reinizializzazione (con pulizia) del DB geometrico - if ( ! EgtNewFile()) - return false ; + bOk = bOk && pGseCtx->m_pGeomDB->Init() ; + bOk = bOk && pGseCtx->m_pGeomDB->SetDefaultMaterial( pGseCtx->m_colDef) ; // carico il file - return GetCurrGeomDB()->Load( sFilePath) ; + bOk = bOk && GetCurrGeomDB()->Load( sFilePath) ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLuaPath = sFilePath ; + ReplaceString( sLuaPath, "\\", "\\\\") ; + string sLua = "EgtOpenFile('" + sLuaPath + "')" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + // restituisco il risultato + return bOk ; } //----------------------------------------------------------------------------- BOOL -__stdcall EgtImportFile( const wchar_t* wsFilePath) +__stdcall EgtInsertFile( const wchar_t* wsFilePath) { - return ( EgtImportFile( wstrztoA( wsFilePath)) ? TRUE : FALSE) ; + return ( EgtInsertFile( wstrztoA( wsFilePath)) ? TRUE : FALSE) ; } //----------------------------------------------------------------------------- bool -EgtImportFile( const string& sFilePath) +EgtInsertFile( const string& sFilePath) { + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) // carico il file - return GetCurrGeomDB()->Load( sFilePath) ; + bool bOk = pGeomDB->Load( sFilePath) ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLuaPath = sFilePath ; + ReplaceString( sLuaPath, "\\", "\\\\") ; + string sLua = "EgtInsertFile('" + sLuaPath + "')" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + // restituisco il risultato + return bOk ; } //----------------------------------------------------------------------------- @@ -232,5 +266,16 @@ EgtSaveFile( const string& sFilePath, int nFlag) IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) // salvo il file - return pGeomDB->Save( sFilePath, nFlag) ; + bool bOk = pGeomDB->Save( sFilePath, nFlag) ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLuaPath = sFilePath ; + ReplaceString( sLuaPath, "\\", "\\\\") ; + string sLua = "EgtSaveFile('" + sLuaPath + "'," + + NgeTypeToString( nFlag) + ")" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + // restituisco il risultato + return bOk ; } diff --git a/API_Lua.cpp b/API_Lua.cpp index 968fdd6..3759752 100644 --- a/API_Lua.cpp +++ b/API_Lua.cpp @@ -80,11 +80,19 @@ __stdcall EgtLuaExecFile( const wchar_t* wsFilePath) // emetto info string sInfo = "Exec File = " + sFilePath ; LOG_INFO( GetLogger(), sInfo.c_str()) + // disabilito il log dei comandi + bool bPrevCmdLog = IsCmdLog() ; + EgtDisableCommandLogger() ; // esecuzione script bool bOk = LuaExecFile( sFilePath) ; + // ripristino lo stato originale del log dei comandi + if ( bPrevCmdLog) + EgtEnableCommandLogger() ; // se richiesto, salvo il comando Lua if ( IsCmdLog()) { - string sLua = "dofile('" + sFilePath + "')" + + string sLuaPath = sFilePath ; + ReplaceString( sLuaPath, "\\", "\\\\") ; + string sLua = "dofile('" + sLuaPath + "')" + " -- Ok=" + ToString( bOk) ; LOG_INFO( GetCmdLogger(), sLua.c_str()) ; } diff --git a/AuxTools.cpp b/AuxTools.cpp index 096d602..fe0bb88 100644 --- a/AuxTools.cpp +++ b/AuxTools.cpp @@ -20,6 +20,34 @@ using namespace std ; +//---------------------------------------------------------------------------- +const char* +NgeTypeToString( int nNgeType) +{ + switch ( nNgeType) { + case GDB_SV_TXT : return "'T'" ; + case GDB_SV_BIN : return "'B'" ; + default : + case GDB_SV_CMPTXT : return "'CT'" ; + } +} + +//---------------------------------------------------------------------------- +int +StringToNgeType( const string& sNgeType) +{ + string sTmp = sNgeType ; + ToUpper( sTmp) ; + if ( sTmp == "T") + return GDB_SV_TXT ; + else if ( sTmp == "B") + return GDB_SV_BIN ; + else if ( sTmp == "CT") + return GDB_SV_CMPTXT ; + // default + return GDB_SV_CMPTXT ; +} + //---------------------------------------------------------------------------- const char* SepToString( int nSep) diff --git a/AuxTools.h b/AuxTools.h index 090af1d..75085d4 100644 --- a/AuxTools.h +++ b/AuxTools.h @@ -17,6 +17,9 @@ class IGeomDB ; //---------------------------------------------------------------------------- +// Tipo del file Nge +const char* NgeTypeToString( int nNgeType) ; +int StringToNgeType( const std::string& sNgeType) ; // Tipo punto per creazione rette e archi const char* SepToString( int nSep) ; int StringToSep( const std::string& sSep) ; diff --git a/EgtInterface.rc b/EgtInterface.rc index 9ef49d6..73b3d7c 100644 Binary files a/EgtInterface.rc and b/EgtInterface.rc differ diff --git a/LUA_GeomDB.cpp b/LUA_GeomDB.cpp index 39037ae..840817d 100644 --- a/LUA_GeomDB.cpp +++ b/LUA_GeomDB.cpp @@ -15,6 +15,7 @@ #include "stdafx.h" #include "LUA.h" #include "API.h" +#include "AuxTools.h" #include "/EgtDev/Include/EInAPI.h" #include "/EgtDev/Include/EgnStringUtils.h" #include "/EgtDev/Extern/Lua/Include/lua.hpp" @@ -120,14 +121,14 @@ LuaOpenFile( lua_State* L) //------------------------------------------------------------------------------- static int -LuaImportFile( lua_State* L) +LuaInsertFile( lua_State* L) { // 1 parametro : path del file da importare string sFilePath ; LuaCheckParam( L, 1, sFilePath) LuaClearStack( L) ; // apro il file - bool bOk = EgtImportFile( sFilePath) ; + bool bOk = EgtInsertFile( sFilePath) ; // restituisco il risultato LuaSetReturn( L, bOk) ; return 1 ; @@ -144,11 +145,7 @@ LuaSaveFile( lua_State* L) if ( lua_gettop( L) >= 2) { string sFlag ; LuaCheckParam( L, 2, sFlag) ; - ToUpper( sFlag) ; - if ( sFlag == "T") - nFlag = GDB_SV_TXT ; - else if ( sFlag == "B") - nFlag = GDB_SV_BIN ; + nFlag = StringToNgeType( sFlag) ; } LuaClearStack( L) ; // salvo il file @@ -169,7 +166,7 @@ LuaInstallGeomDB( lua_State* L) lua_register( L, "EgtGetGridVersZ", LuaGetGridVersZ) ; lua_register( L, "EgtNewFile", LuaNewFile) ; lua_register( L, "EgtOpenFile", LuaOpenFile) ; - lua_register( L, "EgtImportFile", LuaImportFile) ; + lua_register( L, "EgtInsertFile", LuaInsertFile) ; lua_register( L, "EgtSaveFile", LuaSaveFile) ; } catch ( ...) {