diff --git a/Drilling.cpp b/Drilling.cpp index 33a9f70..c92f3f6 100644 --- a/Drilling.cpp +++ b/Drilling.cpp @@ -1271,7 +1271,7 @@ Drilling::VerifyHoleFromBottom( const Hole& hole, SelData Id) return false ; } // assegno direzione di accesso e segnalazione di utilizzo aggregato da sotto - SetAuxDir( vtDir) ; + m_vtAggrBottom = vtDir ; m_bAggrBottom = true ; m_dDistBottom = dDist ; return true ; @@ -1308,23 +1308,23 @@ Drilling::DoStandardDrilling( const Hole& hole, SelData Id, int nPathId) double dAppr = ( m_bAggrBottom ? dSafeAggrBottZ : dSafeZ) ; Point3d ptP1 = hole.ptIni + hole.vtDir * ( dAppr + dTExtrLen) ; if ( m_bAggrBottom) { - Point3d ptP0 = ptP1 + m_vtAux * ( m_dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; + Point3d ptP0 = ptP1 + m_vtAggrBottom * ( m_dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAppr + dTExtrLen) ; // se rinvio da sotto che richiede speciale rotazione if ( m_AggrBottom.nType == 1) { - Vector3d vtAux = m_vtAux ; + Vector3d vtAux = m_vtAggrBottom ; vtAux.Rotate( Z_AX, 90) ; SetAuxDir( vtAux) ; if ( AddRapidStart( ptP00, MCH_CL_AGB_DWN) == GDB_ID_NULL) return false ; - SetAuxDir( m_vtAux) ; + SetAuxDir( m_vtAggrBottom) ; SetFlag( 0) ; if ( AddRapidMove( ptP0, MCH_CL_AGB_IN) == GDB_ID_NULL) return false ; } // altrimenti rinvio normale else { - SetAuxDir( m_vtAux) ; + SetAuxDir( m_vtAggrBottom) ; if ( AddRapidStart( ptP0, MCH_CL_AGB_IN) == GDB_ID_NULL) return false ; SetFlag( 0) ; @@ -1381,13 +1381,13 @@ Drilling::DoStandardDrilling( const Hole& hole, SelData Id, int nPathId) // 7 -> punto fuori (se uso aggregato da sotto) if ( m_bAggrBottom) { SetFlag( 0) ; - Point3d ptP0 = ptP1 + m_vtAux * ( m_dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; + Point3d ptP0 = ptP1 + m_vtAggrBottom * ( m_dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAppr + dTExtrLen) ; if ( AddRapidMove( ptP0, MCH_CL_AGB_OUT) == GDB_ID_NULL) return false ; // se rinvio da sotto che richiede speciale rotazione if ( m_AggrBottom.nType == 1) { - Vector3d vtAux = m_vtAux ; + Vector3d vtAux = m_vtAggrBottom ; vtAux.Rotate( Z_AX, 90) ; SetAuxDir( vtAux) ; if ( AddRapidMove( ptP00, MCH_CL_AGB_UP) == GDB_ID_NULL) @@ -1434,23 +1434,23 @@ Drilling::DoPeckDrilling( const Hole& hole, SelData Id, int nPathId) double dAppr = ( m_bAggrBottom ? dSafeAggrBottZ : dSafeZ) ; Point3d ptP1 = hole.ptIni + hole.vtDir * ( dAppr + dTExtrLen) ; if ( m_bAggrBottom) { - Point3d ptP0 = ptP1 + m_vtAux * ( m_dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; + Point3d ptP0 = ptP1 + m_vtAggrBottom * ( m_dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAppr + dTExtrLen) ; // se rinvio da sotto che richiede speciale rotazione if ( m_AggrBottom.nType == 1) { - Vector3d vtAux = m_vtAux ; + Vector3d vtAux = m_vtAggrBottom ; vtAux.Rotate( Z_AX, 90) ; SetAuxDir( vtAux) ; if ( AddRapidStart( ptP00, MCH_CL_AGB_DWN) == GDB_ID_NULL) return false ; SetFlag( 0) ; - SetAuxDir( m_vtAux) ; + SetAuxDir( m_vtAggrBottom) ; if ( AddRapidMove( ptP0, MCH_CL_AGB_IN) == GDB_ID_NULL) return false ; } // altrimenti rinvio normale else { - SetAuxDir( m_vtAux) ; + SetAuxDir( m_vtAggrBottom) ; if ( AddRapidStart( ptP0, MCH_CL_AGB_IN) == GDB_ID_NULL) return false ; SetFlag( 0) ; @@ -1580,13 +1580,13 @@ Drilling::DoPeckDrilling( const Hole& hole, SelData Id, int nPathId) // 7 -> punto fuori (se uso aggregato da sotto) if ( m_bAggrBottom) { SetFlag( 0) ; - Point3d ptP0 = ptP1 + m_vtAux * ( m_dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; + Point3d ptP0 = ptP1 + m_vtAggrBottom * ( m_dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAppr + dTExtrLen) ; if ( AddRapidMove( ptP0, MCH_CL_AGB_OUT) == GDB_ID_NULL) return false ; // se rinvio da sotto che richiede speciale rotazione if ( m_AggrBottom.nType == 1) { - Vector3d vtAux = m_vtAux ; + Vector3d vtAux = m_vtAggrBottom ; vtAux.Rotate( Z_AX, 90) ; SetAuxDir( vtAux) ; if ( AddRapidMove( ptP00, MCH_CL_AGB_UP) == GDB_ID_NULL) diff --git a/Drilling.h b/Drilling.h index 226afc8..71b43d0 100644 --- a/Drilling.h +++ b/Drilling.h @@ -96,6 +96,7 @@ class Drilling : public Machining ToolData m_TParams ; // parametri utensile int m_nDrillings ; // numero di fori generati bool m_bAggrBottom ; // flag di utilizzo dell'aggregato da sotto + Vector3d m_vtAggrBottom ; // vettore direzione ausiliaria aggregato da sotto double m_dDistBottom ; // distanza del foro dal bordo del grezzo AggrBottom m_AggrBottom ; // dati eventuale aggregato da sotto } ; diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index 8221726..71dab17 100644 Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ diff --git a/EgtMachKernel.vcxproj b/EgtMachKernel.vcxproj index 5f38eb6..837644f 100644 --- a/EgtMachKernel.vcxproj +++ b/EgtMachKernel.vcxproj @@ -316,6 +316,7 @@ copy $(TargetPath) \EgtProg\Dll64 + diff --git a/EgtMachKernel.vcxproj.filters b/EgtMachKernel.vcxproj.filters index 3b4ecdf..999d8df 100644 --- a/EgtMachKernel.vcxproj.filters +++ b/EgtMachKernel.vcxproj.filters @@ -353,6 +353,9 @@ Header Files + + Header Files + diff --git a/MachMgr.h b/MachMgr.h index 34c0ac1..626c357 100644 --- a/MachMgr.h +++ b/MachMgr.h @@ -311,6 +311,7 @@ class MachMgr : public IMachMgr bool UnloadTool( const std::string& sHead, int nExit) override ; bool ResetHeadSet( const std::string& sHead) override ; bool SetMachineLook( int nFlag) override ; + int GetMachineLook( void) override ; public : MachMgr( void) ; diff --git a/MachMgrMachines.cpp b/MachMgrMachines.cpp index 67a6c5d..fb16e29 100644 --- a/MachMgrMachines.cpp +++ b/MachMgrMachines.cpp @@ -642,3 +642,13 @@ MachMgr::SetMachineLook( int nFlag) Machine* pMch = GetCurrMachine() ; return ( ( pMch != nullptr) ? pMch->SetLook( nFlag) : false) ; } + +//---------------------------------------------------------------------------- +int +MachMgr::GetMachineLook( void) +{ + Machine* pMch = GetCurrMachine() ; + if ( pMch == nullptr) + return MCH_LOOK_NONE ; + return pMch->GetLook() ; +} diff --git a/MachMgrOperations.cpp b/MachMgrOperations.cpp index a25dbd4..b78afa7 100644 --- a/MachMgrOperations.cpp +++ b/MachMgrOperations.cpp @@ -19,6 +19,7 @@ #include "Disposition.h" #include "MachiningCreate.h" #include "SetTempPhase.h" +#include "SetTempMachLook.h" #include "/EgtDev/Include/EMkOperationConst.h" #include "/EgtDev/Include/EGkUserObjFactory.h" #include "/EgtDev/Include/EGkGdbIterator.h" @@ -947,6 +948,8 @@ MachMgr::MachiningApply( bool bRecalc) return false ; // imposto fase della lavorazione come temporaneamente corrente SetTempPhase TmpPhase( this, pMch->GetPhase()) ; + // imposto visualizzazione completa della macchina come temporaneamente corrente + SetTempMachLook TmpMachLook( this, MCH_LOOK_ALL) ; // calcolo la lavorazione return pMch->Apply( bRecalc) ; } @@ -972,6 +975,8 @@ MachMgr::MachiningUpdate( void) return false ; // imposto fase della lavorazione come temporaneamente corrente SetTempPhase TmpPhase( this, pMch->GetPhase()) ; + // imposto visualizzazione completa della macchina come temporaneamente corrente + SetTempMachLook TmpMachLook( this, MCH_LOOK_ALL) ; // aggiorno valori assi macchina e collegamento con operazione precedente return pMch->Update() ; } diff --git a/Machine.cpp b/Machine.cpp index e74119d..cd5a259 100644 --- a/Machine.cpp +++ b/Machine.cpp @@ -47,6 +47,7 @@ Machine::Machine( void) m_dCalcTRad = 0 ; m_dCalcTOvLen = 0 ; m_dCalcTOvRad = 0 ; + m_nMachineLook = MCH_LOOK_NONE ; } //---------------------------------------------------------------------------- @@ -125,6 +126,8 @@ Machine::Init( const string& sMachinesDir, const string& sMachineName, MachMgr* m_sName.clear() ; m_sMachineDir.clear() ; } + // imposto stato di visualizzazione + m_nMachineLook = ( bOk ? MCH_LOOK_ALL : MCH_LOOK_NONE) ; // metto tutti gli assi in posizione home bOk = bOk && ResetAllAxesPos() ; return bOk ; @@ -818,6 +821,10 @@ Machine::CreateExitGroups( int nLay, const MUEXITVECTOR& vMuExit) bool Machine::SetLook( int nFlag) { + // verifico validità flag + if ( nFlag < MCH_LOOK_TAB || nFlag > MCH_LOOK_ALL) + return false ; + // verifico DB geometrico if ( m_pGeomDB == nullptr) return false ; @@ -894,6 +901,9 @@ Machine::SetLook( int nFlag) nId = m_pGeomDB->GetNext( nId) ; } + // aggiorno stato di visualizzazione + m_nMachineLook = nFlag ; + return true ; } diff --git a/Machine.h b/Machine.h index 611f986..175b2ab 100644 --- a/Machine.h +++ b/Machine.h @@ -58,7 +58,7 @@ class Machine bool LoadTool( const std::string& sHead, int nExit, const std::string& sTool) ; bool GetLoadedTool( const std::string& sHead, int nExit, std::string& sTool) const ; bool UnloadTool( const std::string& sHead, int nExit) ; - bool LoadTools( const std::string& sHead, int* pnCount = nullptr) ; + bool LoadTools( const std::string& sHead, int nNoExit, int* pnCount = nullptr) ; bool UnloadTools( const std::string& sHead) ; bool LoadAllTools( void) ; bool UnloadAllTools( void) ; @@ -122,6 +122,8 @@ class Machine const std::string& GetOutstrokeInfo( void) const { return m_sOutstrokeInfo ; } bool SetLook( int nFlag) ; + int GetLook( void) + { return m_nMachineLook ; } bool LinkRawPartToGroup( int nRawPartId, const std::string& sGroupName) ; bool IsLinkedRawPart( int nRawId) const ; bool UnlinkRawPartFromGroup( int nRawPartId) ; @@ -247,6 +249,8 @@ class Machine KINAXISVECTOR m_vCalcLinAx ; // vettore assi lineari attivi per calcoli KINAXISVECTOR m_vCalcRotAx ; // vettore assi rotanti attivi per calcoli mutable std::string m_sOutstrokeInfo ; // informazioni su ultimo extra corsa + // stato di visualizzazione + int m_nMachineLook ; // stato di visualizzazione della macchina // Static per interprete Lua di macchina private : diff --git a/MachineCalc.cpp b/MachineCalc.cpp index a2ef9aa..abf8bfa 100644 --- a/MachineCalc.cpp +++ b/MachineCalc.cpp @@ -212,7 +212,7 @@ Machine::SetCurrTool( const string& sTool, const string& sHead, int nExit) // se definito if ( ! sTool.empty()) { // carico anche gli utensili su eventuali altre uscite della testa - LoadTools( sHead) ; + LoadTools( sHead, nExit) ; // carico l'utensile (si sostituisce ad altro già presente sulla stessa uscita) if ( ! LoadTool( sHead, nExit, sTool)) { string sOut = "Missing tool " + sTool ; diff --git a/MachineHeads.cpp b/MachineHeads.cpp index ee9a18b..e4d7ce0 100644 --- a/MachineHeads.cpp +++ b/MachineHeads.cpp @@ -164,7 +164,7 @@ Machine::UnloadTool( const string& sHead, int nExit) //---------------------------------------------------------------------------- bool -Machine::LoadTools( const string& sHead, int* pnCount) +Machine::LoadTools( const string& sHead, int nNoExit, int* pnCount) { // annullo eventuale parametro di conteggio if ( pnCount != nullptr) @@ -182,6 +182,9 @@ Machine::LoadTools( const string& sHead, int* pnCount) return false ; // ciclo su tutte le uscite for ( int nExit = 1 ; nExit <= pHead->GetExitCount() ; ++ nExit) { + // se uscita da saltare, vado oltre + if ( nExit == nNoExit) + continue ; // recupero l'uscita string sExit = MCH_EXIT + ToString( nExit) ; int nExGrp = m_pGeomDB->GetFirstNameInGroup( nHdGrp, sExit) ; @@ -227,7 +230,7 @@ Machine::LoadAllTools( void) if ( vsHSet.front() == snGro.first) { // carico prima testa con utensili dell'insieme for ( int i = 0, nTools = 0 ; i < int( vsHSet.size()) && nTools == 0 ; ++ i) { - LoadTools( vsHSet[i], &nTools) ; + LoadTools( vsHSet[i], 0, &nTools) ; } } } diff --git a/Machining.cpp b/Machining.cpp index 0738766..7487552 100644 --- a/Machining.cpp +++ b/Machining.cpp @@ -116,6 +116,47 @@ Machining::GetEndPoint( Point3d& ptEnd) const return false ; } +//---------------------------------------------------------------------------- +bool +Machining::ShowTool( int nPath, double dFraz) const +{ + // verifico validità gestore DB geometrico + if ( m_pGeomDB == nullptr) + return false ; + // recupero gruppo per geometria di lavorazione (Cutter Location) + int nClId = m_pGeomDB->GetFirstNameInGroup( GetOwner(), MCH_CL) ; + if ( nClId == GDB_ID_NULL) + return false ; + // recupero la prima entità del primo sottogruppo + int nEntId = m_pGeomDB->GetFirstInGroup( m_pGeomDB->GetFirstGroupInGroup( nClId)) ; + if ( nEntId == GDB_ID_NULL) + return false ; + // recupero i dati di questa entità + const CamData* pCamData = GetCamData( m_pGeomDB->GetUserObj( nEntId)) ; + if ( pCamData == nullptr) + return false ; + Point3d ptEnd = pCamData->GetEndPoint() ; + Vector3d vtTool = pCamData->GetToolDir() ; + // creo o svuoto gruppo per anteprima utensile + int nStId = m_pGeomDB->GetFirstNameInGroup( GetOwner(), MCH_ST) ; + // se non c'è, lo aggiungo + if ( nStId == GDB_ID_NULL) { + nStId = m_pGeomDB->AddGroup( GDB_ID_NULL, GetOwner(), Frame3d()) ; + if ( nStId == GDB_ID_NULL) + return false ; + m_pGeomDB->SetName( nStId, MCH_ST) ; + m_pGeomDB->SetLevel( nStId, GDB_LV_TEMP) ; + } + // altrimenti lo svuoto + else + m_pGeomDB->EmptyGroup( nStId) ; + // copio la testa della lavorazione nel gruppo + int nHeadId = m_pMchMgr->GetHeadId( GetHeadName()) ; + int nId = m_pGeomDB->CopyGlob( nHeadId, GDB_ID_NULL, nStId) ; + m_pGeomDB->SetStatus( nId, GDB_ST_ON) ; + return true ; +} + //---------------------------------------------------------------------------- bool Machining::PostApply( void) diff --git a/Machining.h b/Machining.h index 25be729..3f64e97 100644 --- a/Machining.h +++ b/Machining.h @@ -46,6 +46,7 @@ class Machining : public Operation public : bool GetStartPoint( Point3d& ptStart) const ; bool GetEndPoint( Point3d& ptEnd) const ; + bool ShowTool( int nPath, double dFraz) const ; protected : Machining( void) ; diff --git a/Milling.cpp b/Milling.cpp index 3225d2b..cbbee8e 100644 --- a/Milling.cpp +++ b/Milling.cpp @@ -548,6 +548,11 @@ Milling::Apply( bool bRecalc) nPathId = m_pGeomDB->GetNextGroup( nPathId) ; } + //// imposto l'utensile per l'anteprima !!! provvisorio per test !!! + // if ( ! m_pMchMgr->SetCalcTool( GetToolName(), GetHeadName(), GetExitNbr())) + // return false ; + // ShowTool( 0, 0) ; + // eseguo aggiornamento assi macchina e collegamento con operazione precedente return Update() ; } @@ -1651,7 +1656,7 @@ Milling::VerifyPathFromBottom( const ICurveComposite* pCompo, const Vector3d& vt return false ; } // assegno direzione di accesso e segnalo utilizzo aggregato da sotto - SetAuxDir( vtDir) ; + m_vtAggrBottom = vtDir ; m_bAggrBottom = true ; return true ; } @@ -2441,26 +2446,26 @@ Milling::AddApproach( const Point3d& ptP, const Vector3d& vtTool, double dSafeZ, double dAggZ = max( dElev + max( dSafeAggrBottZ, dAppr), 0.) ; // distanza dal bordo del pezzo double dDistBottom ; - if ( ! GetDistanceFromRawSide( m_nPhase, ptP, m_vtAux, dDistBottom)) + if ( ! GetDistanceFromRawSide( m_nPhase, ptP, m_vtAggrBottom, dDistBottom)) dDistBottom = 0 ; // pre-approccio - Point3d ptP0 = ptP - Z_AX * dAggZ + m_vtAux * ( dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; + Point3d ptP0 = ptP - Z_AX * dAggZ + m_vtAggrBottom * ( dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAggZ - dElev) ; // se rinvio da sotto che richiede speciale rotazione if ( m_AggrBottom.nType == 1) { - Vector3d vtAux = m_vtAux ; + Vector3d vtAux = m_vtAggrBottom ; vtAux.Rotate( Z_AX, 90) ; SetAuxDir( vtAux) ; if ( AddRapidStart( ptP00, MCH_CL_AGB_DWN) == GDB_ID_NULL) return false ; - SetAuxDir( m_vtAux) ; + SetAuxDir( m_vtAggrBottom) ; SetFlag( 0) ; if ( AddRapidMove( ptP0, MCH_CL_AGB_IN) == GDB_ID_NULL) return false ; } // altrimenti rinvio normale else { - SetAuxDir( m_vtAux) ; + SetAuxDir( m_vtAggrBottom) ; if ( AddRapidStart( ptP0, MCH_CL_AGB_IN) == GDB_ID_NULL) return false ; SetFlag( 0) ; @@ -2580,16 +2585,16 @@ Milling::AddRetract( const Point3d& ptP, const Vector3d& vtTool, double dSafeZ, double dAggZ = max( dElev + max( dSafeAggrBottZ, dAppr), 0.) ; // distanza dal bordo del pezzo double dDistBottom ; - if ( ! GetDistanceFromRawSide( m_nPhase, ptP, m_vtAux, dDistBottom)) + if ( ! GetDistanceFromRawSide( m_nPhase, ptP, m_vtAggrBottom, dDistBottom)) dDistBottom = 0 ; // post-retract - Point3d ptP0 = ptP - Z_AX * dAggZ + m_vtAux * ( dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; + Point3d ptP0 = ptP - Z_AX * dAggZ + m_vtAggrBottom * ( dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAggZ - dElev) ; if ( AddRapidMove( ptP0, MCH_CL_AGB_OUT) == GDB_ID_NULL) return false ; // se rinvio da sotto che richiede speciale rotazione if ( m_AggrBottom.nType == 1) { - Vector3d vtAux = m_vtAux ; + Vector3d vtAux = m_vtAggrBottom ; vtAux.Rotate( Z_AX, 90) ; SetAuxDir( vtAux) ; if ( AddRapidMove( ptP00, MCH_CL_AGB_UP) == GDB_ID_NULL) diff --git a/Milling.h b/Milling.h index 95e4363..645bdd8 100644 --- a/Milling.h +++ b/Milling.h @@ -120,5 +120,6 @@ class Milling : public Machining ToolData m_TParams ; // parametri utensile int m_nMills ; // numero di percorsi di lavoro generati bool m_bAggrBottom ; // flag utilizzo di aggregato da sotto + Vector3d m_vtAggrBottom ; // vettore direzione ausiliaria aggregato da sotto AggrBottom m_AggrBottom ; // dati eventuale aggregato da sotto } ; \ No newline at end of file diff --git a/Pocketing.cpp b/Pocketing.cpp index 8ebe110..1ff4c4f 100644 --- a/Pocketing.cpp +++ b/Pocketing.cpp @@ -1376,7 +1376,7 @@ Pocketing::VerifyPathFromBottom( const ICurveComposite* pCompo, const Vector3d& return false ; } // assegno direzione di accesso e segnalo utilizzo aggregato da sotto - SetAuxDir( vtDir) ; + m_vtAggrBottom = vtDir ; m_bAggrBottom = true ; return true ; } @@ -1946,26 +1946,26 @@ Pocketing::AddApproach( const Point3d& ptP, const Vector3d& vtTool, double dSafe double dAggZ = max( dElev + max( dSafeAggrBottZ, dAppr), 0.) ; // distanza dal bordo del pezzo double dDistBottom ; - if ( ! GetDistanceFromRawSide( m_nPhase, ptP, m_vtAux, dDistBottom)) + if ( ! GetDistanceFromRawSide( m_nPhase, ptP, m_vtAggrBottom, dDistBottom)) dDistBottom = 0 ; // pre-approccio - Point3d ptP0 = ptP - Z_AX * dAggZ + m_vtAux * ( dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; + Point3d ptP0 = ptP - Z_AX * dAggZ + m_vtAggrBottom * ( dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAggZ - dElev) ; // se rinvio da sotto che richiede speciale rotazione if ( m_AggrBottom.nType == 1) { - Vector3d vtAux = m_vtAux ; + Vector3d vtAux = m_vtAggrBottom ; vtAux.Rotate( Z_AX, 90) ; SetAuxDir( vtAux) ; if ( AddRapidStart( ptP00, MCH_CL_AGB_DWN) == GDB_ID_NULL) return false ; - SetAuxDir( m_vtAux) ; + SetAuxDir( m_vtAggrBottom) ; SetFlag( 0) ; if ( AddRapidMove( ptP0, MCH_CL_AGB_IN) == GDB_ID_NULL) return false ; } // altrimenti rinvio normale else { - SetAuxDir( m_vtAux) ; + SetAuxDir( m_vtAggrBottom) ; if ( AddRapidStart( ptP0, MCH_CL_AGB_IN) == GDB_ID_NULL) return false ; SetFlag( 0) ; @@ -2047,16 +2047,16 @@ Pocketing::AddRetract( const Point3d& ptP, const Vector3d& vtTool, double dSafeZ double dAggZ = max( dElev + max( dSafeAggrBottZ, dAppr), 0.) ; // distanza dal bordo del pezzo double dDistBottom ; - if ( ! GetDistanceFromRawSide( m_nPhase, ptP, m_vtAux, dDistBottom)) + if ( ! GetDistanceFromRawSide( m_nPhase, ptP, m_vtAggrBottom, dDistBottom)) dDistBottom = 0 ; // post-retract - Point3d ptP0 = ptP - Z_AX * dAggZ + m_vtAux * ( dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; + Point3d ptP0 = ptP - Z_AX * dAggZ + m_vtAggrBottom * ( dDistBottom + m_AggrBottom.dEncH + dSafeZ) ; Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAggZ - dElev) ; if ( AddRapidMove( ptP0, MCH_CL_AGB_OUT) == GDB_ID_NULL) return false ; // se rinvio da sotto che richiede speciale rotazione if ( m_AggrBottom.nType == 1) { - Vector3d vtAux = m_vtAux ; + Vector3d vtAux = m_vtAggrBottom ; vtAux.Rotate( Z_AX, 90) ; SetAuxDir( vtAux) ; if ( AddRapidMove( ptP00, MCH_CL_AGB_UP) == GDB_ID_NULL) diff --git a/Pocketing.h b/Pocketing.h index 62c2f9f..52e2f68 100644 --- a/Pocketing.h +++ b/Pocketing.h @@ -127,5 +127,6 @@ class Pocketing : public Machining ToolData m_TParams ; // parametri utensile int m_nPockets ; // numero di percorsi di svuotatura generati bool m_bAggrBottom ; // flag di utilizzo dell'aggregato da sotto + Vector3d m_vtAggrBottom ; // vettore direzione ausiliaria aggregato da sotto AggrBottom m_AggrBottom ; // dati eventuale aggregato da sotto } ; \ No newline at end of file diff --git a/SetTempMachLook.h b/SetTempMachLook.h new file mode 100644 index 0000000..7e1c019 --- /dev/null +++ b/SetTempMachLook.h @@ -0,0 +1,37 @@ +//---------------------------------------------------------------------------- +// EgalTech 2017-2017 +//---------------------------------------------------------------------------- +// File : SetTempMachLook.h Data : 26.06.17 Versione : 1.8f +// Contenuto : Dichiarazione classe per impostazione temporanea +// della fase corrente. +// +// +// Modifiche : 14.10.16 DS Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "MachMgr.h" + +//---------------------------------------------------------------------------- +class SetTempMachLook +{ + public : + SetTempMachLook( MachMgr* pMachMgr, int nLook) + { m_pMachMgr = pMachMgr ; + if ( m_pMachMgr != nullptr) { + m_nPrevLook = m_pMachMgr->GetMachineLook() ; + m_pMachMgr->SetMachineLook( nLook) ; + } } + ~SetTempMachLook( void) + { Reset() ; } + void Reset( void) + { if ( m_pMachMgr != nullptr) + m_pMachMgr->SetMachineLook( m_nPrevLook) ; } + + private : + int m_nPrevLook ; + MachMgr* m_pMachMgr ; +} ;