//---------------------------------------------------------------------------- // EgalTech 2017-2022 //---------------------------------------------------------------------------- // File : EGkGeoObjSave.h Data : 25.04.22 Versione : 2.4d4 // Contenuto : Funzione per salvare su file un Oggetto Geometrico. // // // // Modifiche : 30.10.17 DS Creazione modulo. // 25.04.22 DS Aggiunti controlli. // //---------------------------------------------------------------------------- #pragma once #include "/EgtDev/Include/EGkGeomDB.h" #include "/EgtDev/Include/EgtPointerOwner.h" //---------------------------------------------------------------------------- bool SaveGeoObj( IGeoObj* pGObj, const std::string& sFile, int nFlag = GDB_SV_BIN) { // verifico validità oggetto if ( pGObj == nullptr || ! pGObj->IsValid()) return false ; // creo GeomDB temporaneo PtrOwner pGeomDB( CreateGeomDB()) ; if ( IsNull( pGeomDB)) return false ; // inserisco l'oggetto nel GeomDB (sotto pezzo/layer) int nPartId = pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ; int nLayId = pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ; int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nLayId, pGObj) ; if ( nId == GDB_ID_NULL) return false ; // eseguo il salvataggio bool bOk = pGeomDB->Save( nId, sFile, nFlag) ; // rimuovo l'oggetto dal GeomDB bOk = ( pGeomDB->RemoveGeoObjAndErase( nId) != nullptr) && bOk ; return bOk ; }