//---------------------------------------------------------------------------- // EgalTech 2016-2017 //---------------------------------------------------------------------------- // File : LUA_GdbModifyVol.cpp Data : 09.03.17 Versione : 1.8c4 // Contenuto : Funzioni di modifica dei solidi per LUA. // // // // Modifiche : 27.10.16 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" using namespace std ; //------------------------------------------------------------------------------- static int LuaExplodeVolume( lua_State* L) { // 1 parametro : Id int nId ; LuaCheckParam( L, 1, nId) LuaClearStack( L) ; // esplosione del solido int nCount ; int nFirstId = ExeExplodeVolume( nId, &nCount) ; if ( nFirstId != GDB_ID_NULL) LuaSetParam( L, nFirstId) ; else LuaSetParam( L) ; LuaSetParam( L, nCount) ; return 2 ; } //---------------------------------------------------------------------------- static int LuaVolZmapChangeResolution( lua_State* L) { // 2 parametri : Id, nNewRes int nId ; LuaCheckParam( L, 1, nId) int nNewRes ; LuaCheckParam( L, 2, nNewRes) LuaClearStack( L) ; // cambio la risoluzione bool bOk = ExeVolZmapChangeResolution( nId, nNewRes) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- static int LuaVolZmapSetShowEdges( lua_State* L) { // 2 parametri : Id, bShow int nId ; LuaCheckParam( L, 1, nId) bool bShow ; LuaCheckParam( L, 2, bShow) ; LuaClearStack( L) ; // imposto flag visualizzazione spigoli vivi bool bOk = ExeVolZmapSetShowEdges( nId, bShow) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //---------------------------------------------------------------------------- static int LuaRemoveVolZmapPart( lua_State* L) { // 2 parametri : Id, nPart(0-based) int nId ; LuaCheckParam( L, 1, nId) int nPart ; LuaCheckParam( L, 2, nPart) LuaClearStack( L) ; // rimuovo la parte indicata bool bOk = ExeRemoveVolZmapPart( nId, nPart) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //---------------------------------------------------------------------------- static int LuaVolZmapSetStdTool( lua_State* L) { // 6 o 7 parametri : vIds, sToolName, dLen, dDiam, dCornR, dCutterH [, nFlag] INTVECTOR vIds ; LuaCheckParam( L, 1, vIds) string sToolName ; LuaCheckParam( L, 2, sToolName) double dLen ; LuaCheckParam( L, 3, dLen) double dDiam ; LuaCheckParam( L, 4, dDiam) double dCornR ; LuaCheckParam( L, 5, dCornR) double dCutterH ; LuaCheckParam( L, 6, dCutterH) int nFlag = 1 ; LuaGetParam( L, 7, nFlag) ; LuaClearStack( L) ; // imposto utensile standard a Zmap indicati bool bOk = ExeVolZmapSetStdTool( vIds, sToolName, dLen, dDiam, dCornR, dCutterH, nFlag, true) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //---------------------------------------------------------------------------- static int LuaVolZmapSetAdvTool( lua_State* L) { // 8 o 9 parametri : vIds, sToolName, dLen, dDiam, dTipLen, dTipDiam, dCornR, dCutterH [, nFlag] INTVECTOR vIds ; LuaCheckParam( L, 1, vIds) string sToolName ; LuaCheckParam( L, 2, sToolName) double dLen ; LuaCheckParam( L, 3, dLen) double dDiam ; LuaCheckParam( L, 4, dDiam) double dTipLen ; LuaCheckParam( L, 5, dTipLen) double dTipDiam ; LuaCheckParam( L, 6, dTipDiam) double dCornR ; LuaCheckParam( L, 7, dCornR) double dCutterH ; LuaCheckParam( L, 8, dCutterH) int nFlag = 1 ; LuaGetParam( L, 9, nFlag) ; LuaClearStack( L) ; // imposto utensile avanzato a Zmap indicati bool bOk = ExeVolZmapSetAdvTool( vIds, sToolName, dLen, dDiam, dTipLen, dTipDiam, dCornR, dCutterH, nFlag, true) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //---------------------------------------------------------------------------- static int LuaVolZmapSetSawTool( lua_State* L) { // 7 o 8 parametri : vIds, sToolName, dLen, dDiam, dThick, dStemDiam, dCornR [, nFlag] INTVECTOR vIds ; LuaCheckParam( L, 1, vIds) string sToolName ; LuaCheckParam( L, 2, sToolName) double dLen ; LuaCheckParam( L, 3, dLen) double dDiam ; LuaCheckParam( L, 4, dDiam) double dThick ; LuaCheckParam( L, 5, dThick) double dStemDiam ; LuaCheckParam( L, 6, dStemDiam) double dCornR ; LuaCheckParam( L, 7, dCornR) int nFlag = 1 ; LuaGetParam( L, 8, nFlag) ; LuaClearStack( L) ; // imposto utensile avanzato a Zmap indicati bool bOk = ExeVolZmapSetSawTool( vIds, sToolName, dLen, dDiam, dThick, dStemDiam, dCornR, nFlag, true) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //---------------------------------------------------------------------------- static int LuaVolZmapSetGenTool( lua_State* L) { // 3 o 4 parametri : vIds, sToolName, ToolSectId [, nFlag] INTVECTOR vIds ; LuaCheckParam( L, 1, vIds) string sToolName ; LuaCheckParam( L, 2, sToolName) int nToolSectId ; LuaCheckParam( L, 3, nToolSectId) int nFlag = 1 ; LuaGetParam( L, 4, nFlag) ; LuaClearStack( L) ; // imposto utensile generico a Zmap indicati bool bOk = ExeVolZmapSetGenTool( vIds, sToolName, nToolSectId, nFlag, true) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //---------------------------------------------------------------------------- static int LuaVolZmapSetMortiserTool( lua_State* L) { // 6 o 7 parametri : Id, sToolName, dLen, dWidth, dThick, dCornR [, nFlag] INTVECTOR vIds ; LuaCheckParam( L, 1, vIds) string sToolName ; LuaCheckParam( L, 2, sToolName) double dLen ; LuaCheckParam( L, 3, dLen) double dWidth ; LuaCheckParam( L, 4, dWidth) double dThick ; LuaCheckParam( L, 5, dThick) double dCornR ; LuaCheckParam( L, 6, dCornR) int nFlag = 1 ; LuaGetParam( L, 7, nFlag) ; LuaClearStack( L) ; // imposto mortasatrice a Zmap indicati bool bOk = ExeVolZmapSetMortiserTool( vIds, sToolName, dLen, dWidth, dThick, dCornR, nFlag, true) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //---------------------------------------------------------------------------- static int LuaVolZmapSetChiselTool( lua_State* L) { // 5 o 6 parametri : vIds, sToolName, dLen, dWidth, dThick [, nFlag] INTVECTOR vIds ; LuaCheckParam( L, 1, vIds) string sToolName ; LuaCheckParam( L, 2, sToolName) double dLen ; LuaCheckParam( L, 3, dLen) double dWidth ; LuaCheckParam( L, 4, dWidth) double dThick ; LuaCheckParam( L, 5, dThick) int nFlag = 1 ; LuaGetParam( L, 6, nFlag) ; LuaClearStack( L) ; // imposto scalpello a Zmap indicati bool bOk = ExeVolZmapSetChiselTool( vIds, sToolName, dLen, dWidth, dThick, nFlag, true) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //---------------------------------------------------------------------------- static int LuaVolZmapSetAdditiveTool( lua_State* L) { // 5 o 6 parametri : vIds, sToolName, dLen, dDiam, dCornR [, nFlag] INTVECTOR vIds ; LuaCheckParam( L, 1, vIds) string sToolName ; LuaCheckParam( L, 2, sToolName) double dLen ; LuaCheckParam( L, 3, dLen) double dDiam ; LuaCheckParam( L, 4, dDiam) double dCornR ; LuaCheckParam( L, 5, dCornR) int nFlag = 1 ; LuaGetParam( L, 6, nFlag) ; LuaClearStack( L) ; // imposto utensile additivo a Zmap indicati bool bOk = ExeVolZmapSetAdditiveTool( vIds, sToolName, dLen, dDiam, dCornR, nFlag, true) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //---------------------------------------------------------------------------- static int LuaVolZmapResetTool( lua_State* L) { // 1 parametro : vIds INTVECTOR vIds ; LuaCheckParam( L, 1, vIds) LuaClearStack( L) ; // reset utensile a Zmap indicati bool bOk = ExeVolZmapResetTools( vIds) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //---------------------------------------------------------------------------- static int LuaVolZmapGetToolOutline( lua_State* L) { // 2 o 3 parametri : nId, nDestGrpId [, bApprox] int nId ; LuaCheckParam( L, 1, nId) int nDestGrpId ; LuaCheckParam( L, 2, nDestGrpId) bool bApprox = false ; LuaGetParam( L, 3, bApprox) ; LuaClearStack( L) ; // recupero il profilo dell'utensile associato a Zmap indicato int nNewId = ExeVolZmapGetToolOutline( nId, nDestGrpId, bApprox) ; // restituisco il risultato if ( nNewId != GDB_ID_NULL) LuaSetParam( L, nNewId) ; else LuaSetParam( L) ; return 1 ; } //---------------------------------------------------------------------------- static int LuaVolZmapMillingStep( lua_State* L) { // 5 o 6 o 7 o 8 parametri : nId, ptPs, vtDs [, vtAs], ptPe, vtDe [, vtAe], [, nRefType] int n = lua_gettop( L) ; if ( n == 5 || n == 6) { int nId ; LuaCheckParam( L, 1, nId) Point3d ptPs ; LuaCheckParam( L, 2, ptPs) Vector3d vtDs ; LuaCheckParam( L, 3, vtDs) Point3d ptPe ; LuaCheckParam( L, 4, ptPe) Vector3d vtDe ; LuaCheckParam( L, 5, vtDe) int nRefType = RTY_DEFAULT ; LuaGetParam( L, 6, nRefType) ; LuaClearStack( L) ; // eseguo movimento di fresatura con l'utensile già associato a Zmap bool bOk = ExeVolZmapMillingStep( nId, ptPs, vtDs, ptPe, vtDe, nRefType) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } else { int nId ; LuaCheckParam( L, 1, nId) Point3d ptPs ; LuaCheckParam( L, 2, ptPs) Vector3d vtDs ; LuaCheckParam( L, 3, vtDs) Vector3d vtAs ; LuaCheckParam( L, 4, vtAs) Point3d ptPe ; LuaCheckParam( L, 5, ptPe) Vector3d vtDe ; LuaCheckParam( L, 6, vtDe) Vector3d vtAe ; LuaCheckParam( L, 7, vtAe) int nRefType = RTY_DEFAULT ; LuaGetParam( L, 8, nRefType) ; LuaClearStack( L) ; // eseguo movimento di fresatura con l'utensile già associato a Zmap bool bOk = ExeVolZmapMillingStep( nId, ptPs, vtDs, vtAs, ptPe, vtDe, vtAe, nRefType) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } } //---------------------------------------------------------------------------- static int LuaCutVolZmapPlane( lua_State* L) { // 3 o 4 parametri : Id, ptOn, vtN [, nRefType] int nId ; LuaCheckParam( L, 1, nId) Point3d ptOn ; LuaCheckParam( L, 2, ptOn) Vector3d vtN ; LuaCheckParam( L, 3, vtN) int nRefType = RTY_DEFAULT ; LuaGetParam( L, 4, nRefType) ; LuaClearStack( L) ; // taglio la superficie con ilpiano bool bOk = ExeCutVolZmapPlane( nId, ptOn, vtN, nRefType) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ; } //------------------------------------------------------------------------------- bool LuaInstallGdbModifyVol( LuaMgr& luaMgr) { bool bOk = ( &luaMgr != nullptr) ; bOk = bOk && luaMgr.RegisterFunction( "EgtExplodeVolume", LuaExplodeVolume) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapChangeResolution", LuaVolZmapChangeResolution) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapSetShowEdges", LuaVolZmapSetShowEdges) ; bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveVolZmapPart", LuaRemoveVolZmapPart) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapSetStdTool", LuaVolZmapSetStdTool) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapSetAdvTool", LuaVolZmapSetAdvTool) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapSetSawTool", LuaVolZmapSetSawTool) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapSetGenTool", LuaVolZmapSetGenTool) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapSetMortiserTool", LuaVolZmapSetMortiserTool) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapSetChiselTool", LuaVolZmapSetChiselTool) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapSetAdditiveTool", LuaVolZmapSetAdditiveTool) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapResetTool", LuaVolZmapResetTool) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapGetToolOutline", LuaVolZmapGetToolOutline) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapMillingStep", LuaVolZmapMillingStep) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCutVolZmapPlane", LuaCutVolZmapPlane) ; return bOk ; }