EgtMachKernel 1.9k2 :

- aggiunta gestione massimo affondamento di utensile TdbGetCurrToolMaxDepth
- for each (.. in ..) sostituito da for ( .. : ..) vero costrutto C++.
This commit is contained in:
Dario Sassi
2018-11-28 17:11:39 +00:00
parent 7bd3465ec3
commit b9303acc5d
12 changed files with 119 additions and 24 deletions
+86 -7
View File
@@ -17,11 +17,14 @@
#include "stdafx.h"
#include "ToolsMgr.h"
#include "DllMain.h"
#include "MachConst.h"
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDEv/Include/EmkToolConst.h"
#include "/EgtDEv/Include/EGnStringKeyVal.h"
#include "/EgtDEv/Include/EGnFileUtils.h"
#include "/EgtDEv/Include/EGnScanner.h"
#include "/EgtDEv/Include/EGnWriter.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
#include <cassert>
#include <bitset>
@@ -58,11 +61,12 @@ ToolsMgr::Clear( void)
//----------------------------------------------------------------------------
bool
ToolsMgr::Load( const string& sToolsFile)
ToolsMgr::Load( const string& sToolsDir, const string& sToolsFile)
{
// salvo la path del file con i dati
m_sToolsFile = sToolsFile ;
string sOut = "ToolsMgr Init : " + m_sToolsFile ;
m_sToolsDir = sToolsDir ;
m_sToolsPath = m_sToolsDir + "\\" + sToolsFile ;
string sOut = "ToolsMgr Init : " + m_sToolsPath ;
LOG_INFO( GetEMkLogger(), sOut.c_str())
// carico
@@ -78,7 +82,7 @@ ToolsMgr::Reload( void)
// inizializzo lo scanner
Scanner TheScanner ;
if ( ! TheScanner.Init( m_sToolsFile, ";")) {
if ( ! TheScanner.Init( m_sToolsPath, ";")) {
LOG_ERROR( GetEMkLogger(), "ReloadTools : Error on Init")
return false ;
}
@@ -223,17 +227,17 @@ ToolsMgr::Save( bool bCompressed) const
return true ;
// faccio copia di backup del file originale
CopyFileEgt( m_sToolsFile, m_sToolsFile + ".bak") ;
CopyFileEgt( m_sToolsPath, m_sToolsPath + ".bak") ;
// inizializzo il writer
Writer TheWriter ;
if ( ! TheWriter.Init( m_sToolsFile, bCompressed)) {
if ( ! TheWriter.Init( m_sToolsPath, bCompressed)) {
LOG_ERROR( GetEMkLogger(), "SaveTools : Error on Init")
return false ;
}
// scrivo linea di inizio file
string sOut = "; --- " + m_sToolsFile + " " + CurrDateTime() + " ---" ;
string sOut = "; --- " + m_sToolsPath + " " + CurrDateTime() + " ---" ;
if ( ! TheWriter.OutText( sOut)) {
LOG_ERROR( GetEMkLogger(), "SaveTools : Error on Start")
return false ;
@@ -527,12 +531,34 @@ ToolsMgr::SaveCurrTool( void)
m_suData.emplace( m_tdCurrTool.m_sName, m_tdCurrTool.m_Uuid) ;
}
}
// aggiorno dati portautensile
UpdateCurrToolHolderData() ;
// eseguo salvataggio
m_bModified = true ;
iIter->second = m_tdCurrTool ;
return true ;
}
//----------------------------------------------------------------------------
bool
ToolsMgr::UpdateCurrToolHolderData( void)
{
// Leggo i dati del portautensile dal disegno dell'utensile
PtrOwner<IGeomDB> pGeomDB( CreateGeomDB()) ;
pGeomDB->Init() ;
string sDrawPath = m_sToolsDir + "\\" + m_tdCurrTool.m_sDraw ;
pGeomDB->Load( sDrawPath) ;
int nToolId = pGeomDB->GetFirstGroupInGroup( GDB_ID_ROOT) ;
double dTHoldLen = 0 ;
pGeomDB->GetInfo( nToolId, TTH_LEN, dTHoldLen) ;
double dTHoldDiam = 0 ;
pGeomDB->GetInfo( nToolId, TTH_DIAM, dTHoldDiam) ;
// Aggiorno i dati nelle note di sistema
SetValInNotes( TSI_THLEN, dTHoldLen, m_tdCurrTool.m_sSysNotes) ;
SetValInNotes( TSI_THDIAM, dTHoldDiam, m_tdCurrTool.m_sSysNotes) ;
return true ;
}
//----------------------------------------------------------------------------
bool
ToolsMgr::IsCurrToolModified( void) const
@@ -618,3 +644,56 @@ ToolsMgr::GetCurrToolParam( int nType, string& sVal) const
{
return ( m_bCurrTool ? m_tdCurrTool.GetParam( nType, sVal) : false) ;
}
//----------------------------------------------------------------------------
bool
ToolsMgr::GetCurrToolMaxDepth( double& dMaxDepth) const
{
// verifico esistenza utensile corrente
if ( ! m_bCurrTool)
return false ;
// se punta a forare
if ( ( m_tdCurrTool.m_nType & TF_DRILLBIT) != 0) {
dMaxDepth = m_tdCurrTool.m_dMaxMat ;
return true ;
}
// se lama
else if ( ( m_tdCurrTool.m_nType & TF_SAWBLADE) != 0) {
dMaxDepth = m_tdCurrTool.m_dMaxMat ;
return true ;
}
// se fresa
else if ( ( m_tdCurrTool.m_nType & TF_MILL) != 0) {
// recupero le dimensioni del porta utensili
double dTHoldLen = 0 ;
double dTHoldDiam = 0 ;
if ( ! GetValInNotes( m_tdCurrTool.m_sSysNotes, TSI_THLEN, dTHoldLen) ||
! GetValInNotes( m_tdCurrTool.m_sSysNotes, TSI_THDIAM, dTHoldDiam)) {
(const_cast<ToolsMgr*>(this))->SaveCurrTool() ;
Save() ;
GetValInNotes( m_tdCurrTool.m_sSysNotes, TSI_THLEN, dTHoldLen) ;
GetValInNotes( m_tdCurrTool.m_sSysNotes, TSI_THDIAM, dTHoldDiam) ;
}
// calcolo il massimo affondamento
dMaxDepth = m_tdCurrTool.m_dLen - ( m_tdCurrTool.m_dDiam > dTHoldDiam ? 0 : dTHoldLen) - MAX_DEPTH_SAFE ;
return true ;
}
// se mortasatrice o sega a catena
else if ( ( m_tdCurrTool.m_nType & TF_MORTISE) != 0) {
dMaxDepth = m_tdCurrTool.m_dMaxMat ;
return true ;
}
// se scalpello
else if ( ( m_tdCurrTool.m_nType & TF_CHISEL) != 0) {
dMaxDepth = m_tdCurrTool.m_dMaxMat ;
return true ;
}
// utensile composito
else if ( ( m_tdCurrTool.m_nType & TF_COMPO) != 0) {
// non ancora gestito
return false ;
}
return false ;
}