From cce5e6ae76838018ce42ed3225ca08ed3a9c7cd7 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 5 Feb 2024 19:56:31 +0100 Subject: [PATCH] EgtExecutor 2.6b1 : - modifiche a ExePocketing per accettare percorso piano e chiuso oltre che regione piana. --- EXE_GdbGetPocketing.cpp | 45 +++++++++++++++++++++++++--------------- EgtExecutor.rc | Bin 18890 -> 18890 bytes LUA_GdbGetPocketing.cpp | 2 +- 3 files changed, 29 insertions(+), 18 deletions(-) diff --git a/EXE_GdbGetPocketing.cpp b/EXE_GdbGetPocketing.cpp index a9cb888..14b8fb3 100644 --- a/EXE_GdbGetPocketing.cpp +++ b/EXE_GdbGetPocketing.cpp @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- -// EgalTech 2023-2023 +// EgalTech 2023-2024 //---------------------------------------------------------------------------- -// File : Exe_GdbGetPocketing.cpp Data : 28.11.23 Versione : 2.5k6 +// File : Exe_GdbGetPocketing.cpp Data : 02.02.24 Versione : 2.6b1 // Contenuto : Funzioni di interrogazione di regioni piane del DBG per EXE. // // @@ -16,6 +16,7 @@ #include "EXE.h" #include "EXE_Macro.h" #include "/EgtDev/Include/EXeExecutor.h" +#include "/EgtDev/Include/EGkSfrCreate.h" #include "/EgtDev/Include/EGkCalcPocketing.h" using namespace std ; @@ -25,14 +26,26 @@ bool ExePocketing( const int nId, double dRad, double dStep, double dAngle, int nType, bool bSmooth, int nDestGrpId, int& nFirstId, int& nCrvCount) { - // databse geometrico + // database geometrico IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) ; - // recupero la FlatRegion per i percorsi + // recupero la FlatRegion da svuotare + PtrOwner pMySfr ; const ISurfFlatRegion* pSfr = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId)) ; - if ( pSfr == nullptr) - return false ; + if ( pSfr == nullptr) { + // verifico se è una curva chiusa e piana che permette di definire una regione + const ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nId)) ; + Plane3d plPlane ; + if ( pCrv == nullptr || ! pCrv->IsFlat( plPlane, true, 10 * EPS_SMALL)) + return false ; + SurfFlatRegionByContours SfrCntr ; + SfrCntr.AddCurve( pCrv->Clone()) ; + pMySfr.Set( SfrCntr.GetSurf()) ; + if ( IsNull( pMySfr)) + return false ; + pSfr = pMySfr ; + } // recupero il suo frame Frame3d frSfr ; @@ -44,23 +57,21 @@ ExePocketing( const int nId, double dRad, double dStep, double dAngle, int nType if ( ! pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest)) return false ; - // costruzione vettori di curve per Pocketing - ICRVCOMPOPOVECTOR vCrvCompoRes ; - // eseguo Pocketing + ICRVCOMPOPOVECTOR vCrvCompoRes ; bool bOk = CalcPocketing( pSfr, dRad, dStep, dAngle, nType, bSmooth, vCrvCompoRes) ; - nFirstId = GDB_ID_NULL ; // primo Id da restituire + nFirstId = GDB_ID_NULL ; nCrvCount = int( vCrvCompoRes.size()) ; - if ( bOk && int( vCrvCompoRes.size()) > 0) { + if ( bOk && nCrvCount > 0) { // scorro le curve di Pocketing ottenute - for ( int u = 0 ; u < int( vCrvCompoRes.size()) ; ++ u) { - vCrvCompoRes[u]->LocToLoc( frSfr, frDest) ; + for ( int nI = 0 ; nI < nCrvCount ; ++ nI) { + vCrvCompoRes[nI]->LocToLoc( frSfr, frDest) ; // inserisco la curva nel DB Geometrico - int nCurrId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, Release( vCrvCompoRes[u])) ; + int nCurrId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, Release( vCrvCompoRes[nI])) ; if ( nCurrId == GDB_ID_NULL) return false ; - if ( u == 0) - nFirstId = nCurrId ; // memorizzo il primo Id da restituire + if ( nI == 0) + nFirstId = nCurrId ; } ExeSetModified() ; } @@ -73,7 +84,7 @@ ExePocketing( const int nId, double dRad, double dStep, double dAngle, int nType ToString( nType) + "," + ToString( bSmooth) + "," + ToString( nDestGrpId) + ")" + - " -- Ok=" + ToString( bOk) + " FirstId=" + ToString( nFirstId) + " CurveCount=" + ToString( nCrvCount) ; + " FirstId=" + ToString( nFirstId) + " CurveCount=" + ToString( nCrvCount) ; LOG_INFO( GetCmdLogger(), sLua.c_str()) ; } return bOk ; diff --git a/EgtExecutor.rc b/EgtExecutor.rc index 095266c8d01ca4ff99dceeb900bcbcb53c2fcf4b..27cb5519e55f1a968ca8372ff96bbbab07e294ef 100644 GIT binary patch delta 273 zcmX>#neo(Q#trM3wOtwV7}6PX7%~}(88R3Y7&I6{fg+gVdLuMw<($xY7UGTYoGWC4>u zE{3GfN(xn9jUuYPC?!65QXILt-?5mH7vv95u*-88Dnag^{DC=Z^9*MlW(=u=o2R*( GFaZF`K}8q< delta 260 zcmX>#neo(Q#trM3)jb*V7}6PX7*ZLEfmne-gCUrqgdq`#Gl9HNpll|Hz4<1yEHkSi zgARkq=HG12%*=^Eh9lQv7P#1PrpX%wD?s9t9l4S>_X%0R