EgtMachKernel 2.5h2 :
- aggiunta definizione EMC.VER con versione della dll a OnSetTable, OnSetHead e OnVerifyProtectedAreas - alla modifica di posizione o direzione di un asse si sistema anche la geometria per la simulazione - alla modifica della posizione di una uscita si sistema anche la geometria per la simulazione - corretto carico uscite di una testa per direzioni poco discoste da quelle canoniche non correttamente assegnate.
This commit is contained in:
@@ -17,9 +17,11 @@
|
||||
#include "Axis.h"
|
||||
#include "MachConst.h"
|
||||
#include "/EgtDev/Include/EGkGdbConst.h"
|
||||
#include "/EgtDev/Include/EGkGeoVector3d.h"
|
||||
#include "/EgtDev/Include/EGkUserObjFactory.h"
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
#include "/EgtDev/Include/EGkUiUnits.h"
|
||||
#include "/EgtDev/Include/EgtNumUtils.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
@@ -137,9 +139,8 @@ Axis::Set( const string& sName, const string& sToken, bool bInvert, double dOffs
|
||||
bool
|
||||
Axis::Modify( const Point3d& ptPos, double dAxisMaxAdjust)
|
||||
{
|
||||
// Verifico che lo spostamento non superi il massimo ammesso
|
||||
Vector3d vtDelta = ptPos - m_ptPos ;
|
||||
Vector3d vtDeltaPerp = vtDelta - ( vtDelta * m_vtDir) * m_vtDir ;
|
||||
// Verifico che lo spostamento perpendicolare alla sua direzione non superi il massimo ammesso
|
||||
Vector3d vtDeltaPerp = OrthoCompo( ptPos - m_ptPos, m_vtDir) ;
|
||||
if ( vtDeltaPerp.Len() > dAxisMaxAdjust) {
|
||||
string sOut = " Modify Axis " + m_sName + " Position (" + ToString( ptPos) + ") failed" ;
|
||||
LOG_ERROR( GetEMkLogger(), sOut.c_str()) ;
|
||||
@@ -147,6 +148,11 @@ Axis::Modify( const Point3d& ptPos, double dAxisMaxAdjust)
|
||||
}
|
||||
// Assegno la nuova posizione
|
||||
m_ptPos = ptPos ;
|
||||
// Sistemo la geometria dell'asse
|
||||
int nV = m_pGeomDB->GetFirstNameInGroup( m_nOwnerId, m_sName) ;
|
||||
IGeoVector3d* pGV = GetGeoVector3d( m_pGeomDB->GetGeoObj( nV)) ;
|
||||
if ( pGV != nullptr)
|
||||
pGV->ChangeBase( m_ptPos) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -164,6 +170,11 @@ Axis::Modify( const Vector3d& vtDir, double dAxisMaxRotAdj)
|
||||
}
|
||||
// Assegno la nuova direzione
|
||||
m_vtDir = vtDirN ;
|
||||
// Sistemo la geometria dell'asse
|
||||
int nV = m_pGeomDB->GetFirstNameInGroup( m_nOwnerId, m_sName) ;
|
||||
IGeoVector3d* pGV = GetGeoVector3d( m_pGeomDB->GetGeoObj( nV)) ;
|
||||
if ( pGV != nullptr)
|
||||
pGV->ChangeVector( m_vtDir) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -172,10 +183,7 @@ bool
|
||||
Axis::Modify( const STROKE& Stroke)
|
||||
{
|
||||
m_Stroke = Stroke ;
|
||||
if ( m_dHomeVal < m_Stroke.Min)
|
||||
m_dHomeVal = m_Stroke.Min ;
|
||||
else if ( m_dHomeVal > m_Stroke.Max)
|
||||
m_dHomeVal = m_Stroke.Max ;
|
||||
m_dHomeVal = Clamp( m_dHomeVal, m_Stroke.Min, m_Stroke.Max) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -183,12 +191,7 @@ Axis::Modify( const STROKE& Stroke)
|
||||
bool
|
||||
Axis::Modify( double dHome)
|
||||
{
|
||||
if ( dHome < m_Stroke.Min)
|
||||
m_dHomeVal = m_Stroke.Min ;
|
||||
else if ( dHome > m_Stroke.Max)
|
||||
m_dHomeVal = m_Stroke.Max ;
|
||||
else
|
||||
m_dHomeVal = dHome ;
|
||||
m_dHomeVal = Clamp( dHome, m_Stroke.Min, m_Stroke.Max) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user