EgtExecutor 2.2k3 :

- aggiunta ExeGetCalcAngles con vettore angoli da calcolare
- aggiunte ExeGetCalcPositions e ExeGetCalcTipFromPositions con vettore angoli calcolati
- la funzione lua EgtGetCalcPositions può ricevere da 1 a 4 angoli
- la funzione lua LuaGetCalcTipFromPositions può ricevere da 1 a 4 angoli.
This commit is contained in:
Dario Sassi
2020-11-14 08:11:33 +00:00
parent c207175e7b
commit d44e8d5239
3 changed files with 57 additions and 15 deletions
+34 -1
View File
@@ -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)
BIN
View File
Binary file not shown.
+23 -14
View File
@@ -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) ;