//---------------------------------------------------------------------------- // EgalTech 2020-2020 //---------------------------------------------------------------------------- // File : LUA_BeamMgr.cpp Data : 12.12.20 Versione : 2.2l1 // Contenuto : Funzioni per evitare collisioni utensile-superfici. // // // // Modifiche : 12.12.20 DS Creazione modulo. // // //---------------------------------------------------------------------------- //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "LUA.h" #include "/EgtDev/Include/EXeExecutor.h" #include "/EgtDev/Include/EXeConst.h" #include "/EgtDev/Include/EGkLuaAux.h" #include "/EgtDev/Include/EGnStringUtils.h" using namespace std ; //------------------------------------------------------------------------------- static int LuaBeamCreatePart( lua_State* L) { // Nessun parametro LuaClearStack( L) ; // creo un pezzo (trave o parete) e lo rendo corrente int nPartId = ExeBeamCreatePart() ; // restituisco il risultato if ( nPartId != GDB_ID_NULL) LuaSetParam( L, nPartId) ; else LuaSetParam( L) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamSetPart( lua_State* L) { // 1 parametro : nPartId int nPartId ; LuaCheckParam( L, 1, nPartId) LuaClearStack( L) ; // rendo corrente un pezzo bool bOk = ExeBeamSetPart( nPartId) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamErasePart( lua_State* L) { // Nessun parametro LuaClearStack( L) ; // cancello il pezzo corrente bool bOk = ExeBeamErasePart() ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamUpdatePart( lua_State* L) { // Nessun parametro LuaClearStack( L) ; // forzo aggiornamento del pezzo corrente bool bOk = ExeBeamUpdatePart() ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamSetPartProdNbr( lua_State* L) { // 1 parametro : nProdNbr int nProdNbr ; LuaCheckParam( L, 1, nProdNbr) LuaClearStack( L) ; // imposto il numero di produzione al pezzo corrente bool bOk = ExeBeamSetPartProdNbr( nProdNbr) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamSetPartName( lua_State* L) { // 1 parametro : sName string sName ; LuaCheckParam( L, 1, sName) LuaClearStack( L) ; // imposto il nome al pezzo corrente bool bOk = ExeBeamSetPartName( sName) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamSetPartCount( lua_State* L) { // 1 parametro : nCount int nCount ; LuaCheckParam( L, 1, nCount) LuaClearStack( L) ; // imposto il numero di parti da produrre al pezzo corrente bool bOk = ExeBeamSetPartCount( nCount) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamSetPartBox( lua_State* L) { // 3 parametri : dLength, dHeight, dWidth [, bUpdate] double dLength ; LuaCheckParam( L, 1, dLength) double dHeight ; LuaCheckParam( L, 2, dHeight) double dWidth ; LuaCheckParam( L, 3, dWidth) bool bUpdate = true ; LuaGetParam( L, 4, bUpdate) ; LuaClearStack( L) ; // imposto le dimensioni al pezzo corrente bool bOk = ExeBeamSetPartBox( dLength, dHeight, dWidth, bUpdate) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamGetSideData( lua_State* L) { // 1 parametro : nSide int nSide ; LuaCheckParam( L, 1, nSide) LuaClearStack( L) ; // imposto le dimensioni al pezzo corrente Frame3d frRef ; double dLength, dWidth, dHeight ; bool bOk = ExeBeamGetSideData( nSide, frRef, dLength, dWidth, dHeight) ; // restituisco il risultato if ( bOk) { LuaSetParam( L, frRef) ; LuaSetParam( L, dLength) ; LuaSetParam( L, dWidth) ; LuaSetParam( L, dHeight) ; return 4 ; } else { LuaSetParam( L) ; return 1 ; } } //------------------------------------------------------------------------------- static int LuaBeamAddProcess( lua_State* L) { // 9 o 10 o 11 o 12 parametri : nGroup, nProc, nSide, sDes, nProcId, vdPar, sPar [, nCrv, nCrv2] [, bUpdate] int nGroup ; LuaCheckParam( L, 1, nGroup) int nProc ; LuaCheckParam( L, 2, nProc) int nSide ; LuaCheckParam( L, 3, nSide) string sDes ; LuaCheckParam( L, 4, sDes) int nProcId ; LuaCheckParam( L, 5, nProcId) Frame3d frRef ; LuaCheckParam( L, 6, frRef) DBLVECTOR vdPar ; LuaCheckParam( L, 7, vdPar) string sPar ; LuaCheckParam( L, 8, sPar) STRVECTOR vsUAtt ; LuaCheckParam( L, 9, vsUAtt) int nCrvId = GDB_ID_NULL ; int nCrv2Id = GDB_ID_NULL ; bool bUpdate = true ; if ( LuaGetParam( L, 10, nCrvId) && LuaGetParam( L, 11, nCrv2Id)) LuaGetParam( L, 12, bUpdate) ; else LuaGetParam( L, 10, bUpdate) ; LuaClearStack( L) ; // aggiungo la feature indicata int nNewId = ExeBeamAddProcess( nGroup, nProc, nSide, sDes, nProcId, frRef, vdPar, sPar, vsUAtt, nCrvId, nCrv2Id, bUpdate) ; // restituisco il risultato if ( nNewId != GDB_ID_NULL) LuaSetParam( L, nNewId) ; else LuaSetParam( L) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamModifyProcess( lua_State* L) { // 10 o 11 o 12 o 13 parametri : nGeomId, nGroup, nProc, nSide, sDes, nProcId, vdPar, sPar [, nCrv, nCrv2] [, bUpdate] int nGeomId ; LuaCheckParam( L, 1, nGeomId) int nGroup ; LuaCheckParam( L, 2, nGroup) int nProc ; LuaCheckParam( L, 3, nProc) int nSide ; LuaCheckParam( L, 4, nSide) string sDes ; LuaCheckParam( L, 5, sDes) int nProcId ; LuaCheckParam( L, 6, nProcId) Frame3d frRef ; LuaCheckParam( L, 7, frRef) DBLVECTOR vdPar ; LuaCheckParam( L, 8, vdPar) string sPar ; LuaCheckParam( L, 9, sPar) STRVECTOR vsUAtt ; LuaCheckParam( L, 10, vsUAtt) int nCrvId = GDB_ID_NULL ; int nCrv2Id = GDB_ID_NULL ; bool bUpdate = true ; if ( LuaGetParam( L, 11, nCrvId) && LuaGetParam( L, 12, nCrv2Id)) LuaGetParam( L, 13, bUpdate) ; else LuaGetParam( L, 11, bUpdate) ; LuaClearStack( L) ; // modifico la feature indicata int nNewId = ExeBeamModifyProcess( nGeomId, nGroup, nProc, nSide, sDes, nProcId, frRef, vdPar, sPar, vsUAtt, nCrvId, nCrv2Id, bUpdate) ; // restituisco il risultato if ( nNewId != GDB_ID_NULL) LuaSetParam( L, nNewId) ; else LuaSetParam( L) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamEraseProcess( lua_State* L) { // 1 o 2 parametri : nGeomId [, bUpdate] int nGeomId ; LuaCheckParam( L, 1, nGeomId) bool bUpdate = true ; LuaGetParam( L, 2, bUpdate) ; LuaClearStack( L) ; // cancello la feature indicata bool bOk = ExeBeamEraseProcess( nGeomId, bUpdate) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamEnableProcess( lua_State* L) { // 2 o 3 parametri : nGeomId, bEnable [, bUpdate] int nGeomId ; LuaCheckParam( L, 1, nGeomId) bool bEnable ; LuaCheckParam( L, 2, bEnable) bool bUpdate = true ; LuaGetParam( L, 3, bUpdate) ; LuaClearStack( L) ; // abilito la lavorazione della feature indicata bool bOk = ExeBeamEnableProcess( nGeomId, bEnable, bUpdate) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamCalcSolid( lua_State* L) { // 1 o 2 parametri : nPartId [, bRecalc] int nPartId ; LuaCheckParam( L, 1, nPartId) bool bRecalc = false ; LuaGetParam( L, 2, bRecalc) ; LuaClearStack( L) ; // eseguo calcolo del solido della trave bool bOk = ExeBeamCalcSolid( nPartId, bRecalc) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamGetSolid( lua_State* L) { // 1 parametro : nPartIdo int nPartId ; LuaCheckParam( L, 1, nPartId) LuaClearStack( L) ; // restituisco identificativo del solido della trave int nSolidId = ExeBeamGetSolid( nPartId) ; // restituisco il risultato if ( nSolidId != GDB_ID_NULL) LuaSetParam( L, nSolidId) ; else LuaSetParam( L) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamShowSolid( lua_State* L) { // 2 parametri : nPartId, bShow int nPartId ; LuaCheckParam( L, 1, nPartId) bool bShow ; LuaGetParam( L, 2, bShow) ; LuaClearStack( L) ; // visualizzo o nascondo il solido della trave bool bOk = ExeBeamShowSolid( nPartId, bShow) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamGetBuildingIsOn( lua_State* L) { // Nessun parametro LuaClearStack( L) ; // restituisco identificativo del solido della trave bool bOk = ExeBeamGetBuildingIsOn() ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaBeamShowBuilding( lua_State* L) { // 1 parametro : bShow bool bShow ; LuaCheckParam( L, 1, bShow) LuaClearStack( L) ; // attivo o disattivo la visualizzazione l'assemblaggio bool bOk = ExeBeamShowBuilding( bShow) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- bool LuaInstallBeamMgr( LuaMgr& luaMgr) { bool bOk = ( &luaMgr != nullptr) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamCreatePart", LuaBeamCreatePart) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamSetPart", LuaBeamSetPart) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamErasePart", LuaBeamErasePart) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamUpdatePart", LuaBeamUpdatePart) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamSetPartProdNbr", LuaBeamSetPartProdNbr) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamSetPartName", LuaBeamSetPartName) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamSetPartCount", LuaBeamSetPartCount) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamSetPartBox", LuaBeamSetPartBox) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamGetSideData", LuaBeamGetSideData) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamAddProcess", LuaBeamAddProcess) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamModifyProcess", LuaBeamModifyProcess) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamEraseProcess", LuaBeamEraseProcess) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamEnableProcess", LuaBeamEnableProcess) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamCalcSolid", LuaBeamCalcSolid) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamGetSolid", LuaBeamGetSolid) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamShowSolid", LuaBeamShowSolid) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamGetBuildingIsOn", LuaBeamGetBuildingIsOn) ; bOk = bOk && luaMgr.RegisterFunction( "EgtBeamShowBuilding", LuaBeamShowBuilding) ; return bOk ; }