//---------------------------------------------------------------------------- // EgalTech 2016-2016 //---------------------------------------------------------------------------- // File : MachineLuaCL.cpp Data : 26.04.16 Versione : 1.6p4 // Contenuto : Implementazione gestione macchina : funzioni Lua per CL. // // // // Modifiche : 26.04.16 DS Creazione modulo. // // //---------------------------------------------------------------------------- //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "MachMgr.h" #include "DllMain.h" #include "/EgtDev/Include/EXeExecutor.h" #include "/EgtDev/Include/EGkGeoPoint3d.h" #include "/EgtDev/Include/EGkCurveLine.h" #include "/EgtDev/Include/EGkGeomDB.h" #include "/EgtDev/Include/EGkLuaAux.h" #include "/EgtDev/Include/EGnStringUtils.h" #include "/EgtDev/Include/EGnFileUtils.h" #include "/EgtDev/Include/EgtPointerOwner.h" using namespace std ; //---------------------------------------------------------------------------- int Machine::LuaEmtAddRapidStart( lua_State* L) { // 6 parametri : nPathId, ptP, vtTool, vtCorr, vtAux, nFlag int nPathId ; LuaCheckParam( L, 1, nPathId) Point3d ptP ; LuaCheckParam( L, 2, ptP) Vector3d vtTool ; LuaCheckParam( L, 3, vtTool) Vector3d vtCorr ; LuaCheckParam( L, 4, vtCorr) Vector3d vtAux ; LuaCheckParam( L, 5, vtAux) int nFlag ; LuaCheckParam( L, 6, nFlag) LuaClearStack( L) ; // verifico ci sia una macchina attiva valida if ( m_pMchLua == nullptr || m_pMchLua->m_pMchMgr == nullptr || m_pMchLua->m_pGeomDB == nullptr) return luaL_error( L, " Unknown Machine") ; // creo oggetto punto per DB geometrico PtrOwner pGP( CreateGeoPoint3d()) ; bool bOk = ! IsNull( pGP) ; // assegno le coordinate del punto bOk = bOk && pGP->Set( ptP) ; // inserisco l'oggetto nel DB geometrico int nId = ( bOk ? m_pMchLua->m_pGeomDB->AddGeoObj( GDB_ID_NULL, nPathId, Release( pGP)) : GDB_ID_NULL) ; bOk = bOk && ( nId != GDB_ID_NULL) ; // creo oggetto dati Cam PtrOwner pCam( new( nothrow) CamData) ; bOk = bOk && ! IsNull( pCam) ; if ( bOk) { // assegno valori pCam->SetMoveType( 0) ; pCam->SetToolDir( vtTool) ; pCam->SetCorrDir( vtCorr) ; pCam->SetAuxDir( vtAux) ; pCam->SetEndPoint( ptP) ; pCam->SetFeed( 0) ; pCam->SetFlag( nFlag) ; // associo questo oggetto a quello geometrico m_pMchLua->m_pGeomDB->SetUserObj( nId, Release( pCam)) ; } // assegno risultato if ( bOk) LuaSetParam( L, nId) ; else LuaSetParam( L) ; return 1 ; } //---------------------------------------------------------------------------- int Machine::LuaEmtAddRapidMove( lua_State* L) { // 7 parametri : nPathId, ptIni, ptFin, vtTool, vtCorr, vtAux, nFlag int nPathId ; LuaCheckParam( L, 1, nPathId) Point3d ptIni ; LuaCheckParam( L, 2, ptIni) Point3d ptFin ; LuaCheckParam( L, 3, ptFin) Vector3d vtTool ; LuaCheckParam( L, 4, vtTool) Vector3d vtCorr ; LuaCheckParam( L, 5, vtCorr) Vector3d vtAux ; LuaCheckParam( L, 6, vtAux) int nFlag ; LuaCheckParam( L, 7, nFlag) LuaClearStack( L) ; // verifico ci sia una macchina attiva valida if ( m_pMchLua == nullptr || m_pMchLua->m_pMchMgr == nullptr || m_pMchLua->m_pGeomDB == nullptr) return luaL_error( L, " Unknown Machine") ; // creo oggetto linea per DB geometrico PtrOwner pLine( CreateCurveLine()) ; bool bOk = ! IsNull( pLine) ; // assegno gli estremi della linea bOk = bOk && pLine->Set( ptIni, ptFin) ; // inserisco l'oggetto nel DB geometrico int nId = ( bOk ? m_pMchLua->m_pGeomDB->AddGeoObj( GDB_ID_NULL, nPathId, Release( pLine)) : GDB_ID_NULL) ; bOk = bOk && ( nId != GDB_ID_NULL) ; // creo oggetto dati Cam PtrOwner pCam( new( nothrow) CamData) ; bOk = bOk && ! IsNull( pCam) ; if ( bOk) { // assegno valori pCam->SetMoveType( 0) ; pCam->SetToolDir( vtTool) ; pCam->SetCorrDir( vtCorr) ; pCam->SetAuxDir( vtAux) ; pCam->SetEndPoint( ptFin) ; pCam->SetFeed( 0) ; pCam->SetFlag( nFlag) ; // associo questo oggetto a quello geometrico m_pMchLua->m_pGeomDB->SetUserObj( nId, Release( pCam)) ; } // assegno risultato if ( bOk) LuaSetParam( L, nId) ; else LuaSetParam( L) ; return 1 ; } //---------------------------------------------------------------------------- int Machine::LuaEmtAddLinearMove( lua_State* L) { // 8 parametri : nPathId, ptIni, ptFin, vtTool, vtCorr, vtAux, dFeed, nFlag int nPathId ; LuaCheckParam( L, 1, nPathId) Point3d ptIni ; LuaCheckParam( L, 2, ptIni) Point3d ptFin ; LuaCheckParam( L, 3, ptFin) Vector3d vtTool ; LuaCheckParam( L, 4, vtTool) Vector3d vtCorr ; LuaCheckParam( L, 5, vtCorr) Vector3d vtAux ; LuaCheckParam( L, 6, vtAux) double dFeed ; LuaCheckParam( L, 7, dFeed) int nFlag ; LuaCheckParam( L, 8, nFlag) LuaClearStack( L) ; // verifico ci sia una macchina attiva valida if ( m_pMchLua == nullptr || m_pMchLua->m_pMchMgr == nullptr || m_pMchLua->m_pGeomDB == nullptr) return luaL_error( L, " Unknown Machine") ; // creo oggetto linea per DB geometrico PtrOwner pLine( CreateCurveLine()) ; bool bOk = ! IsNull( pLine) ; // assegno gli estremi della linea bOk = bOk && pLine->Set( ptIni, ptFin) ; // inserisco l'oggetto nel DB geometrico int nId = ( bOk ? m_pMchLua->m_pGeomDB->AddGeoObj( GDB_ID_NULL, nPathId, Release( pLine)) : GDB_ID_NULL) ; bOk = bOk && ( nId != GDB_ID_NULL) ; // creo oggetto dati Cam PtrOwner pCam( new( nothrow) CamData) ; bOk = bOk && ! IsNull( pCam) ; if ( bOk) { // assegno valori pCam->SetMoveType( 1) ; pCam->SetToolDir( vtTool) ; pCam->SetCorrDir( vtCorr) ; pCam->SetAuxDir( vtAux) ; pCam->SetEndPoint( ptFin) ; pCam->SetFeed( dFeed) ; pCam->SetFlag( nFlag) ; // associo questo oggetto a quello geometrico m_pMchLua->m_pGeomDB->SetUserObj( nId, Release( pCam)) ; } // assegno risultato if ( bOk) LuaSetParam( L, nId) ; else LuaSetParam( L) ; return 1 ; } //---------------------------------------------------------------------------- int Machine::LuaEmtGetAxesPos( lua_State* L) { // 1 parametri : nClEntId int nClEntId ; LuaCheckParam( L, 1, nClEntId) LuaClearStack( L) ; // verifico ci sia una macchina attiva valida if ( m_pMchLua == nullptr || m_pMchLua->m_pMchMgr == nullptr || m_pMchLua->m_pGeomDB == nullptr) return luaL_error( L, " Unknown Machine") ; // recupero l'oggetto CamData const CamData* pCamData = GetCamData( m_pMchLua->m_pGeomDB->GetUserObj( nClEntId)) ; bool bOk = ( pCamData != nullptr) ; bOk = bOk && pCamData->GetAxesStatus() == CamData::AS_OK ; if ( bOk) { DBLVECTOR AxesVal = pCamData->GetAxesVal() ; LuaSetParam( L, AxesVal) ; } else LuaSetParam( L) ; return 1 ; }