EgtExecutor 2.6b1 :

- modifiche a ExePocketing per accettare percorso piano e chiuso oltre che regione piana.
This commit is contained in:
Dario Sassi
2024-02-05 19:56:31 +01:00
parent f28da6d9e3
commit cce5e6ae76
3 changed files with 29 additions and 18 deletions
+28 -17
View File
@@ -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. // Contenuto : Funzioni di interrogazione di regioni piane del DBG per EXE.
// //
// //
@@ -16,6 +16,7 @@
#include "EXE.h" #include "EXE.h"
#include "EXE_Macro.h" #include "EXE_Macro.h"
#include "/EgtDev/Include/EXeExecutor.h" #include "/EgtDev/Include/EXeExecutor.h"
#include "/EgtDev/Include/EGkSfrCreate.h"
#include "/EgtDev/Include/EGkCalcPocketing.h" #include "/EgtDev/Include/EGkCalcPocketing.h"
using namespace std ; using namespace std ;
@@ -25,14 +26,26 @@ bool
ExePocketing( const int nId, double dRad, double dStep, double dAngle, int nType, bool bSmooth, int nDestGrpId, ExePocketing( const int nId, double dRad, double dStep, double dAngle, int nType, bool bSmooth, int nDestGrpId,
int& nFirstId, int& nCrvCount) int& nFirstId, int& nCrvCount)
{ {
// databse geometrico // database geometrico
IGeomDB* pGeomDB = GetCurrGeomDB() ; IGeomDB* pGeomDB = GetCurrGeomDB() ;
VERIFY_GEOMDB( pGeomDB, false) ; VERIFY_GEOMDB( pGeomDB, false) ;
// recupero la FlatRegion per i percorsi // recupero la FlatRegion da svuotare
PtrOwner<ISurfFlatRegion> pMySfr ;
const ISurfFlatRegion* pSfr = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId)) ; const ISurfFlatRegion* pSfr = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId)) ;
if ( pSfr == nullptr) if ( pSfr == nullptr) {
return false ; // 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 // recupero il suo frame
Frame3d frSfr ; Frame3d frSfr ;
@@ -44,23 +57,21 @@ ExePocketing( const int nId, double dRad, double dStep, double dAngle, int nType
if ( ! pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest)) if ( ! pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest))
return false ; return false ;
// costruzione vettori di curve per Pocketing
ICRVCOMPOPOVECTOR vCrvCompoRes ;
// eseguo Pocketing // eseguo Pocketing
ICRVCOMPOPOVECTOR vCrvCompoRes ;
bool bOk = CalcPocketing( pSfr, dRad, dStep, dAngle, nType, bSmooth, 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()) ; nCrvCount = int( vCrvCompoRes.size()) ;
if ( bOk && int( vCrvCompoRes.size()) > 0) { if ( bOk && nCrvCount > 0) {
// scorro le curve di Pocketing ottenute // scorro le curve di Pocketing ottenute
for ( int u = 0 ; u < int( vCrvCompoRes.size()) ; ++ u) { for ( int nI = 0 ; nI < nCrvCount ; ++ nI) {
vCrvCompoRes[u]->LocToLoc( frSfr, frDest) ; vCrvCompoRes[nI]->LocToLoc( frSfr, frDest) ;
// inserisco la curva nel DB Geometrico // 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) if ( nCurrId == GDB_ID_NULL)
return false ; return false ;
if ( u == 0) if ( nI == 0)
nFirstId = nCurrId ; // memorizzo il primo Id da restituire nFirstId = nCurrId ;
} }
ExeSetModified() ; ExeSetModified() ;
} }
@@ -73,7 +84,7 @@ ExePocketing( const int nId, double dRad, double dStep, double dAngle, int nType
ToString( nType) + "," + ToString( nType) + "," +
ToString( bSmooth) + "," + ToString( bSmooth) + "," +
ToString( nDestGrpId) + ")" + ToString( nDestGrpId) + ")" +
" -- Ok=" + ToString( bOk) + " FirstId=" + ToString( nFirstId) + " CurveCount=" + ToString( nCrvCount) ; " FirstId=" + ToString( nFirstId) + " CurveCount=" + ToString( nCrvCount) ;
LOG_INFO( GetCmdLogger(), sLua.c_str()) ; LOG_INFO( GetCmdLogger(), sLua.c_str()) ;
} }
return bOk ; return bOk ;
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -21,7 +21,7 @@ using namespace std ;
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
static int static int
LuaPocketing( lua_State* L) { LuaPocketing( lua_State* L) {
// 7 parametri : vId, dRad, dStep, dAngle, nType, bSmooth, nDestGrpId // 7 parametri : nId, dRad, dStep, dAngle, nType, bSmooth, nDestGrpId
int nId ; int nId ;
LuaCheckParam( L, 1, nId) ; LuaCheckParam( L, 1, nId) ;
double dRad ; double dRad ;