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 ;
+} ;