Files
EgtExecutor/LUA_BeamMgr.cpp
DarioS d117d268c4 EgtExecutor 2.4g1 :
- aggiunta funzione Exe e Lua BeamGetSideData.
2022-07-06 17:45:16 +02:00

399 lines
12 KiB
C++

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