Files
EgtExecutor/EXE_BeamMgr.cpp
Dario Sassi 0a5fd7262b EgtExecutor :
- aggiunte funzioni exe e lua BeamCalcAllSolids e BeamShowAllSolids.
2025-10-13 08:49:01 +02:00

333 lines
11 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2020-2020
//----------------------------------------------------------------------------
// File : EXE_BeamMgr.cpp Data : 30.08.20 Versione : 2.2i1
// Contenuto : Funzioni Beam Manager per EXE.
//
//
//
// Modifiche : 30.08.20 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
//--------------------------- Include ----------------------------------------
#include "stdafx.h"
#include "EXE.h"
#include "EXE_Macro.h"
#include "DllExchange.h"
#include "/EgtDev/Include/EXeExecutor.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
using namespace std ;
//-----------------------------------------------------------------------------
bool
ExeInitBeamMgr( int nFlag)
{
GseContext* pGseCtx = GetCurrGseContext() ;
VERIFY_CTX_GEOMDB( pGseCtx, false)
// inizializzazione gestore travi
PtrOwner<IBeamMgr> pBeamMgr( MyCreateBeamMgr()) ;
VERIFY_NULL( Get( pBeamMgr), "Error in CreateBeamMgr", false)
bool bOk = pBeamMgr->Init( pGseCtx->m_pGeomDB, nFlag) ;
// assegno il gestore al contesto
pGseCtx->m_pBeamMgr = ( bOk ? Release( pBeamMgr) : nullptr) ;
// log avvio Beam Manager
string sLog = "BeamMgr" ;
sLog += ( bOk ? " started" : " error") ;
LOG_INFO( GetLogger(), sLog.c_str())
return bOk ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamSetFlag( int nFlag)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// imposto il flag
return pBeamMgr->SetFlag( nFlag) ;
}
//-----------------------------------------------------------------------------
int
ExeBeamCreatePart( void)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, GDB_ID_NULL)
// creo un pezzo (trave o parete) e lo rendo corrente
ExeSetModified() ;
return pBeamMgr->CreatePart() ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamSetPart( int nPartId)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// rendo corrente un pezzo
return pBeamMgr->SetPart( nPartId) ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamErasePart( void)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// cancello il pezzo corrente
ExeSetModified() ;
return pBeamMgr->ErasePart() ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamUpdatePart( void)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// forzo aggiornamento del pezzo corrente
ExeSetModified() ;
return pBeamMgr->UpdatePart() ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamSetPartProdNbr( int nProdNbr)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// imposto il numero di produzione al pezzo corrente
ExeSetModified() ;
return pBeamMgr->SetPartProdNbr( nProdNbr) ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamSetPartName( const string& sName)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// imposto il nome al pezzo corrente
ExeSetModified() ;
return pBeamMgr->SetPartName( sName) ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamSetPartCount( int nCount)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// imposto il numero di parti da produrre al pezzo corrente
ExeSetModified() ;
return pBeamMgr->SetPartCount( nCount) ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamSetPartBox( double dLength, double dHeight, double dWidth, bool bUpdate)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// imposto le dimensioni al pezzo corrente
ExeSetModified() ;
return pBeamMgr->SetPartBox( dLength, dHeight, dWidth, bUpdate) ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamGetSideData( int nSide, Frame3d& frRef, double& dLength, double& dWidth, double& dHeight)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// recupero i dati della faccia indicata del pezzo corrente
ExeSetModified() ;
return pBeamMgr->GetSideData( nSide, frRef, dLength, dWidth, dHeight) ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamShowFacesName( bool bShow)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// imposto la visualizzazione delle facce sul pezzo corrente
return pBeamMgr->ShowFacesName( bShow) ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamShowLoadingSide( bool bShow, bool bFromLeft)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// imposto la visualizzazione del lato di carico sotto il pezzo corrente
return pBeamMgr->ShowLoadingSide( bShow, bFromLeft) ;
}
//-----------------------------------------------------------------------------
int
ExeBeamAddProcess( int nGroup, int nProc, int nSide, const string& sDes, int nProcId,
const Frame3d& frRef, const DBLVECTOR& vdPar, const string& sPar, const STRVECTOR& vsUAtt,
int nCrvId, int nCrv2Id, bool bUpdate)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, GDB_ID_NULL)
// aggiungo una feature al pezzo corrente
ExeSetModified() ;
return pBeamMgr->AddProcess( nGroup, nProc, nSide, sDes, nProcId, frRef, vdPar, sPar, vsUAtt, nCrvId, nCrv2Id, bUpdate) ;
}
//-----------------------------------------------------------------------------
int
ExeBeamModifyProcess( int nGeomId, int nGroup, int nProc, int nSide, const string& sDes, int nProcId,
const Frame3d& frRef, const DBLVECTOR& vdPar, const string& sPar, const STRVECTOR& vsUAtt,
int nCrvId, int nCrv2Id, bool bUpdate)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, GDB_ID_NULL)
// modifico una feature di un pezzo
ExeSetModified() ;
return pBeamMgr->ModifyProcess( nGeomId, nGroup, nProc, nSide, sDes, nProcId, frRef, vdPar, sPar, vsUAtt, nCrvId, nCrv2Id, bUpdate) ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamEraseProcess( int nGeomId, bool bUpdate)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// cancello una feature di un pezzo
ExeSetModified() ;
return pBeamMgr->EraseProcess( nGeomId, bUpdate) ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamEnableProcess( int nGeomId, bool bEnable, bool bUpdate)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// abilito la lavorazione di una feature di un pezzo
ExeSetModified() ;
return pBeamMgr->EnableProcess( nGeomId, bEnable, bUpdate) ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamCalcAllSolids( bool bShow, bool bRecalc)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// disabilito possibilità di alterare il flag di modifica
bool bOldEnabModif = ExeGetEnableModified() ;
if ( bOldEnabModif)
ExeDisableModified() ;
// calcolo i solidi di tutte le travi
bool bOk = pBeamMgr->CalcAllSolids( bShow, bRecalc, ExeProcessEvents) ;
// ripristino possibilità di alterare il flag di modifica
if ( bOldEnabModif)
ExeEnableModified() ;
// risultato
return bOk ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamShowAllSolids( bool bShow)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// disabilito possibilità di alterare il flag di modifica
bool bOldEnabModif = ExeGetEnableModified() ;
if ( bOldEnabModif)
ExeDisableModified() ;
// aggiorno stato di visualizzazione dei solidi di tutte le travi
bool bOk = pBeamMgr->ShowAllSolids( bShow, ExeProcessEvents) ;
// ripristino possibilità di alterare il flag di modifica
if ( bOldEnabModif)
ExeEnableModified() ;
// risultato
return bOk ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamCalcSolid( int nPartId, bool bRecalc)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// disabilito possibilità di alterare il flag di modifica
bool bOldEnabModif = ExeGetEnableModified() ;
if ( bOldEnabModif)
ExeDisableModified() ;
// calcolo il solido della trave
bool bOk = pBeamMgr->CalcSolid( nPartId, bRecalc) ;
// ripristino possibilità di alterare il flag di modifica
if ( bOldEnabModif)
ExeEnableModified() ;
// risultato
return bOk ;
}
//-----------------------------------------------------------------------------
int
ExeBeamGetSolid( int nPartId)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, GDB_ID_NULL)
// recupero l'identificativo del solido della trave
return pBeamMgr->GetSolid( nPartId) ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamShowSolid( int nPartId, bool bShow)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// disabilito possibilità di alterare il flag di modifica
bool bOldEnabModif = ExeGetEnableModified() ;
if ( bOldEnabModif)
ExeDisableModified() ;
// aggiorno lo stato di visualizzazione della trave (solido e complementari)
bool bOk = pBeamMgr->ShowSolid( nPartId, bShow) ;
// ripristino possibilità di alterare il flag di modifica
if ( bOldEnabModif)
ExeEnableModified() ;
// risultato
return bOk ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamGetBuildingIsOn( int nAssGrpId)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// verifico se assemblaggio attivato
return pBeamMgr->GetBuildingIsOn( nAssGrpId) ;
}
//-----------------------------------------------------------------------------
bool
ExeBeamShowBuilding( int nAssGrpId, bool bShow)
{
IBeamMgr* pBeamMgr = GetCurrBeamMgr() ;
VERIFY_BEAMMGR( pBeamMgr, false)
// disabilito possibilità di alterare il flag di modifica
bool bOldEnabModif = ExeGetEnableModified() ;
if ( bOldEnabModif)
ExeDisableModified() ;
// attivo o disattivo la visualizzazione l'assemblaggio
bool bOk = pBeamMgr->ShowBuilding( nAssGrpId, bShow) ;
// ripristino possibilità di alterare il flag di modifica
if ( bOldEnabModif)
ExeEnableModified() ;
// risultato
return bOk ;
}