6c196ca7da
- modifiche a SaveGeoObj per casi di oggetto non valido.
43 lines
1.5 KiB
C++
43 lines
1.5 KiB
C++
//----------------------------------------------------------------------------
|
|
// 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<IGeomDB> 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 ;
|
|
} |