//---------------------------------------------------------------------------- // 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 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( "EgtCAvToolPosStm", LuaCAvToolPosStm) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCAvToolPathStm", LuaCAvToolPathStm) ; return bOk ; }