From 2cd376bbd88d934bc77d4eaed24ed3a492fec58b Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Wed, 27 Mar 2024 16:20:57 +0100 Subject: [PATCH] EgtInterface 2.6c3 : - aggiunta interfaccia EgtGetCalcAnglesEx - modificate interfacce EgtGetCalcPositions, EgtGetCalcTipFromPositions e EgtGetCalcToolDirFromAngles. --- API_MachMgr.cpp | 87 ++++++++++++++++++++++++++++++++++++------------ EgtInterface.rc | Bin 11718 -> 11718 bytes 2 files changed, 66 insertions(+), 21 deletions(-) diff --git a/API_MachMgr.cpp b/API_MachMgr.cpp index d7d32a9..c12410d 100644 --- a/API_MachMgr.cpp +++ b/API_MachMgr.cpp @@ -2123,40 +2123,85 @@ __stdcall EgtGetCalcAngles( const double vtDirT[3], const double vtDirA[3], //----------------------------------------------------------------------------- BOOL -__stdcall EgtGetCalcPositions( const double ptP[3], double dAngA, double dAngB, - int* pnStat, double* pdX, double* pdY, double* pdZ) +__stdcall EgtGetCalcAnglesEx( const double vtDirT[3], const double vtDirA[3], + int* pnStat, double*& vAngs1, double*& vAngs2, int* pnCount) { - if ( ptP == nullptr || - pnStat == nullptr || pdX == nullptr || pdY == nullptr || pdZ == nullptr) + if ( vtDirT == nullptr || vtDirA == nullptr || + pnStat == nullptr || pnCount == nullptr || &vAngs1 == nullptr || &vAngs2 == nullptr) return FALSE ; - return ( ExeGetCalcPositions( ptP, dAngA, dAngB, *pnStat, *pdX, *pdY, *pdZ) ? TRUE : FALSE) ; -} - -//----------------------------------------------------------------------------- -BOOL -__stdcall EgtGetCalcTipFromPositions( double dX, double dY, double dZ, double dAngA, double dAngB, - BOOL bBottom, double ptTip[3]) -{ - Point3d ptTmp ; - if ( ! ExeGetCalcTipFromPositions( dX, dY, dZ, dAngA, dAngB, ( bBottom != FALSE), ptTmp)) + DBLVECTOR vA1, vA2 ; + if ( ! ExeGetCalcAngles( vtDirT, vtDirA, *pnStat, vA1, vA2) || vA1.size() != vA2.size()) return FALSE ; - // ritorno i dati - if ( ptTip != nullptr) - VEC_FROM_3D( ptTip, ptTmp) ; + // restituzione vettori angoli + int nDim = int( vA1.size()) ; + if ( nDim == 0) { + vAngs1 = nullptr ; + vAngs2 = nullptr ; + } + else { + vAngs1 = (double*) malloc( nDim * sizeof( double)) ; + if ( vAngs1 == nullptr) + return FALSE ; + vAngs2 = (double*) malloc( nDim * sizeof( double)) ; + if ( vAngs2 == nullptr) { + free( vAngs1) ; + return FALSE ; + } + for ( int i = 0 ; i < nDim ; ++ i) { + vAngs1[i] = vA1[i] ; + vAngs2[i] = vA2[i] ; + } + } + *pnCount = nDim ; return TRUE ; } //----------------------------------------------------------------------------- BOOL -__stdcall EgtGetCalcToolDirFromAngles( double dAngA, double dAngB, double vtDir[3]) +__stdcall EgtGetCalcPositions( const double ptP[3], int nCount, const double dAngs[], + int* pnStat, double* pdX, double* pdY, double* pdZ) { - DBLVECTOR vAng( 2) ; vAng[0] = dAngA ; vAng[1] = dAngB ; + if ( ptP == nullptr || dAngs == nullptr || + pnStat == nullptr || pdX == nullptr || pdY == nullptr || pdZ == nullptr) + return FALSE ; + DBLVECTOR vAng ; + for ( int i = 0 ; i < nCount ; ++i) + vAng.push_back( dAngs[i]) ; + return ( ExeGetCalcPositions( ptP, vAng, *pnStat, *pdX, *pdY, *pdZ) ? TRUE : FALSE) ; +} + +//----------------------------------------------------------------------------- +BOOL +__stdcall EgtGetCalcTipFromPositions( double dX, double dY, double dZ, int nCount, const double dAngs[], + BOOL bBottom, double ptTip[3]) +{ + if ( dAngs == nullptr || ptTip == nullptr) + return FALSE ; + DBLVECTOR vAng ; + for ( int i = 0 ; i < nCount ; ++i) + vAng.push_back( dAngs[i]) ; + Point3d ptTmp ; + if ( ! ExeGetCalcTipFromPositions( dX, dY, dZ, vAng, ( bBottom != FALSE), ptTmp)) + return FALSE ; + // ritorno i dati + VEC_FROM_3D( ptTip, ptTmp) ; + return TRUE ; +} + +//----------------------------------------------------------------------------- +BOOL +__stdcall EgtGetCalcToolDirFromAngles( int nCount, const double dAngs[], double vtDir[3]) +{ + if ( dAngs == nullptr || vtDir == nullptr) + return FALSE ; + DBLVECTOR vAng ; + for ( int i = 0 ; i < nCount ; ++i) + vAng.push_back( dAngs[i]) ; Vector3d vtTmp ; if ( ! ExeGetCalcToolDirFromAngles( vAng, vtTmp)) return FALSE ; // ritorno i dati - if ( vtDir != nullptr) - VEC_FROM_3D( vtDir, vtTmp) ; + VEC_FROM_3D( vtDir, vtTmp) ; return TRUE ; } diff --git a/EgtInterface.rc b/EgtInterface.rc index f6003a8968781e88b1a2d5eaaea047a7731cafc3..923734b4355709b3892a32f766bd2ce516bb0009 100644 GIT binary patch delta 111 zcmX>WeJpyzFE&Qw%^&$rGEF|hS;uHR`Jtfh<^rw;7OzIAO+TQQ4Xt~E@c}o07yS5wg3PC delta 111 zcmX>WeJpyzFE&P_%^&$rGEF|hS;uHJ`Jtfh<^rw;7OzIAO+TQQ4Xt~E@c}o07g?Nt^fc4