1a961a19af
- aggiunta funzione Exe e Lua CAvToolPosBox - agli import aggiunto log.
205 lines
6.8 KiB
C++
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 ;
|
|
}
|