From 45cf4129850edebba6862ec1e9eedc0b61d156d9 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 20 Aug 2024 12:55:38 +0200 Subject: [PATCH] =?UTF-8?q?EgtMachKernel=20:=20-=20ore=20ZSAFEDELTA=20di?= =?UTF-8?q?=20testa=20per=20sole=20mortasature=20accetta=20un=20secondo=20?= =?UTF-8?q?valore=20che=20viene=20applicato=20quando=20l'inclinazione=20da?= =?UTF-8?q?ll'orizzontale=20=C3=A8=20minore=20di=2045deg=20(default=20prim?= =?UTF-8?q?o=20valore).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MachConst.h | 2 ++ MachMgr.h | 1 - MachMgrMachines.cpp | 12 ------------ Mortising.cpp | 2 +- Operation.cpp | 20 ++++++++++++++++++-- Operation.h | 1 + 6 files changed, 22 insertions(+), 16 deletions(-) diff --git a/MachConst.h b/MachConst.h index 73506ee..c8ed6c5 100644 --- a/MachConst.h +++ b/MachConst.h @@ -152,3 +152,5 @@ const std::string NST_PARTREG_LAYER = "Region" ; //---------------------------------------------------------------------------- // Minima componente zeta di versore utensile per lavorazione da sopra (-45deg) const double MIN_ZDIR_TOP_TOOL = -0.7072 ; +// Minima componente zeta di versose utensile ่er mortasatura quasi verticale (45deg) +const double MIN_ZDIR_VERT_CHSAW = 0.7072 ; diff --git a/MachMgr.h b/MachMgr.h index 242ca96..7822799 100644 --- a/MachMgr.h +++ b/MachMgr.h @@ -477,7 +477,6 @@ class MachMgr : public IMachMgr int SimMoveAxes( int nMoveType, const SAMVECTOR& vAxNaEpSt) ; // Machine bool GetHeadAbove( const std::string& sHead) const ; - double GetDeltaSafeZ( const std::string& sHead) const ; double GetAngDeltaMinForHome( void) const ; private : diff --git a/MachMgrMachines.cpp b/MachMgrMachines.cpp index c752b27..b999471 100644 --- a/MachMgrMachines.cpp +++ b/MachMgrMachines.cpp @@ -303,18 +303,6 @@ MachMgr::GetHeadAbove( const string& sHead) const return ( ! m_pGeomDB->GetInfo( GetHeadId( sHead), MCH_ABOVE, bAbove) || bAbove) ; } -//---------------------------------------------------------------------------- -double -MachMgr::GetDeltaSafeZ( const string& sHead) const -{ - if ( m_pGeomDB == nullptr) - return 0 ; - // Leggo da testa Info ZSAFEDELTA - double dDeltaSafeZ = 0 ; - m_pGeomDB->GetInfo( GetHeadId( sHead), MCH_ZSAFEDELTA, dDeltaSafeZ) ; - return dDeltaSafeZ ; -} - //---------------------------------------------------------------------------- double MachMgr::GetAngDeltaMinForHome( void) const diff --git a/Mortising.cpp b/Mortising.cpp index d019311..a021cb4 100644 --- a/Mortising.cpp +++ b/Mortising.cpp @@ -1557,7 +1557,7 @@ Mortising::GenerateOnePlungeCl( const Point3d& ptStart, const Point3d& ptEnd, co double dDelta = dElev - dDepth ; // determino se l'inizio dell'attacco ่ esattamente sotto il grezzo, nel qual caso ricalcolo l'elevazione - double dSafeZ = GetSafeZ() + m_pMchMgr->GetDeltaSafeZ( m_TParams.m_sHead) ; + double dSafeZ = GetSafeZ() + GetDeltaSafeZ( vtTool) ; double dStartElev = 0 ; Point3d ptLi = ( nPlunge != MORTISE_PLUNGE_END ? ptStart : ptEnd) + vtTool * dDelta ; bool bUnderStart = GetAhPointUnderRaw( ptLi, vtTool, 0, diff --git a/Operation.cpp b/Operation.cpp index b5d07ed..b505dc3 100644 --- a/Operation.cpp +++ b/Operation.cpp @@ -3958,6 +3958,23 @@ Operation::GetUserNotesZmax( void) const return 0 ; } +//---------------------------------------------------------------------------- +double +Operation::GetDeltaSafeZ( const Vector3d& vtTool) const +{ + // Recupero macchina corrente + Machine* pMch = ( m_pMchMgr != nullptr ? m_pMchMgr->GetCurrMachine() : nullptr) ; + if ( pMch == nullptr) + return false ; + // Leggo da testa Info ZSAFEDELTA + DBLVECTOR vdVal ; + if ( ! m_pGeomDB->GetInfo( pMch->GetCurrHead(), MCH_ZSAFEDELTA, vdVal) || vdVal.empty()) + return 0 ; + if ( vdVal.size() == 1) + return vdVal[0] ; + return ( vtTool.z > MIN_ZDIR_VERT_CHSAW ? vdVal[0] : vdVal[1]) ; +} + //---------------------------------------------------------------------------- bool Operation::GetZHomeDown( void) const @@ -3967,9 +3984,8 @@ Operation::GetZHomeDown( void) const if ( pMch == nullptr) return false ; // Leggo da testa Info ZHOMEDOWN (0=falso[default], altrimenti vero) - int nHeadId = pMch->GetCurrHead() ; bool bZHomeDown ; - if ( ! m_pGeomDB->GetInfo( nHeadId, MCH_ZHOMEDOWN, bZHomeDown)) + if ( ! m_pGeomDB->GetInfo( pMch->GetCurrHead(), MCH_ZHOMEDOWN, bZHomeDown)) bZHomeDown = false ; return bZHomeDown ; } diff --git a/Operation.h b/Operation.h index d2b6669..abe69a4 100644 --- a/Operation.h +++ b/Operation.h @@ -218,6 +218,7 @@ class Operation : public IUserObj bool GetRotationAtZmax( void) const ; bool ForcedZmax( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd, const BBox3d& b3Raws) const ; int GetUserNotesZmax( void) const ; + double GetDeltaSafeZ( const Vector3d& vtTool) const ; bool GetZHomeDown( void) const ; bool TestCollisionAvoid( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd) const ; int SpecialTestCollisionAvoid( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd) const ;