diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc
index 00e3738..ae520d7 100644
Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ
diff --git a/EgtMachKernel.vcxproj b/EgtMachKernel.vcxproj
index fce5d9d..6a16509 100644
--- a/EgtMachKernel.vcxproj
+++ b/EgtMachKernel.vcxproj
@@ -438,6 +438,7 @@ copy $(TargetPath) \EgtProg\Dll64
+
diff --git a/EgtMachKernel.vcxproj.filters b/EgtMachKernel.vcxproj.filters
index 884c3d5..511298e 100644
--- a/EgtMachKernel.vcxproj.filters
+++ b/EgtMachKernel.vcxproj.filters
@@ -767,6 +767,9 @@
Header Files
+
+ Header Files
+
diff --git a/MachMgrBasic.cpp b/MachMgrBasic.cpp
index 457ab9a..71c84ad 100644
--- a/MachMgrBasic.cpp
+++ b/MachMgrBasic.cpp
@@ -16,6 +16,7 @@
#include "MachMgr.h"
#include "MachConst.h"
#include "DllMain.h"
+#include "MachiningRegister.h"
#include "/EgtDev/Include/EMkDllMain.h"
#include "/EgtDev/Include/EGnStringUtils.h"
#include "/EgtDev/Include/EGnFileUtils.h"
@@ -32,6 +33,8 @@ CreateMachMgr( void)
// verifico la chiave e le opzioni
if ( ! GetEMkNetHwKey() && ! TestKeyForEMk( GetEMkKey(), 0, GetEMkLogger()))
return nullptr ;
+ // registro classe operazione per pocketing
+ RegisterPocketing() ;
// creo il MachMgr
return static_cast ( new(nothrow) MachMgr) ;
}
diff --git a/MachiningRegister.h b/MachiningRegister.h
new file mode 100644
index 0000000..2775165
--- /dev/null
+++ b/MachiningRegister.h
@@ -0,0 +1,40 @@
+//----------------------------------------------------------------------------
+// EgalTech 2025-2025
+//----------------------------------------------------------------------------
+// File : MachiningRegister.h Data : 02.05.25 Versione : 2.7e1
+// Contenuto : Funzioni per registrazione dinamica oggetti delle lavorazioni
+// (per decidere tra versioni diverse di una lavorazione).
+//
+//
+// Modifiche : 02.05.25 DS Creazione modulo.
+//
+//
+//----------------------------------------------------------------------------
+
+#pragma once
+
+#include "OperationConst.h"
+#include "Pocketing.h"
+#include "PocketingNT.h"
+#include "/EgtDev/Include/EGkUserObjFactory.h"
+#include "/EgtDev/Include/EgtIniFile.h"
+
+//----------------------------------------------------------------------------
+// Registrazione dinamica delle svuotature da parametro nel file Ini dell'eseguibile
+inline bool
+RegisterPocketing( void)
+{
+ const char* SEC_MACH = "Mach" ;
+ const char* KEY_POCKETING = "Pocketing" ;
+ static bool bFirst = true ;
+ if ( bFirst) {
+ std::string sIniPath ;
+ ExeGetIniFile( sIniPath) ;
+ if ( GetPrivateProfileInt( SEC_MACH, KEY_POCKETING, 1, sIniPath.c_str()) == 2)
+ UserObjRegister::DoRegister( GetOperationClass( OPER_POCKETING)) ;
+ else
+ UserObjRegister::DoRegister( GetOperationClass( OPER_POCKETING)) ;
+ bFirst = false ;
+ }
+ return true ;
+}
diff --git a/OperationConst.h b/OperationConst.h
index 84a6102..8c79e18 100644
--- a/OperationConst.h
+++ b/OperationConst.h
@@ -18,8 +18,6 @@
#include "/EgtDev/Include/EMkOperationConst.h"
#include
-#define POCKETING_NT 0
-
//----------------------------------------------------------------------------
static const std::string s_OpeClass[] = {"",
"EMkDisposition",
diff --git a/Pocketing.cpp b/Pocketing.cpp
index b4f9b1c..9f1a55b 100644
--- a/Pocketing.cpp
+++ b/Pocketing.cpp
@@ -95,9 +95,7 @@ const string UN_MAXOPTSIZE = "MaxOptSize" ;
// 2458 = "Warning in Pocketing : machining depth (xxx) bigger than MaxMaterial (yyy)"
//----------------------------------------------------------------------------
-#if POCKETING_NT != 1
- USEROBJ_REGISTER( GetOperationClass( OPER_POCKETING), Pocketing) ;
-#endif
+// USEROBJ_REGISTER( GetOperationClass( OPER_POCKETING), Pocketing) ;
//----------------------------------------------------------------------------
const string&
diff --git a/PocketingNT.cpp b/PocketingNT.cpp
index 645f949..731972b 100644
--- a/PocketingNT.cpp
+++ b/PocketingNT.cpp
@@ -112,9 +112,7 @@ const string UN_OPENEXTENSION = "OpenExtension" ;
#endif
//----------------------------------------------------------------------------
-#if POCKETING_NT == 1
- USEROBJ_REGISTER( GetOperationClass( OPER_POCKETING), PocketingNT) ;
-#endif
+// USEROBJ_REGISTER( GetOperationClass( OPER_POCKETING), PocketingNT) ;
//----------------------------------------------------------------------------
const string&
@@ -2956,7 +2954,7 @@ PocketingNT::AddPocket( STEPINFOPOVECTOR& vStepInfo, const Vector3d& vtTool, dou
( m_Params.m_nSubType == POCKET_SUB_ZIGZAG && ! currPath.bIsZigZagOneWayBorder) ||
( m_Params.m_nSubType == POCKET_SUB_ONEWAY && ! currPath.bIsZigZagOneWayBorder)) ;
if ( ! AddLeadIn( ptP1, ptStart, vtStart, vtTool, currStep.pSfrPock, Get( currPath.pCrvGuideIn),
- ( m_Params.m_nSubType == POCKET_SUB_SPIRALOUT) ? m_Params.m_bInvert : ! m_Params.m_bInvert,
+ ( m_Params.m_nSubType == POCKET_SUB_SPIRALOUT ? m_Params.m_bInvert : ! m_Params.m_bInvert),
bSplitArcs, bNoneForced, false)) {
m_pMchMgr->SetLastError( 3013, "Error in PocketingNT : LeadIn not computable") ;
return false ;
@@ -2968,18 +2966,12 @@ PocketingNT::AddPocket( STEPINFOPOVECTOR& vStepInfo, const Vector3d& vtTool, dou
Point3d ptP3 = pLine->GetEnd() ;
Vector3d vtMove ; pLine->GetStartDir( vtMove) ;
SetFeed( dCoeffFeed * GetRightFeed( vtMove, vtTool)) ;
- if ( AddLinearMove( ptP3) == GDB_ID_NULL)
+ if ( AddLinearMove( ptP3, bSplitArcs) == GDB_ID_NULL)
return false ;
}
- else if ( pCurve->GetType() == CRV_ARC) {
- ICurveArc* pArc = GetCurveArc( pCurve) ;
- Point3d ptCen = pArc->GetCenter() ;
- double dAngCen = pArc->GetAngCenter() ;
- Vector3d vtN = pArc->GetNormVersor() ;
- Point3d ptP3 ;
- pArc->GetEndPoint( ptP3) ;
+ else {
SetFeed( dCoeffFeed * GetFeed()) ;
- if ( AddArcMove( ptP3, ptCen, dAngCen, vtN) == GDB_ID_NULL)
+ if ( AddCurveMove( pCurve, bSplitArcs) == GDB_ID_NULL)
return false ;
}
// se ultima entitÃ
@@ -3057,9 +3049,9 @@ PocketingNT::AddPocket( STEPINFOPOVECTOR& vStepInfo, const Vector3d& vtTool, dou
}
// tratto lineare sopra al punto corrente
SetFeed( GetEndFeed()) ;
- AddLinearMove( ptEnd + vtTool * dCurrElev) ;
+ AddLinearMove( ptEnd + vtTool * dCurrElev, bSplitArcs) ;
// tratto lineare sopra a ptDest
- AddLinearMove( ptDest + vtTool * dNextElev) ;
+ AddLinearMove( ptDest + vtTool * dNextElev, bSplitArcs) ;
// aggiorno le elevazioni
dCurrElev = dNextElev ;
}