From 9d12c2bede31e31dfed3e9086c3f56e1a5c62d79 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Fri, 29 Nov 2024 18:54:54 +0100 Subject: [PATCH] EgtExecutor 2.6l1 : - aggiunta gestione import formato OFF - aggiunta funzione Exe/Lua ImportOff. --- DllExchange.cpp | 16 ++++++++++++++++ DllExchange.h | 6 ++++-- EXE_Exchange.cpp | 43 +++++++++++++++++++++++++++++++++++++++---- EgtExecutor.rc | Bin 18898 -> 18898 bytes LUA_Exchange.cpp | 18 ++++++++++++++++++ 5 files changed, 77 insertions(+), 6 deletions(-) diff --git a/DllExchange.cpp b/DllExchange.cpp index 3548d35..5101950 100644 --- a/DllExchange.cpp +++ b/DllExchange.cpp @@ -50,6 +50,7 @@ static const char* EEX_CREATEIMPORTCSF = "CreateImportCsf" ; static const char* EEX_CREATEIMPORTDXF = "CreateImportDxf" ; static const char* EEX_CREATEIMPORTPNT = "CreateImportPnt" ; static const char* EEX_CREATEIMPORTSTL = "CreateImportStl" ; +static const char* EEX_CREATEIMPORTOFF = "CreateImportOff" ; static const char* EEX_CREATEIMPORT3MF = "CreateImport3MF" ; static const char* EEX_CREATEEXPORTDXF = "CreateExportDxf" ; static const char* EEX_CREATEEXPORTSTL = "CreateExportStl" ; @@ -303,6 +304,21 @@ MyCreateImportStl( void) return pFun() ; } +//----------------------------------------------------------------------------- +IImportOff* +MyCreateImportOff( void) +{ + // verifico caricamento libreria EgtExchange + if ( s_hEEx == nullptr) + return nullptr ; + // recupero funzione creazione oggetto + typedef IImportOff* (* PF_CreateImportOff) ( void) ; + PF_CreateImportOff pFun = (PF_CreateImportOff)GetProcAddress( s_hEEx, EEX_CREATEIMPORTOFF) ; + if ( pFun == nullptr) + return nullptr ; + return pFun() ; +} + //----------------------------------------------------------------------------- IImport3MF* MyCreateImport3MF( void) diff --git a/DllExchange.h b/DllExchange.h index 2c60b89..4686437 100644 --- a/DllExchange.h +++ b/DllExchange.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- -// EgalTech 2015-2021 +// EgalTech 2015-2024 //---------------------------------------------------------------------------- -// File : DllExchange.h Data : 27.08.21 Versione : 2.3h2 +// File : DllExchange.h Data : 28.11.24 Versione : 2.6k3 // Contenuto : Dichiarazioni funzioni per libreria opzionale EgtExchange. // // @@ -24,6 +24,7 @@ class IImportCsf ; class IImportDxf ; class IImportPnt ; class IImportStl ; +class IImportOff ; class IImport3MF ; class IExportDxf ; class IExportStl ; @@ -49,6 +50,7 @@ IImportCsf* MyCreateImportCsf( void) ; IImportDxf* MyCreateImportDxf( void) ; IImportPnt* MyCreateImportPnt( void) ; IImportStl* MyCreateImportStl( void) ; +IImportOff* MyCreateImportOff( void) ; IImport3MF* MyCreateImport3MF( void) ; IExportDxf* MyCreateExportDxf( void) ; IExportStl* MyCreateExportStl( void) ; diff --git a/EXE_Exchange.cpp b/EXE_Exchange.cpp index 0c4d207..631159a 100644 --- a/EXE_Exchange.cpp +++ b/EXE_Exchange.cpp @@ -29,6 +29,7 @@ #include "/EgtDev/Include/EExImportPnt.h" #include "/EgtDev/Include/EExImportBtl.h" #include "/EgtDev/Include/EExImportBtlx.h" +#include "/EgtDev/Include/EExImportOff.h" #include "/EgtDev/Include/EExExportDxf.h" #include "/EgtDev/Include/EExExportStl.h" #include "/EgtDev/Include/EExExport3MF.h" @@ -77,6 +78,8 @@ ExeGetFileType( const string& sFilePath) return FT_3DM ; else if ( sFileExt == "OBJ") return FT_OBJ ; + else if ( sFileExt == "OFF") + return FT_OFF ; else if ( sFileExt == "CNC" || sFileExt == "XPI" || sFileExt == "MPF" || sFileExt == "ISO" || sFileExt == "EIA") return FT_CNC ; else if ( sFileExt == "HED" || sFileExt == "ENT" || sFileExt == "ENS") @@ -85,8 +88,6 @@ ExeGetFileType( const string& sFilePath) return FT_BTL ; else if ( sFileExt == "BTLX") return FT_BTLX ; - else if ( sFileExt == "3DM") - return FT_3DM ; else if ( sFileExt == "PNG" || sFileExt == "JPG" || sFileExt == "JPEG" || sFileExt == "BMP") return FT_IMG ; else if ( sFileExt == "PNT" || sFileExt == "XYZ") @@ -367,6 +368,42 @@ ExeImportStl( const string& sFilePath, double dScaleFactor) return bOk ; } +//----------------------------------------------------------------------------- +bool +ExeImportOff( const string& sFilePath, double dScaleFactor) +{ + GseContext* pGseCtx = GetCurrGseContext() ; + VERIFY_CTX_GEOMDB( pGseCtx, false) + bool bOk = true ; + // importo il file OFF + // aggiungo un gruppo pezzo e un gruppo layer + int nPartId = pGseCtx->m_pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ; + int nLayerId = pGseCtx->m_pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ; + // preparo l'importatore + PtrOwner pImpOff( MyCreateImportOff()) ; + bOk = bOk && ! IsNull( pImpOff) ; + // eseguo l'importazione + bOk = bOk && pImpOff->Import( sFilePath, pGseCtx->m_pGeomDB, nLayerId, dScaleFactor) ; + // aggiorno stato file corrente + if ( pGseCtx->m_sFilePath.empty()) + pGseCtx->m_sFilePath = sFilePath ; + ExeSetModified() ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLua = "EgtImportOff('" + StringToLuaString( sFilePath) + "'," + + ToString( dScaleFactor) + ")" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + // scrivo il log + if ( ! IsNull( pImpOff)) { + string sLog = "Import File " + sFilePath ; + LOG_INFO( GetLogger(), sLog.c_str()) ; + } + // restituisco il risultato + return bOk ; +} + //----------------------------------------------------------------------------- bool ExeImport3MF( const string& sFilePath) @@ -410,8 +447,6 @@ ExeImport3dm( const string& sFilePath) VERIFY_CTX_GEOMDB( pGseCtx, false) bool bOk = true ; // importo il file 3dm - //// aggiungo un gruppo pezzo e un gruppo layer - // int nPartId = pGseCtx->m_pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ; // preparo l'importatore PtrOwner pImp3dm( MyCreateImport3dm()) ; bOk = bOk && ! IsNull( pImp3dm) ; diff --git a/EgtExecutor.rc b/EgtExecutor.rc index 4a2a97414bc5cad53921557d6df3a7bc05c24969..fab46e9b68b1bb673393ca83c0c7b4a6f11f82ea 100644 GIT binary patch delta 123 zcmcaKneozO#tlE%SdAET7z{UG6uZte`3h$aa}I;y`T)EKs?Fa+jGV9}q;y k87R3iZeAp;#SGW%%#5Vbk8$%PX}IJ;IeUbpfzl#%06JPDRsaA1 delta 123 zcmcaKneozO#tlE%SPdC;7>qVw6uZte`3h$ab2fv~`T)EKs?Fa+jGV9}q;y k87R3iZeAp;#SGW%%#5Vbk8$%PX}IJ;IeUbpfzl#%06Ib=RsaA1 diff --git a/LUA_Exchange.cpp b/LUA_Exchange.cpp index 6feb14a..d708c61 100644 --- a/LUA_Exchange.cpp +++ b/LUA_Exchange.cpp @@ -154,6 +154,23 @@ LuaImportStl( lua_State* L) return 1 ; } +//------------------------------------------------------------------------------- +static int +LuaImportOff( lua_State* L) +{ + // 1 o 2 parametri : path del file da importare [, Fattore di scala] + string sFilePath ; + LuaCheckParam( L, 1, sFilePath) + double dScaleFactor = 1.0 ; + LuaGetParam( L, 2, dScaleFactor) ; + LuaClearStack( L) ; + // apro il file + bool bOk = ExeImportOff( sFilePath, dScaleFactor) ; + // restituisco il risultato + LuaSetParam( L, bOk) ; + return 1 ; +} + //------------------------------------------------------------------------------- static int LuaImport3MF( lua_State* L) @@ -332,6 +349,7 @@ LuaInstallExchange( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtImportDxf", LuaImportDxf) ; bOk = bOk && luaMgr.RegisterFunction( "EgtImportPnt", LuaImportPnt) ; bOk = bOk && luaMgr.RegisterFunction( "EgtImportStl", LuaImportStl) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtImportOff", LuaImportOff) ; bOk = bOk && luaMgr.RegisterFunction( "EgtImport3MF", LuaImport3MF) ; bOk = bOk && luaMgr.RegisterFunction( "EgtImport3dm", LuaImport3dm) ; bOk = bOk && luaMgr.RegisterFunction( "EgtAdvancedImport", LuaAdvancedImport) ;