From d44e8d52393af06746cb7a37aea587e2fd24d0ca Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Sat, 14 Nov 2020 08:11:33 +0000 Subject: [PATCH] =?UTF-8?q?EgtExecutor=202.2k3=20:=20-=20aggiunta=20ExeGet?= =?UTF-8?q?CalcAngles=20con=20vettore=20angoli=20da=20calcolare=20-=20aggi?= =?UTF-8?q?unte=20ExeGetCalcPositions=20e=20ExeGetCalcTipFromPositions=20c?= =?UTF-8?q?on=20vettore=20angoli=20calcolati=20-=20la=20funzione=20lua=20E?= =?UTF-8?q?gtGetCalcPositions=20pu=C3=B2=20ricevere=20da=201=20a=204=20ang?= =?UTF-8?q?oli=20-=20la=20funzione=20lua=20LuaGetCalcTipFromPositions=20pu?= =?UTF-8?q?=C3=B2=20ricevere=20da=201=20a=204=20angoli.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EXE_MachMgr.cpp | 35 ++++++++++++++++++++++++++++++++++- EgtExecutor.rc | Bin 16184 -> 16184 bytes LUA_MachMgr.cpp | 37 +++++++++++++++++++++++-------------- 3 files changed, 57 insertions(+), 15 deletions(-) diff --git a/EXE_MachMgr.cpp b/EXE_MachMgr.cpp index 02c16f9..0f468b8 100644 --- a/EXE_MachMgr.cpp +++ b/EXE_MachMgr.cpp @@ -3054,6 +3054,17 @@ ExeGetCalcAngles( const Vector3d& vtDirT, const Vector3d& vtDirA, return pMachMgr->GetCalcAngles( vtDirT, vtDirA, nStat, dAngA1, dAngB1, dAngA2, dAngB2) ; } +//----------------------------------------------------------------------------- +bool +ExeGetCalcAngles( const Vector3d& vtDirT, const Vector3d& vtDirA, + int& nStat, DBLVECTOR& vAng1, DBLVECTOR& vAng2) +{ + IMachMgr* pMachMgr = GetCurrMachMgr() ; + VERIFY_MACHMGR( pMachMgr, false) + // calcolo gli angoli macchina dalle direzioni fresa e ausiliaria passate + return pMachMgr->GetCalcAngles( vtDirT, vtDirA, nStat, vAng1, vAng2) ; +} + //----------------------------------------------------------------------------- bool ExeGetCalcPositions( const Point3d& ptP, double dAngA, double dAngB, @@ -3061,10 +3072,21 @@ ExeGetCalcPositions( const Point3d& ptP, double dAngA, double dAngB, { IMachMgr* pMachMgr = GetCurrMachMgr() ; VERIFY_MACHMGR( pMachMgr, false) - // calcolo gli angoli macchina dalla direzione fresa passata + // calcolo gli assi lineari macchina dalla posizione e dagli assi rotanti return pMachMgr->GetCalcPositions( ptP, dAngA, dAngB, nStat, dX, dY, dZ) ; } +//----------------------------------------------------------------------------- +bool +ExeGetCalcPositions( const Point3d& ptP, const DBLVECTOR& vAng, + int& nStat, double& dX, double& dY, double& dZ) +{ + IMachMgr* pMachMgr = GetCurrMachMgr() ; + VERIFY_MACHMGR( pMachMgr, false) + // calcolo gli assi lineari macchina dalla posizione e dagli assi rotanti + return pMachMgr->GetCalcPositions( ptP, vAng, nStat, dX, dY, dZ) ; +} + //----------------------------------------------------------------------------- bool ExeGetCalcTipFromPositions( double dX, double dY, double dZ, double dAngA, double dAngB, @@ -3076,6 +3098,17 @@ ExeGetCalcTipFromPositions( double dX, double dY, double dZ, double dAngA, doubl return pMachMgr->GetCalcTipFromPositions( dX, dY, dZ, dAngA, dAngB, false, bBottom, ptTip) ; } +//----------------------------------------------------------------------------- +bool +ExeGetCalcTipFromPositions( double dX, double dY, double dZ, const DBLVECTOR& vAng, + bool bBottom, Point3d& ptTip) +{ + IMachMgr* pMachMgr = GetCurrMachMgr() ; + VERIFY_MACHMGR( pMachMgr, false) + // calcolo il tip utensile dagli assi macchina + return pMachMgr->GetCalcTipFromPositions( dX, dY, dZ, vAng, false, bBottom, ptTip) ; +} + //----------------------------------------------------------------------------- bool ExeGetCalcToolDirFromAngles( const DBLVECTOR& vAng, Vector3d& vtDir) diff --git a/EgtExecutor.rc b/EgtExecutor.rc index efb388fc4adbd9b354b8910687173a2403f4b0fe..dd902e292064b6d21240b75668adc654e327fbbe 100644 GIT binary patch delta 97 zcmdl{x1(;uA2vqg%@@V4Gflq2na5~6Ignd-a{*Tk3sCf++-0W82LxfF21;&>n->Y| cF@rU@0x76sKgP|Iq`|@mV0J#+(IsgCw delta 97 zcmdl{x1(;uA2vqA%@@V4Gflq2na5~2Ignd-a{*Tk3sCf++-0W82LxfF21;&>n->Y| cF@rU@0x76sKgP|Iq`|@mV0JaGqDgXcg diff --git a/LUA_MachMgr.cpp b/LUA_MachMgr.cpp index 19741c0..372d4ce 100644 --- a/LUA_MachMgr.cpp +++ b/LUA_MachMgr.cpp @@ -3312,7 +3312,7 @@ LuaGetCalcAngles( lua_State* L) Vector3d vtDirA ; LuaGetParam( L, 2, vtDirA) ; LuaClearStack( L) ; - // imposto la tavola corrente per il calcolo + // calcolo gli angoli macchina dalle direzioni fresa e ausiliaria int nStat ; double dAngA1 ; double dAngB1 ; double dAngA2 ; double dAngB2 ; bool bOk = ExeGetCalcAngles( vtDirT, vtDirA, nStat, dAngA1, dAngB1, dAngA2, dAngB2) ; // restituisco il risultato @@ -3335,17 +3335,21 @@ LuaGetCalcAngles( lua_State* L) static int LuaGetCalcPositions( lua_State* L) { - // 3 parametri : ptP, dAngA, dAngB + // da 2 a 5 parametri : ptP, dAngA [, dAngB] [, dAngC] [, dAngD] Point3d ptP ; LuaCheckParam( L, 1, ptP) - double dAngA ; - LuaCheckParam( L, 2, dAngA) - double dAngB ; - LuaCheckParam( L, 3, dAngB) + DBLVECTOR vAng ; + for ( int i = 2 ; i <= 5 ; ++ i) { + double dAng ; + if ( LuaGetParam( L, i, dAng)) + vAng.emplace_back( dAng) ; + else + break ; + } LuaClearStack( L) ; // imposto la tavola corrente per il calcolo int nStat ; double dX ; double dY ; double dZ ; - bool bOk = ExeGetCalcPositions( ptP, dAngA, dAngB, nStat, dX, dY, dZ) ; + bool bOk = ExeGetCalcPositions( ptP, vAng, nStat, dX, dY, dZ) ; // restituisco il risultato if ( bOk) { LuaSetParam( L, bOk) ; @@ -3365,23 +3369,28 @@ LuaGetCalcPositions( lua_State* L) static int LuaGetCalcTipFromPositions( lua_State* L) { - // 6 parametri : dX, dY, dZ, dAngA, dAngB, bBottom + // da 5 a 8 parametri : dX, dY, dZ, dAngA [, dAngB] [, dAngC] [, dAngD], bBottom double dX ; LuaCheckParam( L, 1, dX) double dY ; LuaCheckParam( L, 2, dY) double dZ ; LuaCheckParam( L, 3, dZ) - double dAngA ; - LuaCheckParam( L, 4, dAngA) - double dAngB ; - LuaCheckParam( L, 5, dAngB) + DBLVECTOR vAng ; + int i ; + for ( i = 4 ; i <= 7 ; ++ i) { + double dAng ; + if ( LuaGetParam( L, i, dAng)) + vAng.emplace_back( dAng) ; + else + break ; + } bool bBottom ; - LuaCheckParam( L, 6, bBottom) + LuaCheckParam( L, i, bBottom) LuaClearStack( L) ; // calcolo il tip utensile dagli assi macchina Point3d ptTip ; - bool bOk = ExeGetCalcTipFromPositions( dX, dY, dZ, dAngA, dAngB, bBottom, ptTip) ; + bool bOk = ExeGetCalcTipFromPositions( dX, dY, dZ, vAng, bBottom, ptTip) ; // restituisco il risultato if ( bOk) LuaSetParam( L, ptTip) ;