diff --git a/Machining.cpp b/Machining.cpp index 0b64532..356e280 100644 --- a/Machining.cpp +++ b/Machining.cpp @@ -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 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 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