//---------------------------------------------------------------------------- // 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 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 ; }