d117d268c4
- aggiunta funzione Exe e Lua BeamGetSideData.
399 lines
12 KiB
C++
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 ;
|
|
}
|