From 688fc7ff8990ab8d1ffbbd3eca07333a7f9bb5ef Mon Sep 17 00:00:00 2001 From: SaraP Date: Thu, 23 Nov 2023 13:02:04 +0100 Subject: [PATCH] EgtExecutor 2.5k6 : - aggiunte funzioni Exe e Lua CurveGetVoronoi e CurveGetFatCurve. --- EXE_GdbGetCurve.cpp | 91 ++++++++++++++++++++++++++++++++++++++++++++ EgtExecutor.rc | Bin 18898 -> 18898 bytes LUA_GdbGetCurve.cpp | 55 ++++++++++++++++++++++++++ 3 files changed, 146 insertions(+) diff --git a/EXE_GdbGetCurve.cpp b/EXE_GdbGetCurve.cpp index 54b6702..8db34c9 100644 --- a/EXE_GdbGetCurve.cpp +++ b/EXE_GdbGetCurve.cpp @@ -26,6 +26,7 @@ #include "/EgtDev/Include/EGkDistPointCurve.h" #include "/EgtDev/Include/EGkIntersCurves.h" #include "/EgtDev/Include/EGkSurfFlatRegion.h" +#include "EgtDev/Include/EGkVoronoi.h" //---------------------------------------------------------------------------- bool @@ -676,3 +677,93 @@ ExeCurveCompoNormVersor( int nId, int nSimpCrv, int nRefId, Vector3d& vtNorm) // gestione trasformazione ( eventuale) return TransformVector( pGeomDB, nId, nRefId, vtNorm) ; } + +//---------------------------------------------------------------------------- +int +ExeCurveGetVoronoi( int nId, int nDestGrpId, int nBound, int* pnCount) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la curva + const ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nId)) ; + if ( pCrv == nullptr) + return GDB_ID_NULL ; + // recupero il riferimento della curva + Frame3d frCrv ; + if ( ! pGeomDB->GetGlobFrame( nId, frCrv)) + return GDB_ID_NULL ; + // recupero il riferimento di destinazione + Frame3d frDest ; + if ( ! pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest)) + return GDB_ID_NULL ; + + // recupero oggetto voronoi e calcolo diagramma di Voronoi + Voronoi* voronoi = pCrv->GetVoronoiObject() ; + if ( voronoi == nullptr) + return GDB_ID_NULL ; + ICURVEPOVECTOR vCrv ; + voronoi->CalcVoronoiDiagram( vCrv, nBound) ; + + // inserisco i risultati nel DB geometrico + int nFirstId = GDB_ID_NULL ; + int nCount = 0 ; + for ( int i = 0 ; i < int( vCrv.size()) ; i++) { + vCrv[i]->LocToLoc( frCrv, frDest) ; + int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, Release( vCrv[i])) ; + if ( nId != GDB_ID_NULL) { + nCount ++ ; + if ( nFirstId == GDB_ID_NULL) + nFirstId = nId ; + } + } + + // restituisco risultati + if ( pnCount != nullptr) + *pnCount = nCount ; + return nFirstId ; +} + +//---------------------------------------------------------------------------- +int +ExeCurveGetFatCurve( int nId, int nDestGrpId, double dRad, bool bSquareEnds, bool bSquareMids, int* pnCount) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la curva + const ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( nId)) ; + if ( pCrv == nullptr) + return GDB_ID_NULL ; + // recupero il riferimento della curva + Frame3d frCrv ; + if ( ! pGeomDB->GetGlobFrame( nId, frCrv)) + return GDB_ID_NULL ; + // recupero il riferimento di destinazione + Frame3d frDest ; + if ( ! pGeomDB->GetGroupGlobFrame( nDestGrpId, frDest)) + return GDB_ID_NULL ; + + // recupero oggetto voronoi e calcolo la curva ingrossata + Voronoi* voronoi = pCrv->GetVoronoiObject() ; + if ( voronoi == nullptr) + return GDB_ID_NULL ; + ICURVEPOVECTOR vCrv ; + voronoi->CalcFatCurve( vCrv, dRad, bSquareEnds, bSquareMids) ; + + // inserisco i risultati nel DB geometrico + int nFirstId = GDB_ID_NULL ; + int nCount = 0 ; + for ( int i = 0 ; i < int( vCrv.size()) ; i++) { + vCrv[i]->LocToLoc( frCrv, frDest) ; + int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nDestGrpId, Release( vCrv[i])) ; + if ( nId != GDB_ID_NULL) { + nCount ++ ; + if ( nFirstId == GDB_ID_NULL) + nFirstId = nId ; + } + } + + // restituisco risultati + if ( pnCount != nullptr) + *pnCount = nCount ; + return nFirstId ; +} diff --git a/EgtExecutor.rc b/EgtExecutor.rc index da7c8e93663978a3135c88c8020463865210e253..8d235a8a61b492c7dd352be3fbbe03b101596bc3 100644 GIT binary patch delta 243 zcmcaKneozO#trM3)jb*V7}6PX7*ZLEfmne-gCUrqgdq`#Gl9HNpll|HJz3tlb#olc zJSIl7%@@V4Gflq2na5~0Ignd-a{*Tk3sCf++-0W82LxfF21;&>n->Y|F@rU@0x76s zKgP|Iq`|@m)wCPvfEXT`2FO}@aHH`z!