EgtMacheKernel :
- correzione recupero riferimento uscita per visualizzazione Preview Utensile/Testa.
This commit is contained in:
+31
-40
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user