From dc759d5eb3690dc0f38d4520d26f8f10035dfe8d Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Wed, 4 Mar 2026 15:43:16 +0100 Subject: [PATCH] EgtExecutor : - aggiunta funzione per ottenere part e shell di una faccia di una trimesh. --- EXE_GdbGetSurf.cpp | 14 ++++++++++++++ LUA_GdbGetSurf.cpp | 22 ++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/EXE_GdbGetSurf.cpp b/EXE_GdbGetSurf.cpp index ac52675..72905cd 100644 --- a/EXE_GdbGetSurf.cpp +++ b/EXE_GdbGetSurf.cpp @@ -374,6 +374,20 @@ ExeSurfTmPartCount( int nId) return pStm->GetPartCount() ; } +//---------------------------------------------------------------------------- +bool +ExeSurfTmGetPartAndShellFromFacet( int nIdSurfTm, int nIdFacet, int& nPart, int& nShell) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, -1) + // recupero la superficie trimesh + const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nIdSurfTm)) ; + if ( pStm == nullptr) + return false ; + // recupero la parte e la shell a cui appartiene la faccia passata + return pStm->GetPartAndShellFromFacet( nIdFacet, nPart, nShell) ; +} + //----------------------------------------------------------------------------- bool ExeSurfTmGetVertex( int nId, int nVert, int nRefId, Point3d& ptVert) diff --git a/LUA_GdbGetSurf.cpp b/LUA_GdbGetSurf.cpp index 7d3c78f..f710511 100644 --- a/LUA_GdbGetSurf.cpp +++ b/LUA_GdbGetSurf.cpp @@ -301,6 +301,27 @@ LuaSurfTmPartCount( lua_State* L) return 1 ; } +//---------------------------------------------------------------------------- +static int +LuaSurfTmGetPartAndShellFromFacet( lua_State* L) +{ + // 2 parametri : Id SurfTm, Id Facet + int nIdSurfTm ; + LuaCheckParam( L, 1, nIdSurfTm) + int nIdFacet ; + LuaCheckParam( L, 1, nIdFacet) + LuaClearStack( L) ; + // recupero il numero di parti della superficie trimesh + int nPart = - 1 ; + int nShell = - 1 ; + ExeSurfTmGetPartAndShellFromFacet( nIdSurfTm, nIdFacet, nPart, nShell) ; + if ( nPart >= 0) + LuaSetParam( L, nPart) ; + else + LuaSetParam( L) ; + return 1 ; +} + //---------------------------------------------------------------------------- static int LuaSurfTmGetVertex( lua_State* L) @@ -1299,6 +1320,7 @@ LuaInstallGdbGetSurf( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmVertexCount", LuaSurfTmVertexCount) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetCount", LuaSurfTmFacetCount) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmPartCount", LuaSurfTmPartCount) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetPartAndShellFromFacet", LuaSurfTmGetPartAndShellFromFacet) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetVertex", LuaSurfTmGetVertex) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetNearestVertex", LuaSurfTmGetNearestVertex) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmTriangleNormVersor", LuaSurfTmTriangleNormVersor) ;