diff --git a/EXE_GeoSnap.cpp b/EXE_GeoSnap.cpp index 769a6ed..6e52ff5 100644 --- a/EXE_GeoSnap.cpp +++ b/EXE_GeoSnap.cpp @@ -951,6 +951,21 @@ ExeSurfFrNormVersor( int nId, int nRefId, Vector3d& vtNorm) return TrasformVector( pGeomDB, nId, nRefId, vtNorm) ; } +//---------------------------------------------------------------------------- +bool +ExeSurfFrGrossArea( int nId, double& dArea) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // verifico il parametro + if ( &dArea == nullptr) + return false ; + // recupero la Regione + const ISurfFlatRegion* pSfr = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId)) ; + // ne restituisco l'area senza eventuali buchi + return ( pSfr != nullptr && pSfr->GetGrossArea( dArea)) ; +} + //---------------------------------------------------------------------------- int ExeSurfFrChunkCount( int nId) diff --git a/LUA_GeoSnap.cpp b/LUA_GeoSnap.cpp index b68e29d..f42584c 100644 --- a/LUA_GeoSnap.cpp +++ b/LUA_GeoSnap.cpp @@ -634,6 +634,23 @@ LuaSurfFrNormVersor( lua_State* L) return 1 ; } +//---------------------------------------------------------------------------- +static int +LuaSurfFrGrossArea( lua_State* L) +{ + // 1 parametro : Id + int nId ; + LuaCheckParam( L, 1, nId) + LuaClearStack( L) ; + // recupero la sua area senza eventuali buchi + double dArea ; + if ( ExeSurfFrGrossArea( nId, dArea)) + LuaSetParam( L, dArea) ; + else + LuaSetParam( L) ; + return 1 ; +} + //---------------------------------------------------------------------------- static int LuaSurfFrChunkCount( lua_State* L) @@ -1044,6 +1061,7 @@ LuaInstallGeoSnap( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtSurfArea", LuaSurfArea) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfVolume", LuaSurfVolume) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrNormVersor", LuaSurfFrNormVersor) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrGrossArea", LuaSurfFrGrossArea) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrChunkCount", LuaSurfFrChunkCount) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfFrChunkSimpleClassify", LuaSurfFrChunkSimpleClassify) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetCount", LuaSurfTmFacetCount) ;