Files
EgtInterface/API_MachMgr.cpp
T
Dario Sassi 369a17a669 EgtInterface 1.6k10 :
- aggiornamento esportazioni.
2015-12-07 08:02:56 +00:00

759 lines
23 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2015-2015
//----------------------------------------------------------------------------
// File : API_MachMgr.cpp Data : 23.03.15 Versione : 1.6c8
// Contenuto : Funzioni Machining Manager per API.
//
//
//
// Modifiche : 23.03.15 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
//--------------------------- Include ----------------------------------------
#include "stdafx.h"
#include "API.h"
#include "/EgtDev/Include/EInAPI.h"
#include "/EgtDev/Include/EXeExecutor.h"
#include "/EgtDev/Include/EgtStringConverter.h"
using namespace std ;
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtInitMachMgr( const wchar_t* wsMachinesDir)
{
return ( ExeInitMachMgr( wstrztoA( wsMachinesDir)) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
// Machines
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtSetCurrMachine( const wchar_t* wsMachineName)
{
return ( ExeSetCurrMachine( wstrztoA( wsMachineName)) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtGetCurrMachineName( wchar_t*& wsMachineName)
{
if ( &wsMachineName == nullptr)
return FALSE ;
string sMachineName ;
if ( ! ExeGetCurrMachineName( sMachineName))
return FALSE ;
wsMachineName = _wcsdup( stringtoW( sMachineName)) ;
return (( wsMachineName == nullptr) ? FALSE : TRUE) ;
}
//-----------------------------------------------------------------------------
// Machining Groups
//-----------------------------------------------------------------------------
int
__stdcall EgtGetMachGroupCount( void)
{
return ExeGetMachGroupCount() ;
}
//-----------------------------------------------------------------------------
int
__stdcall EgtGetFirstMachGroup( void)
{
return ExeGetFirstMachGroup() ;
}
//-----------------------------------------------------------------------------
int
__stdcall EgtGetNextMachGroup( int nId)
{
return ExeGetNextMachGroup( nId) ;
}
//-----------------------------------------------------------------------------
int
__stdcall EgtAddMachGroup( const wchar_t* wsName, const wchar_t* wsMachineName)
{
return ExeAddMachGroup( wstrztoA( wsName), wstrztoA( wsMachineName)) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtRemoveMachGroup( int nMGroupId)
{
return ( ExeRemoveMachGroup( nMGroupId) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtGetMachGroupName( int nMGroupInd, wchar_t*& wsName)
{
if ( &wsName == nullptr)
return FALSE ;
string sName ;
if ( ! ExeGetMachGroupName( nMGroupInd, sName))
return FALSE ;
wsName = _wcsdup( stringtoW( sName)) ;
return (( wsName == nullptr) ? FALSE : TRUE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtGetMachGroupId( const wchar_t* wsName)
{
return ExeGetMachGroupId( wstrztoA( wsName)) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtSetCurrMachGroup( int nMGroupId)
{
return ( ExeSetCurrMachGroup( nMGroupId) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtResetCurrMachGroup( void)
{
return ( ExeResetCurrMachGroup() ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
int
__stdcall EgtGetCurrMachGroup( void)
{
return ExeGetCurrMachGroup() ;
}
//-----------------------------------------------------------------------------
// Raw Parts
//-----------------------------------------------------------------------------
int
__stdcall EgtGetRawPartCount( void)
{
return ExeGetRawPartCount() ;
}
//-----------------------------------------------------------------------------
int
__stdcall EgtGetFirstRawPart( void)
{
return ExeGetFirstRawPart() ;
}
//-----------------------------------------------------------------------------
int
__stdcall EgtGetNextRawPart( int nRawId)
{
return ExeGetNextRawPart( nRawId) ;
}
//-----------------------------------------------------------------------------
int
__stdcall EgtAddRawPart( const double ptOrig[3],
double dLength, double dWidth, double dHeight, const int vCol[4])
{
return ExeAddRawPart( ptOrig, dLength, dWidth, dHeight, vCol) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtModifyRawPart( int nRawId, const double ptOrig[3],
double dLength, double dWidth, double dHeight, const int vCol[4])
{
return ( ExeModifyRawPart( nRawId, ptOrig, dLength, dWidth, dHeight, vCol) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtModifyRawPartSize( int nRawId, double dLength, double dWidth, double dHeight)
{
return ( ExeModifyRawPartSize( nRawId, dLength, dWidth, dHeight) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtModifyRawPartHeight( int nRawId, double dHeight)
{
return ( ExeModifyRawPartHeight( nRawId, dHeight) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtRemoveRawPart( int nRawId)
{
return ( ExeRemoveRawPart( nRawId) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMoveToCornerRawPart( int nRawId, const double ptCorner[3], int nFlag)
{
return ( ExeMoveToCornerRawPart( nRawId, ptCorner, nFlag) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMoveRawPart( int nRawId, const double vtMove[3])
{
return ( ExeMoveRawPart( nRawId, vtMove) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtAddPartToRawPart( int nPartId, const double ptPos[3], int nRawId)
{
return ( ExeAddPartToRawPart( nPartId, ptPos, nRawId) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtRemovePartFromRawPart( int nPartId)
{
return ( ExeRemovePartFromRawPart( nPartId) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
// Table & Fixtures
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtSetTable( const wchar_t* wsTable)
{
return ( ExeSetTable( wstrztoA( wsTable)) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtGetTableRef( int nInd, double ptPos[3])
{
// recupero il punto
Point3d ptTemp ;
if ( ! ExeGetTableRef( nInd, ptTemp))
return FALSE ;
// ritorno il punto
VEC_FROM_3D( ptPos, ptTemp)
return TRUE ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtGetTableArea( int nInd, double ptMin[3], double ptMax[3])
{
// recupero l'identificativo
BBox3d b3Area ;
if ( ! ExeGetTableArea( nInd, b3Area))
return FALSE ;
// ritorno i dati
if ( ptMin != nullptr)
VEC_FROM_3D( ptMin, b3Area.GetMin()) ;
if ( ptMax != nullptr)
VEC_FROM_3D( ptMax, b3Area.GetMax()) ;
return TRUE ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtShowOnlyTable( bool bVal)
{
return ( ExeShowOnlyTable( bVal) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
// Tools DataBase
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbGetToolNewName( const wchar_t* wsName, wchar_t*& wsNewName)
{
if ( &wsNewName == nullptr)
return FALSE ;
string sNewName = wstrztoA( wsName) ;
if ( ! ExeTdbGetToolNewName( sNewName))
return FALSE ;
wsNewName = _wcsdup( stringtoW( sNewName)) ;
return (( wsNewName == nullptr) ? FALSE : TRUE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbAddTool( const wchar_t* wsName, int nType)
{
return ( ExeTdbAddTool( wstrztoA( wsName), nType) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbCopyTool( const wchar_t* wsSource, const wchar_t* wsName)
{
return ( ExeTdbCopyTool( wstrztoA( wsSource), wstrztoA( wsName)) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbRemoveTool( const wchar_t* wsName)
{
return ( ExeTdbRemoveTool( wstrztoA( wsName)) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbGetFirstTool( int nFamily, wchar_t*& wsName, int* pnType)
{
if ( &wsName == nullptr || pnType == nullptr)
return FALSE ;
string sName ;
if ( ! ExeTdbGetFirstTool( nFamily, sName, *pnType))
return FALSE ;
wsName = _wcsdup( stringtoW( sName)) ;
return (( wsName == nullptr) ? FALSE : TRUE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbGetNextTool( int nFamily, wchar_t*& wsName, int* pnType)
{
if ( &wsName == nullptr || pnType == nullptr)
return FALSE ;
string sName ;
if ( ! ExeTdbGetNextTool( nFamily, sName, *pnType))
return FALSE ;
wsName = _wcsdup( stringtoW( sName)) ;
return (( wsName == nullptr) ? FALSE : TRUE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbSetCurrTool( const wchar_t* wsName)
{
return ( ExeTdbSetCurrTool( wstrztoA( wsName)) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbSaveCurrTool( void)
{
return ( ExeTdbSaveCurrTool() ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbIsCurrToolModified( void)
{
return ( ExeTdbIsCurrToolModified() ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbSetCurrToolParamBool( int nType, BOOL bVal)
{
return ( ExeTdbSetCurrToolParam( nType, ( bVal != FALSE)) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbSetCurrToolParamInt( int nType, int nVal)
{
return ( ExeTdbSetCurrToolParam( nType, nVal) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbSetCurrToolParamDouble( int nType, double dVal)
{
return ( ExeTdbSetCurrToolParam( nType, dVal) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbSetCurrToolParamString( int nType, const wchar_t* wsVal)
{
return ( ExeTdbSetCurrToolParam( nType, string( wstrztoA( wsVal))) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbGetCurrToolParamBool( int nType, BOOL* pbVal)
{
if ( pbVal == nullptr)
return FALSE ;
bool bVal ;
if ( ! ExeTdbGetCurrToolParam( nType, bVal))
return FALSE ;
*pbVal = ( bVal ? TRUE : FALSE) ;
return TRUE ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbGetCurrToolParamInt( int nType, int* pnVal)
{
if ( pnVal == nullptr)
return FALSE ;
return ( ExeTdbGetCurrToolParam( nType, *pnVal) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbGetCurrToolParamDouble( int nType, double* pdVal)
{
if ( pdVal == nullptr)
return FALSE ;
return ( ExeTdbGetCurrToolParam( nType, *pdVal) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbGetCurrToolParamString( int nType, wchar_t*& wsVal)
{
if ( &wsVal == nullptr)
return FALSE ;
string sVal ;
if ( ! ExeTdbGetCurrToolParam( nType, sVal))
return FALSE ;
wsVal = _wcsdup( stringtoW( sVal)) ;
return (( wsVal == nullptr) ? FALSE : TRUE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbSave( void)
{
return ( ExeTdbSave() ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbGetToolDir( wchar_t*& wsToolDir)
{
if ( &wsToolDir == nullptr)
return FALSE ;
string sToolDir ;
if ( ! ExeTdbGetToolDir( sToolDir))
return FALSE ;
wsToolDir = _wcsdup( stringtoW( sToolDir)) ;
return (( wsToolDir == nullptr) ? FALSE : TRUE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtTdbGetToolHolderDir( wchar_t*& wsTHolderDir)
{
if ( &wsTHolderDir == nullptr)
return FALSE ;
string sTHolderDir ;
if ( ! ExeTdbGetToolHolderDir( sTHolderDir))
return FALSE ;
wsTHolderDir = _wcsdup( stringtoW( sTHolderDir)) ;
return (( wsTHolderDir == nullptr) ? FALSE : TRUE) ;
}
//-----------------------------------------------------------------------------
// Machiningss DataBase
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbGetMachiningNewName( const wchar_t* wsName, wchar_t*& wsNewName)
{
if ( &wsNewName == nullptr)
return FALSE ;
string sNewName = wstrztoA( wsName) ;
if ( ! ExeMdbGetMachiningNewName( sNewName))
return FALSE ;
wsNewName = _wcsdup( stringtoW( sNewName)) ;
return (( wsNewName == nullptr) ? FALSE : TRUE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbAddMachining( const wchar_t* wsName, int nType)
{
return ( ExeMdbAddMachining( wstrztoA( wsName), nType) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbCopyMachining( const wchar_t* wsSource, const wchar_t* wsName)
{
return ( ExeMdbCopyMachining( wstrztoA( wsSource), wstrztoA( wsName)) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbRemoveMachining( const wchar_t* wsName)
{
return ( ExeMdbRemoveMachining( wstrztoA( wsName)) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbGetFirstMachining( int nType, wchar_t*& wsName)
{
if ( &wsName == nullptr)
return FALSE ;
string sName ;
if ( ! ExeMdbGetFirstMachining( nType, sName))
return FALSE ;
wsName = _wcsdup( stringtoW( sName)) ;
return (( wsName == nullptr) ? FALSE : TRUE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbGetNextMachining( int nType, wchar_t*& wsName)
{
if ( &wsName == nullptr)
return FALSE ;
string sName ;
if ( ! ExeMdbGetNextMachining( nType, sName))
return FALSE ;
wsName = _wcsdup( stringtoW( sName)) ;
return (( wsName == nullptr) ? FALSE : TRUE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbSetCurrMachining( const wchar_t* wsName)
{
return ( ExeMdbSetCurrMachining( wstrztoA( wsName)) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbSaveCurrMachining( void)
{
return ( ExeMdbSaveCurrMachining() ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbIsCurrMachiningModified( void)
{
return ( ExeMdbIsCurrMachiningModified() ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbSetCurrMachiningParamBool( int nType, BOOL bVal)
{
return ( ExeMdbSetCurrMachiningParam( nType, ( bVal != FALSE)) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbSetCurrMachiningParamInt( int nType, int nVal)
{
return ( ExeMdbSetCurrMachiningParam( nType, nVal) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbSetCurrMachiningParamDouble( int nType, double dVal)
{
return ( ExeMdbSetCurrMachiningParam( nType, dVal) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbSetCurrMachiningParamString( int nType, const wchar_t* wsVal)
{
return ( ExeMdbSetCurrMachiningParam( nType, string( wstrztoA( wsVal))) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbGetCurrMachiningParamBool( int nType, BOOL* pbVal)
{
if ( pbVal == nullptr)
return FALSE ;
bool bVal ;
if ( ! ExeMdbGetCurrMachiningParam( nType, bVal))
return FALSE ;
*pbVal = ( bVal ? TRUE : FALSE) ;
return TRUE ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbGetCurrMachiningParamInt( int nType, int* pnVal)
{
if ( pnVal == nullptr)
return FALSE ;
return ( ExeMdbGetCurrMachiningParam( nType, *pnVal) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbGetCurrMachiningParamDouble( int nType, double* pdVal)
{
if ( pdVal == nullptr)
return FALSE ;
return ( ExeMdbGetCurrMachiningParam( nType, *pdVal) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbGetCurrMachiningParamString( int nType, wchar_t*& wsVal)
{
if ( &wsVal == nullptr)
return FALSE ;
string sVal ;
if ( ! ExeMdbGetCurrMachiningParam( nType, sVal))
return FALSE ;
wsVal = _wcsdup( stringtoW( sVal)) ;
return (( wsVal == nullptr) ? FALSE : TRUE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbSetSafeZ( double dSafeZ)
{
return ( ExeMdbSetSafeZ( dSafeZ) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbGetSafeZ( double* pdSafeZ)
{
if ( pdSafeZ == nullptr)
return FALSE ;
return ( ExeMdbGetSafeZ( *pdSafeZ) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbSave( void)
{
return ( ExeMdbSave() ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtMdbGetMachiningDir( wchar_t*& wsMchDir)
{
if ( &wsMchDir == nullptr)
return FALSE ;
string sMchDir ;
if ( ! ExeTdbGetToolDir( sMchDir))
return FALSE ;
wsMchDir = _wcsdup( stringtoW( sMchDir)) ;
return (( wsMchDir == nullptr) ? FALSE : TRUE) ;
}
//-----------------------------------------------------------------------------
// Operations
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtRemoveAllOperations( void)
{
return ( ExeRemoveAllOperations() ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
// Simulation
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtSimStart( void)
{
return ( ExeSimStart() ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtSimMove( int* pnStatus)
{
int nStatus ;
bool bOk = ExeSimMove( nStatus) ;
if ( pnStatus != nullptr)
*pnStatus = nStatus ;
return ( bOk ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtSimHome( void)
{
return ( ExeSimHome() ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtSimGetAxisInfoPos( int nI, wchar_t*& wsName, double* pdVal)
{
if ( &wsName == nullptr || pdVal == nullptr)
return FALSE ;
string sName ;
if ( ! ExeSimGetAxisInfoPos( nI, sName, *pdVal))
return FALSE ;
wsName = _wcsdup( stringtoW( sName)) ;
return (( wsName == nullptr) ? FALSE : TRUE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtSimGetToolInfo( wchar_t*& wsTool, double* pdSpeed)
{
if ( &wsTool == nullptr || pdSpeed == nullptr)
return FALSE ;
string sTool ;
if ( ! ExeSimGetToolInfo( sTool, *pdSpeed))
return FALSE ;
wsTool = _wcsdup( stringtoW( sTool)) ;
return (( wsTool == nullptr) ? FALSE : TRUE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtSimGetMoveInfo( int* pnGmove, double* pdFeed)
{
if ( pnGmove == nullptr || pdFeed == nullptr)
return FALSE ;
return ( ExeSimGetMoveInfo( *pnGmove, *pdFeed) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtSimSetStep( double dStep)
{
return ( ExeSimSetStep( dStep) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtSimStop( void)
{
return ( ExeSimStop() ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
// Generation
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtGenerate( const wchar_t* wsCncFile, const wchar_t* wsInfo)
{
return ( ExeGenerate( wstrztoA( wsCncFile), wstrztoA( wsInfo)) ? TRUE : FALSE) ;
}
//-----------------------------------------------------------------------------
// Machine Calc
//-----------------------------------------------------------------------------
BOOL
__stdcall EgtSetCalcTool( const wchar_t* wsTool, const wchar_t* wsHead, int nExit)
{
return ( ExeSetCalcTool( wstrztoA( wsTool), wstrztoA( wsHead), nExit) ? 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))
return FALSE ;
// ritorno i dati
if ( ptTip != nullptr)
VEC_FROM_3D( ptTip, ptTmp) ;
return TRUE ;
}