EgtExecutor 2.6b1 :
- modifiche a ExePocketing per accettare percorso piano e chiuso oltre che regione piana.
This commit is contained in:
+28
-17
@@ -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 ;
|
||||||
|
|||||||
Binary file not shown.
@@ -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 ;
|
||||||
|
|||||||
Reference in New Issue
Block a user