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