EgtMachKernel 1.6e7 :
- introdotto uso ObjUser per gruppi di macchina - prima versione prototipo delle forature - migliorie al calolo angoli e posizioni macchina.
This commit is contained in:
+23
-29
@@ -15,6 +15,7 @@
|
||||
#include "stdafx.h"
|
||||
#include "MachMgr.h"
|
||||
#include "DllMain.h"
|
||||
#include "Axis.h"
|
||||
#include "/EgtDev/Include/EGkGeoVector3d.h"
|
||||
#include "/EgtDev/Include/EGnStringUtils.h"
|
||||
#include "/EgtDev/Include/EGnFileUtils.h"
|
||||
@@ -27,21 +28,16 @@ Machine::SetAxisPos( const string& sAxis, double dVal)
|
||||
{
|
||||
// recupero il gruppo dell'asse
|
||||
int nAxGrp = GetGroup( sAxis) ;
|
||||
if ( nAxGrp == GDB_ID_NULL || ! IsAxisGroup( nAxGrp))
|
||||
return false ;
|
||||
// recupero il tipo di asse
|
||||
string sType ;
|
||||
if ( ! m_pMchMgr->m_pGeomDB->GetInfo( nAxGrp, "Type", sType))
|
||||
return false ;
|
||||
bool bLinear = ( sType != MCH_AXIS + ToString( MCH_AT_ROTARY)) ;
|
||||
// recupero la posizione attuale
|
||||
double dCurrVal ;
|
||||
if ( ! m_pMchMgr->m_pGeomDB->GetInfo( nAxGrp, "Val", dCurrVal))
|
||||
return false ;
|
||||
// recupero i limiti della corsa
|
||||
STROKE Stroke ; string sTmp ;
|
||||
if ( ! m_pMchMgr->m_pGeomDB->GetInfo( nAxGrp, "Stroke", sTmp) || ! FromString( sTmp, Stroke.v))
|
||||
// recupero il relativo gestore
|
||||
Axis* pAx = GetAxis( nAxGrp) ;
|
||||
if ( pAx == nullptr)
|
||||
return false ;
|
||||
// tipo di asse
|
||||
bool bLinear = ( pAx->GetType() != MCH_AT_ROTARY) ;
|
||||
// posizione attuale
|
||||
double dCurrVal = pAx->GetCurrVal() ;
|
||||
// limiti della corsa
|
||||
STROKE Stroke = pAx->GetStroke() ;
|
||||
// recupero il vettore dell'asse
|
||||
int nV = m_pMchMgr->m_pGeomDB->GetFirstNameInGroup( nAxGrp, sAxis) ;
|
||||
const IGeoVector3d* pGV = GetGeoVector3d( m_pMchMgr->m_pGeomDB->GetGeoObj( nV)) ;
|
||||
@@ -60,44 +56,42 @@ Machine::SetAxisPos( const string& sAxis, double dVal)
|
||||
else
|
||||
m_pMchMgr->m_pGeomDB->RotateGroup( nAxGrp, ptPos, vtDir, ( dVal - dCurrVal)) ;
|
||||
// salvo la nuova posizione
|
||||
return m_pMchMgr->m_pGeomDB->SetInfo( nAxGrp, "Val", dVal) ;
|
||||
return pAx->SetCurrVal( dVal) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machine::GetAxisPos( const string& sAxis, double& dVal)
|
||||
{
|
||||
// recupero il gruppo dell'asse
|
||||
int nAxGrp = GetGroup( sAxis) ;
|
||||
if ( nAxGrp == GDB_ID_NULL || ! IsAxisGroup( nAxGrp))
|
||||
// recupero il relativo gestore
|
||||
Axis* pAx = GetAxis( GetGroup( sAxis)) ;
|
||||
if ( pAx == nullptr)
|
||||
return false ;
|
||||
// recupero la posizione corrente
|
||||
return m_pMchMgr->m_pGeomDB->GetInfo( nAxGrp, "Val", dVal) ;
|
||||
dVal = pAx->GetCurrVal() ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machine::GetAxisHomePos( const string& sAxis, double& dHomeVal)
|
||||
{
|
||||
// recupero il gruppo dell'asse
|
||||
int nAxGrp = GetGroup( sAxis) ;
|
||||
if ( nAxGrp == GDB_ID_NULL || ! IsAxisGroup( nAxGrp))
|
||||
// recupero il gestore dell'asse
|
||||
Axis* pAx = GetAxis( GetGroup( sAxis)) ;
|
||||
if ( pAx == nullptr)
|
||||
return false ;
|
||||
// recupero la posizione corrente
|
||||
return m_pMchMgr->m_pGeomDB->GetInfo( nAxGrp, "HVal", dHomeVal) ;
|
||||
// recupero la posizione home
|
||||
dHomeVal = pAx->GetHomeVal() ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machine::ResetAxisPos( const string& sAxis)
|
||||
{
|
||||
// recupero il gruppo dell'asse
|
||||
int nAxGrp = GetGroup( sAxis) ;
|
||||
if ( nAxGrp == GDB_ID_NULL || ! IsAxisGroup( nAxGrp))
|
||||
return false ;
|
||||
// recupero la posizione home
|
||||
double dHomeVal ;
|
||||
if ( ! m_pMchMgr->m_pGeomDB->GetInfo( nAxGrp, "HVal", dHomeVal))
|
||||
if ( ! GetAxisHomePos( sAxis, dHomeVal))
|
||||
return false ;
|
||||
// eseguo il movimento
|
||||
return SetAxisPos( sAxis, dHomeVal) ;
|
||||
|
||||
Reference in New Issue
Block a user