EgtMacheKernel :

- correzione recupero riferimento uscita per visualizzazione Preview Utensile/Testa.
This commit is contained in:
Dario Sassi
2026-05-22 09:16:54 +02:00
parent ae5a7b8064
commit 5bd8468d10
+31 -40
View File
@@ -26,10 +26,9 @@
using namespace std ;
#define DEBUG 0
#define DEBUG_PRV 1
const string KEY_AXIS_GROUP = "PreviewAxisGroup" ;
const string KEY_ROT_AXIS_VAL = "PreviewRotAxisVal" ; // salvata per ogni gruppo di Preview
const string KEY_PRV_ROTAXIS_VAL = "PreviewRotAxisVal" ; // salvata per ogni gruppo di Preview
// struttura per informazioni sugli assi
struct PreviewAxisInfo {
@@ -395,7 +394,7 @@ Machining::MyPrepareToolPreview( bool bDouble)
m_pGeomDB->SetName( nNewTabRotAxisId, sName) ;
double dAxisPos = 0. ;
bOk = bOk && pMch->GetAxisPos( sName, dAxisPos) &&
m_pGeomDB->SetInfo( nNewTabRotAxisId, KEY_ROT_AXIS_VAL, dAxisPos) ;
m_pGeomDB->SetInfo( nNewTabRotAxisId, KEY_PRV_ROTAXIS_VAL, dAxisPos) ;
if ( ! bOk)
return false ;
nCurrHierarchyId = nNewTabRotAxisId ;
@@ -505,7 +504,7 @@ Machining::MyPrepareToolPreview( bool bDouble)
// memorizzo la sua posizione iniziale
double dAxisPos = 0. ;
bOk = bOk && pMch->GetAxisPos( sParentName, dAxisPos) &&
m_pGeomDB->SetInfo( nNewParentId, KEY_ROT_AXIS_VAL, dAxisPos) ;
m_pGeomDB->SetInfo( nNewParentId, KEY_PRV_ROTAXIS_VAL, dAxisPos) ;
}
// scorro i suoi figli
int nChildId = m_pGeomDB->GetFirstInGroup( nParentId) ;
@@ -569,41 +568,33 @@ Machining::MyPrepareToolPreview( bool bDouble)
// recupero il punto Tip dell'utensile e lo inserisco dentro al gruppo testa corrente
int nExitGrpId = ( ! bDouble ? pMch->GetCurrExit() : pMch->GetExitId( sHead, nExitDBLId)) ;
bool bOk = ( nExitGrpId != GDB_ID_NULL) ;
if ( nExitGrpId == GDB_ID_NULL)
return false ;
string sExitGrpName ;
bOk = bOk && m_pGeomDB->GetName( nExitGrpId, sExitGrpName) ;
int nFrId = GDB_ID_NULL ;
if ( bOk) {
if ( ! bDouble) {
nFrId = m_pGeomDB->GetFirstNameInGroup( m_nPreviewHeadId, "_" + sExitGrpName) ;
m_nPreviewExitId = m_pGeomDB->GetFirstNameInGroup( m_nPreviewHeadId, sExitGrpName) ;
}
else {
nFrId = m_pGeomDB->GetFirstNameInGroup( m_nPreviewHeadIdDBL, "_" + sExitGrpName) ;
m_nPreviewExitIdDBL = m_pGeomDB->GetFirstNameInGroup( m_nPreviewHeadIdDBL, sExitGrpName) ;
}
if ( ! m_pGeomDB->GetName( nExitGrpId, sExitGrpName))
return false ;
if ( ! bDouble)
m_nPreviewExitId = m_pGeomDB->GetFirstNameInGroup( m_nPreviewHeadId, sExitGrpName) ;
else
m_nPreviewExitIdDBL = m_pGeomDB->GetFirstNameInGroup( m_nPreviewHeadIdDBL, sExitGrpName) ;
// determino le coordinate del Tip in locale
const Frame3d* pfrExit = m_pGeomDB->GetGroupFrame( nExitGrpId) ;
if ( pfrExit == nullptr)
return false ;
Point3d ptToolTip = pfrExit->Orig() - dTLen * pfrExit->VersZ() ;
// creo l'oggetto punto nel DBG
PtrOwner<IGeoPoint3d> ptGToolTip( CreateGeoPoint3d()) ;
if ( IsNull( ptGToolTip) || ! ptGToolTip->Set( ptToolTip))
return false ;
if ( ! bDouble) {
m_nPreviewToolTip = m_pGeomDB->AddGeoObj( GDB_ID_NULL, m_nPreviewHeadId, Release( ptGToolTip)) ;
return ( m_nPreviewToolTip != GDB_ID_NULL) ;
}
bOk = bOk && ( nFrId != GDB_ID_NULL) ;
const IGeoFrame3d* frExit = ( bOk ? GetGeoFrame3d( m_pGeomDB->GetGeoObj( nFrId)) : nullptr) ;
bOk = bOk && ( frExit != nullptr) ;
Point3d ptToolTip = ( bOk ? ( frExit->GetFrame()).Orig() - dTLen * ( frExit->GetFrame()).VersZ() : P_INVALID) ;
bOk = bOk && ptToolTip.IsValid() ;
if ( bOk) {
PtrOwner<IGeoPoint3d> ptGToolTip( CreateGeoPoint3d()) ;
bOk = ( ! IsNull( ptGToolTip) && ptGToolTip->Set( ptToolTip)) ;
if ( bOk) {
if ( ! bDouble) {
m_nPreviewToolTip = m_pGeomDB->AddGeoObj( GDB_ID_NULL, m_nPreviewHeadId, Release( ptGToolTip)) ;
bOk = bOk && ( m_nPreviewToolTip != GDB_ID_NULL) ;
}
else {
m_nPreviewToolTipDBL = m_pGeomDB->AddGeoObj( GDB_ID_NULL, m_nPreviewHeadIdDBL, Release( ptGToolTip)) ;
bOk = bOk && ( m_nPreviewToolTipDBL != GDB_ID_NULL) ;
}
}
else {
m_nPreviewToolTipDBL = m_pGeomDB->AddGeoObj( GDB_ID_NULL, m_nPreviewHeadIdDBL, Release( ptGToolTip)) ;
return ( m_nPreviewToolTipDBL != GDB_ID_NULL) ;
}
return bOk ;
}
//----------------------------------------------------------------------------
@@ -695,7 +686,7 @@ Machining::RemoveToolPreview( void)
// verifico validità gestore DB geometrico
if ( m_pGeomDB == nullptr)
return false ;
#if DEBUG
#if DEBUG_PRV
return true ;
#endif
// recupero i gruppi per l'anteprima utensile
@@ -901,7 +892,7 @@ Machining::MyToolPreview( int nEntId, bool bDouble) const
return false ;
// recupero il valore corrente dell'asse
double dCurrAxisVal = 0. ;
m_pGeomDB->GetInfo( nAxisId, KEY_ROT_AXIS_VAL, dCurrAxisVal) ;
m_pGeomDB->GetInfo( nAxisId, KEY_PRV_ROTAXIS_VAL, dCurrAxisVal) ;
// recupero il valore dell'asse
bool bFound = false ;
double dAxisVal = 0 ;
@@ -922,7 +913,7 @@ Machining::MyToolPreview( int nEntId, bool bDouble) const
Vector3d vtDir = pGV->GetVector() ;
vtDir.Normalize() ;
m_pGeomDB->RotateGroup( nAxisId, ptPos, vtDir, ( dAxisVal - dCurrAxisVal)) ;
m_pGeomDB->SetInfo( nAxisId, KEY_ROT_AXIS_VAL, dAxisVal) ;
m_pGeomDB->SetInfo( nAxisId, KEY_PRV_ROTAXIS_VAL, dAxisVal) ;
}
// recupero la posizione del tip dell'utensile per movimento assi lineari