EgtMachKernel 1.8c3 :

- prima versione funzionante di lavorazione generica con script lua
- corretta funzione per Lua EmtAddArcMove
- aggiunta VerifyAngleOutstroke
- corretta assegnazione valore precedente ad asse indeterminato
- corretta assegnazione angoli tenendo conto dei precedenti durante lavorazione.
This commit is contained in:
Dario Sassi
2017-03-08 19:47:08 +00:00
parent 0b1fe4b106
commit 6fce5b366d
16 changed files with 163 additions and 66 deletions
+3 -1
View File
@@ -476,8 +476,10 @@ Chiseling::Apply( bool bRecalc)
}
// se lavorazione vuota, esco
if ( m_nChisels == 0)
if ( m_nChisels == 0) {
LOG_INFO( GetEMkLogger(), "Warning in Chiseling : Plunges not found")
return true ;
}
// calcolo gli assi macchina
string sHint = ExtractHint( m_Params.m_sUserNotes) ;
BIN
View File
Binary file not shown.
+83 -50
View File
@@ -27,9 +27,15 @@
#include "/EgtDev/Include/EGkUserObjFactory.h"
#include "/EgtDev/Include/EGnStringKeyVal.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
#include "/EgtDev/Include/EgtIniFile.h"
using namespace std ;
//------------------------------ Errors --------------------------------------
// 2801 = "Error in GenMachining : UpdateToolData failed"
// 2802 = "Error in GenMachining : missing Script (xxx)"
// 2803 = "Error in GenMachining : Error in xxx (nnn)"
//----------------------------------------------------------------------------
USEROBJ_REGISTER( "EMkGenMachining", GenMachining) ;
@@ -209,6 +215,9 @@ GenMachining::SetParam( int nType, int nVal)
return false ;
m_Params.m_nSolCh = nVal ;
return true ;
case MPA_SUBTYPE :
m_Params.m_nSubType = nVal ;
return true ;
}
return false ;
}
@@ -399,33 +408,9 @@ GenMachining::Apply( bool bRecalc)
if ( m_pGeomDB == nullptr || ! m_pGeomDB->ExistsObj( m_nOwnerId))
return false ;
// recupero gruppo per geometria ausiliaria
int nAuxId = m_pGeomDB->GetFirstNameInGroup( m_nOwnerId, MCH_AUX) ;
bool bChain = false ;
// se non c'è, lo aggiungo
if ( nAuxId == GDB_ID_NULL) {
nAuxId = m_pGeomDB->AddGroup( GDB_ID_NULL, m_nOwnerId, Frame3d()) ;
if ( nAuxId == GDB_ID_NULL)
return false ;
m_pGeomDB->SetName( nAuxId, MCH_AUX) ;
m_pGeomDB->SetStatus( nAuxId, GDB_ST_OFF) ;
bChain = true ;
}
// altrimenti, se chiesto ricalcolo, lo svuoto
else if ( bRecalc) {
m_pGeomDB->EmptyGroup( nAuxId) ;
bChain = true ;
}
// aggiorno dati geometrici dell'utensile
if ( ! UpdateToolData()) {
LOG_INFO( GetEMkLogger(), "Error in GenMachining : UpdateToolData failed") ;
return false ;
}
// se necessario, eseguo concatenamento ed inserisco i percorsi sotto la geometria ausiliaria
if ( bChain && ! Chain( nAuxId)) {
LOG_INFO( GetEMkLogger(), "Error in GenMachining : Chaining failed") ;
m_pMchMgr->SetLastError( 2801, "Error in GenMachining : UpdateToolData failed") ;
return false ;
}
@@ -442,12 +427,76 @@ GenMachining::Apply( bool bRecalc)
else
m_pGeomDB->EmptyGroup( nClId) ;
// lavoro ogni singola catena
int nPathId = m_pGeomDB->GetFirstGroupInGroup( nAuxId) ;
while ( nPathId != GDB_ID_NULL) {
if ( ! ProcessPath( nPathId, GDB_ID_NULL, nClId))
return false ;
nPathId = m_pGeomDB->GetNextGroup( nPathId) ;
// costanti
static const string EMC_VAR = "EMC" ; // tabella variabili locali per calcolo
static const string EVAR_MACHID = ".MACHID" ; // IN (int) identificativo della lavorazione
static const string EVAR_GEOM = ".GEOM" ; // IN (table) tabella delle entità da lavorare
static const string EVAR_DEPTH = ".DEPTH" ; // IN (string) affondamento (espressione numerica)
static const string EVAR_INVERT = ".INVERT" ; // IN (bool) flag di inversione direzione lavorazione
static const string EVAR_STARTPOS = ".STARTPOS" ; // IN (num) quota di inizio lavorazione (sempre >= 0)
static const string EVAR_OFFSR = ".OFFSR" ; // IN (num) offset radiale
static const string EVAR_OFFSL = ".OFFSL" ; // IN (num) offset longitudinale
static const string EVAR_TOOL = ".TOOL" ; // IN (string) nome dell'utensile
static const string EVAR_FEED = ".FEED" ; // IN (num) feed dell'utensile
static const string EVAR_STARTFEED = ".STARTFEED" ;// IN (num) feed di inizio dell'utensile
static const string EVAR_ENDFEED = ".ENDFEED" ; // IN (num) feed di fine dell'utensile
static const string EVAR_TIPFEED = ".TIPFEED" ; // IN (num) feed di punta dell'utensile
static const string EVAR_SYSNOTES = ".SYSNOTES" ; // IN (string) note interne
static const string EVAR_USERNOTES = ".USERNOTES" ;// IN (string) note dell'utente
static const string EVAR_ERROR = ".ERR" ; // OUT (int) codice di errore ( 0 = ok)
static const string EVAR_MILLS = ".MILLS" ; // OUT (int) numero di percorsi di lavoro
static const string ON_APPLY = "OnApply_" ;
// recupero la macchina corrente
Machine* pMch = m_pMchMgr->GetCurrMachine() ;
if ( pMch == nullptr)
return false ;
// nome della funzione lua da Ini della macchina
string sMachIni = pMch->GetMachineDir() + "\\" + pMch->GetMachineName() + ".ini" ;
string sKey = GENMACHINING_SCRIPT_KEY + ToString( m_Params.m_nSubType) ;
string sName = GetPrivateProfileStringUtf8( GENMACHINING_SEC.c_str(), sKey.c_str(), "", sMachIni.c_str()) ;
string sApply = ON_APPLY + sName ;
// verifico esistenza funzione
if ( ! pMch->LuaExistsFunction( sApply)) {
string sErr = "Error in GenMachining : missing Script " + sApply ;
m_pMchMgr->SetLastError( 2802, sErr) ;
return false ;
}
// imposto stato
bool bOk = true ;
int nErr = 99 ;
// imposto valori parametri
bOk = bOk && pMch->LuaCreateGlobTable( EMC_VAR) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_MACHID, m_nOwnerId) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_GEOM, m_vId) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_DEPTH, m_Params.m_sDepth) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_INVERT, m_Params.m_bInvert) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_STARTPOS, m_Params.m_dStartPos) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_OFFSR, GetOffsR()) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_OFFSL, GetOffsL()) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TOOL, m_TParams.m_sName) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_FEED, GetFeed()) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_STARTFEED, GetStartFeed()) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_ENDFEED, GetEndFeed()) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TIPFEED, GetTipFeed()) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_SYSNOTES, m_Params.m_sSysNotes) ;
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_USERNOTES, m_Params.m_sUserNotes) ;
// eseguo
bOk = bOk && pMch->LuaCallFunction( sApply, false) ;
// recupero valori parametri obbligatori
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_ERROR, nErr) ;
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_MILLS, m_nMills) ;
// reset
bOk = bOk && pMch->LuaResetGlobVar( EMC_VAR) ;
// segnalo errori
if ( ! bOk || nErr != 0) {
m_nMills = 0 ;
string sErr = "Error in GenMachining : Error in " + sApply + " (" + ToString( nErr) + ")" ;
m_pMchMgr->SetLastError( 2803, sErr) ;
return false ;
}
// se lavorazione vuota, esco
@@ -494,6 +543,9 @@ GenMachining::GetParam( int nType, int& nVal) const
case MPA_SCC :
nVal = m_Params.m_nSolCh ;
return true ;
case MPA_SUBTYPE :
nVal = m_Params.m_nSubType ;
return true ;
}
nVal = 0 ;
return false ;
@@ -1041,25 +1093,6 @@ GenMachining::ProcessPath( int nPathId, int nPvId, int nClId)
else
return false ;
// per frese normali, verifico di non superare il massimo materiale
if ( ( m_TParams.m_nType & TF_SAWBLADE) == 0) {
const double MAXMAT_TOL = EPS_SMALL ;
if ( dElev > m_TParams.m_dMaxMat + MAXMAT_TOL) {
if ( dDepth + max( dThick, 0.0) > m_TParams.m_dMaxMat) {
dDepth = m_TParams.m_dMaxMat - max( dThick, 0.0) ;
string sInfo = "Warning in GenMachining : machining depth (" + ToString( dElev, 1) +
") bigger than MaxMaterial (" + ToString( m_TParams.m_dMaxMat, 1) + ")" ;
LOG_INFO( GetEMkLogger(), sInfo.c_str()) ;
}
else {
string sInfo = "Error in GenMachining : machining depth (" + ToString( dElev, 1) +
") bigger than MaxMaterial (" + ToString( m_TParams.m_dMaxMat, 1) + ")" ;
LOG_INFO( GetEMkLogger(), sInfo.c_str()) ;
return false ;
}
}
}
// se richiesta anteprima
if ( nPvId != GDB_ID_NULL) {
// creo gruppo per geometria di lavorazione del percorso
+14
View File
@@ -40,6 +40,7 @@ enum nGenMachiningKey {
KEY_PS,
KEY_S,
KEY_SCC,
KEY_SUBTYPE,
KEY_TNAME,
KEY_TUUID,
KEY_UUID,
@@ -60,6 +61,7 @@ static const std::array<std::string,KEY_ZZZ> sGenMachiningKey = {
"PS",
"S",
"SCC",
"SUB",
"TN",
"TU",
"UUID"} ;
@@ -110,6 +112,7 @@ GenMachiningData::CopyFrom( const MachiningData* pMdata)
m_bInvert = pGdata->m_bInvert ;
m_sDepth = pGdata->m_sDepth ;
m_dStartPos = pGdata->m_dStartPos ;
m_nSubType = pGdata->m_nSubType ;
m_sSysNotes = pGdata->m_sSysNotes ;
m_sUserNotes = pGdata->m_sUserNotes ;
return true ;
@@ -142,6 +145,7 @@ GenMachiningData::SameAs(const MachiningData* pMdata) const
m_bInvert == pGdata->m_bInvert &&
m_sDepth == pGdata->m_sDepth &&
abs( m_dStartPos - pGdata->m_dStartPos) < EPS_MACH_LEN_PAR &&
m_nSubType == pGdata->m_nSubType &&
m_sSysNotes == pGdata->m_sSysNotes &&
m_sUserNotes == pGdata->m_sUserNotes) ;
}
@@ -227,6 +231,9 @@ GenMachiningData::FromString( const string& sString, int& nKey)
case KEY_SCC :
bOk = ::FromString( sVal, m_nSolCh) ;
break ;
case KEY_SUBTYPE :
bOk = ::FromString( sVal, m_nSubType) ;
break ;
case KEY_TNAME :
m_sToolName = sVal ;
break ;
@@ -262,6 +269,7 @@ GenMachiningData::ToString( int nKey) const
case KEY_PS : return ( sGenMachiningKey[KEY_PS] + "=" + ::ToString( m_dStartPos)) ;
case KEY_S : return ( sGenMachiningKey[KEY_S] + "=" + ::ToString( m_dSpeed)) ;
case KEY_SCC : return ( sGenMachiningKey[KEY_SCC] + "=" + ::ToString( m_nSolCh)) ;
case KEY_SUBTYPE : return ( sGenMachiningKey[KEY_SUBTYPE] + "=" + ::ToString( m_nSubType)) ;
case KEY_TNAME : return ( sGenMachiningKey[KEY_TNAME] + "=" + m_sToolName) ;
case KEY_TUUID : return ( sGenMachiningKey[KEY_TUUID] + "=" + ::ToString( m_ToolUuid)) ;
case KEY_UUID : return ( sGenMachiningKey[KEY_UUID] + "=" + ::ToString( m_Uuid)) ;
@@ -330,6 +338,9 @@ GenMachiningData::SetParam( int nType, int nVal)
return false ;
m_nSolCh = nVal ;
return true ;
case MPA_SUBTYPE :
m_nSubType = nVal ;
return true ;
}
return false ;
}
@@ -431,6 +442,9 @@ GenMachiningData::GetParam( int nType, int& nVal) const
case MPA_SCC :
nVal = m_nSolCh ;
return true ;
case MPA_SUBTYPE :
nVal = m_nSubType ;
return true ;
}
nVal = 0 ;
return false ;
+3 -2
View File
@@ -28,15 +28,16 @@ struct GenMachiningData : public MachiningData
double m_dTipFeed ; // velocità di lavorazione di sfondamento ( se 0 da utensile)
double m_dOffsR ; // offset radiale ( se UNKNOWN_PAR da utensile)
double m_dOffsL ; // offset longitudinale ( se UNKNOWN_PAR da utensile)
bool m_bInvert ; // flag di inversione direzione lavorazione per fori aperti
bool m_bInvert ; // flag di inversione direzione lavorazione
std::string m_sDepth ; // affondamento (espressione numerica)
double m_dStartPos ; // quota di inizio lavorazione (sempre >= 0)
int m_nSubType ; // da [GenMachining] di Ini di macchina
std::string m_sSysNotes ; // note interne
std::string m_sUserNotes ; // note dell'utente
GenMachiningData( void)
: m_ToolUuid(), m_nSolCh( 0), m_dSpeed( 0), m_dFeed( 0), m_dStartFeed( 0), m_dEndFeed( 0), m_dTipFeed( 0),
m_dOffsR( 0), m_dOffsL( 0), m_bInvert( false), m_dStartPos( 0) {}
m_dOffsR( 0), m_dOffsL( 0), m_bInvert( false), m_dStartPos( 0), m_nSubType( 0) {}
GenMachiningData* Clone( void) const override ;
bool CopyFrom( const MachiningData* pMdata) override ;
bool SameAs(const MachiningData* pMdata) const override ;
+7 -1
View File
@@ -72,10 +72,16 @@ const std::string MACHININGS_DIR = "Machinings" ;
// Nome file delle lavorazioni
const std::string MACHININGS_FILE = "Machinings.data" ;
//----------------------------------------------------------------------------
// Sezione lavorazioni generiche nel file INI di macchina
const std::string GENMACHINING_SEC = "GenMachining" ;
// Chiave (radice) per nome lavorazione generica i-esima
const std::string GENMACHINING_SCRIPT_KEY = "GenScript" ;
//----------------------------------------------------------------------------
// Sezione di attrezzaggio nel file INI di macchina
const std::string SETUP_SEC = "Setup" ;
// Chaive per attrezzaggio di default
// Chiave per attrezzaggio di default
const std::string SETUP_DEF_KEY = "Default" ;
//----------------------------------------------------------------------------
+1
View File
@@ -356,6 +356,7 @@ class MachMgr : public IMachMgr
bool IsKinematicRotAxisBlocked( int nInd) const ;
double GetCalcRot1W( void) const ;
bool SetCalcSolCh( int nScc) ;
bool VerifyAngleOutstroke( int nInd, double dAng) const ;
// operations
bool GetOperationNewName( std::string& sName) const ;
const ToolData* GetMachiningToolData( void) const ;
+8
View File
@@ -539,6 +539,14 @@ MachMgr::LimitAngleToStroke( int nInd, double& dAng) const
return ( ( pMch != nullptr) ? pMch->LimitAngleToStroke( nInd, dAng) : false) ;
}
//----------------------------------------------------------------------------
bool
MachMgr::VerifyAngleOutstroke( int nInd, double dAng) const
{
Machine* pMch = GetCurrMachine() ;
return ( ( pMch != nullptr) ? pMch->VerifyAngleOutstroke( nInd, dAng) : false) ;
}
//----------------------------------------------------------------------------
bool
MachMgr::VerifyOutstroke( double dX, double dY, double dZ, double dAngA, double dAngB, int& nStat)
-1
View File
@@ -35,7 +35,6 @@ MachMgr::GetDefaultSetupName( string& sName) const
if ( pMch == nullptr)
return false ;
// recupero da file Ini della macchina
//string sMachIni = m_sMachinesDir + "\\" + GetCurrMGeoName() + "\\" + GetCurrMGeoName() + ".ini" ;
string sMachIni = pMch->GetMachineDir() + "\\" + pMch->GetMachineName() + ".ini" ;
string sDefault = GetPrivateProfileStringUtf8( SETUP_SEC.c_str(), SETUP_DEF_KEY.c_str(), "", sMachIni.c_str()) ;
// se non trovato, errore
+1
View File
@@ -110,6 +110,7 @@ class Machine
bool GetToolDirFromAngles( double dAngA, double dAngB, Vector3d& vtDir) const ;
bool GetNearestAngleInStroke( int nInd, double dAngRef, double& dAng) const ;
bool LimitAngleToStroke( int nInd, double& dAng) const ;
bool VerifyAngleOutstroke( int nInd, double dAng) const ;
bool VerifyOutstroke( double dX, double dY, double dZ, const DBLVECTOR& vAng, int& nStat) const ;
const std::string& GetOutstrokeInfo( void) const
{ return m_sOutstrokeInfo ; }
+16
View File
@@ -1148,6 +1148,22 @@ Machine::LimitAngleToStroke( int nInd, double& dAng) const
return true ;
}
//----------------------------------------------------------------------------
bool
Machine::VerifyAngleOutstroke( int nInd, double dAng) const
{
// se angolo fittizio (non esiste l'asse rotante corrispondente), va bene
if ( nInd < 0 || nInd >= int( m_vCalcRotAx.size()))
return true ;
// se angolo fuori corsa, errore
if ( dAng < m_vCalcRotAx[nInd].stroke.Min)
return false ;
else if ( dAng > m_vCalcRotAx[nInd].stroke.Max)
return false ;
// va bene
return true ;
}
//----------------------------------------------------------------------------
bool
Machine::VerifyOutstroke( double dX, double dY, double dZ, const DBLVECTOR& vAng, int& nStat) const
+2 -2
View File
@@ -229,9 +229,9 @@ Machine::LuaEmtAddArcMove( lua_State* L)
bool bOk = ! IsNull( pArc) ;
// assegno i dati dell'arco
double dDeltaZ = ( ptFin - ptIni) * vtN ;
bOk = bOk && ( ! pArc->SetCPAN( ptCen, ptIni, dAngCen, dDeltaZ, vtN)) ;
bOk = bOk && pArc->SetCPAN( ptCen, ptIni, dAngCen, dDeltaZ, vtN) ;
Point3d ptCalcFin ;
bOk = bOk && ( ! pArc->GetEndPoint( ptCalcFin) || ! AreSamePointApprox( ptCalcFin, ptFin)) ;
bOk = bOk && ( pArc->GetEndPoint( ptCalcFin) && AreSamePointApprox( ptCalcFin, ptFin)) ;
int nMove = ( dAngCen > 0 ? 3 : 2) ;
// inserisco l'oggetto nel DB geometrico
int nId = ( bOk ? m_pMchLua->m_pGeomDB->AddGeoObj( GDB_ID_NULL, nPathId, Release( pArc)) : GDB_ID_NULL) ;
+3 -1
View File
@@ -529,8 +529,10 @@ Milling::Apply( bool bRecalc)
}
// se lavorazione vuota, esco
if ( m_nMills == 0)
if ( m_nMills == 0) {
LOG_INFO( GetEMkLogger(), "Warning in Milling : No machinable path")
return true ;
}
// calcolo gli assi macchina
string sHint = ExtractHint( m_Params.m_sUserNotes) ;
+17 -5
View File
@@ -783,7 +783,7 @@ Operation::CalculateClPathAxesValues( int nClPathId, int nLinAxes, int nRotAxes,
// ignoro gli assi bloccati
if ( m_pMchMgr->IsKinematicRotAxisBlocked( i))
continue ;
// assegno il precedente
// assegno il precedente ed esco
vAng1[i] = vAxRotPrec[i] ;
m_pMchMgr->LimitAngleToStroke( i, vAng1[i]) ;
break ;
@@ -801,13 +801,16 @@ Operation::CalculateClPathAxesValues( int nClPathId, int nLinAxes, int nRotAxes,
// ignoro gli assi bloccati
if ( m_pMchMgr->IsKinematicRotAxisBlocked( i))
continue ;
// assegno il precedente
// assegno il precedente ed esco
vAng1[i] = vAxRotPrec[i] ;
break ;
}
}
}
}
if ( abs( nRStat) == 2) {
bool bAng1 = true ;
bool bAng2 = true ;
// se primo movimento
if ( bFirst) {
// porto gli angoli ai valori più vicini ai precedenti con offset di uno o più giri
@@ -821,10 +824,11 @@ Operation::CalculateClPathAxesValues( int nClPathId, int nLinAxes, int nRotAxes,
// ignoro gli assi bloccati
if ( m_pMchMgr->IsKinematicRotAxisBlocked( i))
continue ;
// assegno il precedente
// assegno il precedente ed esco
vAng1[i] = vAxRotPrec[i] ;
m_pMchMgr->LimitAngleToStroke( i, vAng1[i]) ;
vAng2[i] = vAng1[i] ;
break ;
}
}
}
@@ -839,12 +843,20 @@ Operation::CalculateClPathAxesValues( int nClPathId, int nLinAxes, int nRotAxes,
// ignoro gli assi bloccati
if ( m_pMchMgr->IsKinematicRotAxisBlocked( i))
continue ;
// assegno il precedente
// assegno il precedente ed esco
vAng1[i] = vAxRotPrec[i] ;
vAng2[i] = vAng1[i] ;
break ;
}
}
}
// verifico che le soluzioni siano nelle corse
for ( int i = 0 ; i < int( vAng1.size()) ; ++ i) {
if ( ! m_pMchMgr->VerifyAngleOutstroke( i, vAng1[i]))
bAng1 = false ;
if ( ! m_pMchMgr->VerifyAngleOutstroke( i, vAng2[i]))
bAng2 = false ;
}
}
// scelgo la soluzione più vicina alla precedente
double dDelta1 = 0 ;
@@ -858,7 +870,7 @@ Operation::CalculateClPathAxesValues( int nClPathId, int nLinAxes, int nRotAxes,
dDelta1 += fabs( vAng1[i] - vAxRotPrec[i]) * ( bFirst ? dRot1W : 1) ;
dDelta2 += fabs( vAng2[i] - vAxRotPrec[i]) * ( bFirst ? dRot1W : 1) ;
}
if ( dDelta2 < dDelta1 - EPS_ANG_SMALL)
if ( bAng2 && ( dDelta2 < dDelta1 - EPS_ANG_SMALL || ! bAng1))
vAng1 = vAng2 ;
}
// ricavo posizione con eventuali modifiche dipendenti dalla lavorazione
+3 -1
View File
@@ -510,8 +510,10 @@ Pocketing::Apply( bool bRecalc)
return false ;
// se lavorazione vuota, esco
if ( m_nPockets == 0)
if ( m_nPockets == 0) {
LOG_INFO( GetEMkLogger(), "Warning in Pocketing : No machinable pocket")
return true ;
}
// calcolo gli assi macchina
string sHint = ExtractHint( m_Params.m_sUserNotes) ;
+2 -2
View File
@@ -394,7 +394,7 @@ Sawing::SetGeometry( const SELVECTOR& vIds)
// test sull'entità
int nSubs ;
if ( ! VerifyGeometry( Id, nSubs)) {
string sOut = "Entity " + ToString( Id) + " skipped by Sawing" ;
string sOut = "Warning in Sawing : Skipped entity " + ToString( Id) ;
LOG_INFO( GetEMkLogger(), sOut.c_str()) ;
continue ;
}
@@ -887,7 +887,7 @@ Sawing::Chain( int nGrpDestId)
vpCrvs.emplace_back( GetCurve( Id)) ;
// ne verifico la validità
if ( IsNull( vpCrvs.back())) {
string sOut = "Entity " + ToString( Id) + " skipped by Sawing" ;
string sOut = "Warning in Sawing : Skipped entity " + ToString( Id) ;
LOG_INFO( GetEMkLogger(), sOut.c_str()) ;
vpCrvs.back().Reset() ;
}