EgtExecutor :
- funzione exe/lua SaveObjToFile ora accetta un vettore di indici - eliminata la forma semplicificata della funzione ExeSaveMachGroupToFile.
This commit is contained in:
+30
-21
@@ -479,9 +479,15 @@ ExeSaveFile( const string& sFilePath, int nFlag)
|
||||
static bool
|
||||
IsMachGroupOrWithin( int nId, const IGeomDB* pGeomDB, const IMachMgr* pMachMgr, int& nMachGroupId)
|
||||
{
|
||||
// default non definito
|
||||
nMachGroupId = GDB_ID_NULL ;
|
||||
// verifico validità puntatori
|
||||
if ( pGeomDB == nullptr || pMachMgr == nullptr)
|
||||
return false ;
|
||||
// eseguo ricerca
|
||||
int nParentId = pGeomDB->GetParentId( nId) ;
|
||||
int nPrevParId = nId ;
|
||||
while ( pMachMgr != nullptr && nParentId != GDB_ID_NULL && nParentId != GDB_ID_ROOT) {
|
||||
while ( nParentId != GDB_ID_NULL && nParentId != GDB_ID_ROOT) {
|
||||
if ( pMachMgr->IsMachBase( nParentId)) {
|
||||
nMachGroupId = nPrevParId ;
|
||||
return true ;
|
||||
@@ -489,32 +495,42 @@ IsMachGroupOrWithin( int nId, const IGeomDB* pGeomDB, const IMachMgr* pMachMgr,
|
||||
nPrevParId = nParentId ;
|
||||
nParentId = pGeomDB->GetParentId( nParentId) ;
|
||||
}
|
||||
nMachGroupId = GDB_ID_NULL ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSaveObjToFile( int nId, const string& sFilePath, int nFlag)
|
||||
ExeSaveObjToFile( const INTVECTOR& vId, const string& sFilePath, int nFlag)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
IMachMgr* pMachMgr = GetCurrMachMgr() ;
|
||||
// se l'oggetto è la base dei gruppi di lavoro, chiamo la funzione di salvataggio di tutto
|
||||
if ( pMachMgr != nullptr && pMachMgr->IsMachBase( nId))
|
||||
return ExeSaveFile( sFilePath, nFlag) ;
|
||||
// se l'oggetto è un gruppo di lavoro o una sua parte, chiamo la appropriata funzione di salvataggio
|
||||
int nMachGroupId ;
|
||||
if ( IsMachGroupOrWithin( nId, pGeomDB, pMachMgr, nMachGroupId))
|
||||
return ExeSaveMachGroupToFile( nMachGroupId, sFilePath, nFlag) ;
|
||||
// se uno degli oggetti è la base dei gruppi di lavoro, chiamo la funzione di salvataggio di tutto
|
||||
for ( int nId : vId) {
|
||||
if ( pMachMgr != nullptr && pMachMgr->IsMachBase( nId))
|
||||
return ExeSaveFile( sFilePath, nFlag) ;
|
||||
}
|
||||
// se uno degli oggetti è un gruppo di lavoro o una sua parte, chiamo la appropriata funzione di salvataggio
|
||||
for ( int nId : vId) {
|
||||
int nMachGroupId ;
|
||||
if ( IsMachGroupOrWithin( nId, pGeomDB, pMachMgr, nMachGroupId)) {
|
||||
INTVECTOR vOthId ;
|
||||
vOthId.reserve( vId.size()) ;
|
||||
for ( int nSouId : vId) {
|
||||
if ( nSouId != nId)
|
||||
vOthId.push_back( nSouId) ;
|
||||
}
|
||||
return ExeSaveMachGroupToFile( nMachGroupId, vOthId, sFilePath, nFlag) ;
|
||||
}
|
||||
}
|
||||
// se ero in CAM, non esco <---
|
||||
// copio l'oggetto nel file
|
||||
bool bOk = pGeomDB->Save( nId, sFilePath, nFlag) ;
|
||||
bool bOk = pGeomDB->Save( vId, sFilePath, nFlag) ;
|
||||
// se richiesto, salvo il comando Lua equivalente
|
||||
if ( IsCmdLog()) {
|
||||
string sLua = "EgtSaveObjToFile(" + ToString( nId) + ",'" +
|
||||
StringToLuaString( sFilePath) + "'," +
|
||||
NgeTypeToString( nFlag) + ")" +
|
||||
string sLua = "EgtSaveObjToFile({" + ToString( vId) + "},'" +
|
||||
StringToLuaString( sFilePath) + "'," +
|
||||
NgeTypeToString( nFlag) + ")" +
|
||||
" -- Ok=" + ToString( bOk) ;
|
||||
LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
|
||||
}
|
||||
@@ -522,13 +538,6 @@ ExeSaveObjToFile( int nId, const string& sFilePath, int nFlag)
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSaveMachGroupToFile( int nMGroupId, const string& sFilePath, int nFlag)
|
||||
{
|
||||
return ExeSaveMachGroupToFile( nMGroupId, {}, sFilePath, nFlag) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeSaveMachGroupToFile( int nMGroupId, const INTVECTOR& vPlusId, const string& sFilePath, int nFlag)
|
||||
|
||||
+4
-4
@@ -312,16 +312,16 @@ LuaSaveFile( lua_State* L)
|
||||
static int
|
||||
LuaSaveObjToFile( lua_State* L)
|
||||
{
|
||||
// 2 o 3 parametri : nId, path del file [, flag]
|
||||
int nId ;
|
||||
LuaCheckParam( L, 1, nId)
|
||||
// 2 o 3 parametri : vId, path del file [, flag]
|
||||
INTVECTOR vId ;
|
||||
LuaCheckParam( L, 1, vId)
|
||||
string sFilePath ;
|
||||
LuaCheckParam( L, 2, sFilePath)
|
||||
int nFlag = GDB_SV_CMPTXT ;
|
||||
LuaGetParam( L, 3, nFlag) ;
|
||||
LuaClearStack( L) ;
|
||||
// copio il gruppo nel file
|
||||
bool bOk = ExeSaveObjToFile( nId, sFilePath, nFlag) ;
|
||||
bool bOk = ExeSaveObjToFile( vId, sFilePath, nFlag) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
|
||||
Reference in New Issue
Block a user