Files
EgtExecutor/LUA_CAvTool.cpp
Dario Sassi 1a961a19af EgtExecutor 2.5l5 :
- aggiunta funzione Exe e Lua CAvToolPosBox
- agli import aggiunto log.
2024-01-02 15:58:34 +01:00

205 lines
6.8 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2018-2018
//----------------------------------------------------------------------------
// File : LUA_CAvTool.cpp Data : 28.04.18 Versione : 1.9e1
// Contenuto : Funzioni per evitare collisioni utensile-superfici.
//
//
//
// Modifiche : 28.04.18 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
LuaCAvSetStdTool( lua_State* L)
{
// 3 parametri : dToolLen, dToolDiam, dToolCornR
double dToolLen ;
LuaCheckParam( L, 1, dToolLen)
double dToolDiam ;
LuaCheckParam( L, 2, dToolDiam)
double dToolCornR ;
LuaCheckParam( L, 3, dToolCornR)
LuaClearStack( L) ;
// assegno dati utensile standard per Collision Avoidance
bool bOk = ExeCAvSetStdTool( dToolLen, dToolDiam, dToolCornR) ;
// restituisco il risultato
LuaSetParam( L, bOk) ;
return 1 ;
}
//-------------------------------------------------------------------------------
static int
LuaCAvSetAdvTool( lua_State* L)
{
// 5 parametri : dToolLen, dToolDiam, dTipLen, dTipDiam, dToolCornR
double dToolLen ;
LuaCheckParam( L, 1, dToolLen)
double dToolDiam ;
LuaCheckParam( L, 2, dToolDiam)
double dTipLen ;
LuaCheckParam( L, 3, dTipLen)
double dTipDiam ;
LuaCheckParam( L, 4, dTipDiam)
double dToolCornR ;
LuaCheckParam( L, 5, dToolCornR)
LuaClearStack( L) ;
// assegno dati utensile avanzato per Collision Avoidance
bool bOk = ExeCAvSetAdvTool( dToolLen, dToolDiam, dTipLen, dTipDiam, dToolCornR) ;
// restituisco il risultato
LuaSetParam( L, bOk) ;
return 1 ;
}
//-------------------------------------------------------------------------------
static int
LuaCAvSetSawTool( lua_State* L)
{
// 5 parametri : dToolLen, dToolDiam, dThickness, dStemDiam, dToolCornR
double dToolLen ;
LuaCheckParam( L, 1, dToolLen)
double dToolDiam ;
LuaCheckParam( L, 2, dToolDiam)
double dThickness ;
LuaCheckParam( L, 3, dThickness)
double dStemDiam ;
LuaCheckParam( L, 4, dStemDiam)
double dToolCornR ;
LuaCheckParam( L, 5, dToolCornR)
LuaClearStack( L) ;
// assegno dati utensile lama per Collision Avoidance
bool bOk = ExeCAvSetSawTool( dToolLen, dToolDiam, dThickness, dStemDiam, dToolCornR) ;
// restituisco il risultato
LuaSetParam( L, bOk) ;
return 1 ;
}
//-------------------------------------------------------------------------------
static int
LuaCAvSetGenTool( lua_State* L)
{
// 1 parametro : ToolSectId
int nToolSectId ;
LuaCheckParam( L, 1, nToolSectId)
LuaClearStack( L) ;
// assegno dati utensile generico per Collision Avoidance
bool bOk = ExeCAvSetGenTool( nToolSectId) ;
// restituisco il risultato
LuaSetParam( L, bOk) ;
return 1 ;
}
//-------------------------------------------------------------------------------
static int
LuaCAvGetToolOutline( lua_State* L)
{
// 1 o 2 parametri : nDestGrpId [, bApprox]
int nDestGrpId ;
LuaCheckParam( L, 1, nDestGrpId)
bool bApprox = false ;
LuaGetParam( L, 2, bApprox) ;
LuaClearStack( L) ;
// recupero profilo dell'utensile per Collision Avoidance
int nId = ExeCAvGetToolOutline( nDestGrpId, bApprox) ;
// restituisco il risultato
LuaSetParam( L, nId) ;
return 1 ;
}
//-------------------------------------------------------------------------------
static int
LuaCAvToolPosBox( lua_State* L)
{
// 4 parametri : ptP, vtAx, b3Box, vtMove
Point3d ptP ;
LuaCheckParam( L, 1, ptP)
Vector3d vtAx ;
LuaCheckParam( L, 2, vtAx)
BBox3d b3Box ;
LuaCheckParam( L, 3, b3Box)
Vector3d vtMove ;
LuaCheckParam( L, 4, vtMove)
LuaClearStack( L) ;
// determino il movimento da dare all'utensile per evitare la collisione con il parallelepipedo
double dMove = ExeCAvToolPosBox( ptP, vtAx, b3Box, vtMove) ;
// restituisco il risultato
LuaSetParam( L, dMove) ;
return 1 ;
}
//-------------------------------------------------------------------------------
static int
LuaCAvToolPosStm( lua_State* L)
{
// 4 o 5 parametri : ptP, vtAx, nSurfTmId, vtMove [, nRefType]
Point3d ptP ;
LuaCheckParam( L, 1, ptP)
Vector3d vtAx ;
LuaCheckParam( L, 2, vtAx)
int nSurfTmId ;
LuaCheckParam( L, 3, nSurfTmId)
Vector3d vtMove ;
LuaCheckParam( L, 4, vtMove)
int nRefType = RTY_DEFAULT ;
LuaGetParam( L, 5, nRefType) ;
LuaClearStack( L) ;
// determino il movimento da dare all'utensile per evitare la collisione con la superficie
double dMove = ExeCAvToolPosStm( ptP, vtAx, nSurfTmId, vtMove, nRefType) ;
// restituisco il risultato
LuaSetParam( L, dMove) ;
return 1 ;
}
//-------------------------------------------------------------------------------
static int
LuaCAvToolPathStm( lua_State* L)
{
// 5 o 6 parametri : nCrvId, vtAx, nSurfTmId, vtMove, dLinTol [, nRefType]
int nCrvId ;
LuaCheckParam( L, 1, nCrvId)
Vector3d vtAx ;
LuaCheckParam( L, 2, vtAx)
int nSurfTmId ;
LuaCheckParam( L, 3, nSurfTmId)
Vector3d vtMove ;
LuaCheckParam( L, 4, vtMove)
double dLinTol ;
LuaCheckParam( L, 5, dLinTol)
int nRefType = RTY_DEFAULT ;
LuaGetParam( L, 6, nRefType) ;
LuaClearStack( L) ;
// determino il movimento da dare al percorso utensile per evitare la collisione con la superficie
bool bOk = ExeCAvToolPathStm( nCrvId, vtAx, nSurfTmId, vtMove, dLinTol, nRefType) ;
// restituisco il risultato
LuaSetParam( L, bOk) ;
return 1 ;
}
//-------------------------------------------------------------------------------
bool
LuaInstallCAvTool( LuaMgr& luaMgr)
{
bool bOk = ( &luaMgr != nullptr) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtCAvSetStdTool", LuaCAvSetStdTool) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtCAvSetAdvTool", LuaCAvSetAdvTool) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtCAvSetSawTool", LuaCAvSetSawTool) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtCAvSetGenTool", LuaCAvSetGenTool) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtCAvGetToolOutline", LuaCAvGetToolOutline) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtCAvToolPosBox", LuaCAvToolPosBox) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtCAvToolPosStm", LuaCAvToolPosStm) ;
bOk = bOk && luaMgr.RegisterFunction( "EgtCAvToolPathStm", LuaCAvToolPathStm) ;
return bOk ;
}