diff --git a/EXE_GdbModifySurf.cpp b/EXE_GdbModifySurf.cpp index a6b3269..f6df9d2 100644 --- a/EXE_GdbModifySurf.cpp +++ b/EXE_GdbModifySurf.cpp @@ -1074,6 +1074,45 @@ ExeSurfTmSubtractProjectedFacesOnFace( int nSurfId, int nFaceInd, int nDestGrpId return bOk ; } +//---------------------------------------------------------------------------- +bool +ExeSurfTmSetFaceColor( int nId, int nFacet, int nColor) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la superficie TriMesh + ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ; + bool bOk = ( pStm != nullptr) ; + // recupero tutti i triangoli della faccia e imposto il flag opportuno per il colore + INTVECTOR vTria ; + bOk = bOk && pStm->GetAllTriaInFacet( nFacet, vTria) ; + for ( const auto nT : vTria) + pStm->SetTFlag( nT, nColor) ; + ExeSetModified() ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLua = "EgtSurfTmSetFaceColor(" + ToString( nId) + "," + + ToString( nFacet) + "," + + ToString( nColor) + ")" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + return bOk ; +} + +//---------------------------------------------------------------------------- +bool +ExeSurfTmGetTriaColor( int nId, int nTria, int& nColor) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la superficie TriMesh + ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ; + bool bOk = ( pStm != nullptr) ; + // recupero il colore del triangolo + return ( bOk && pStm->GetTFlag( nTria, nColor)) ; +} + //---------------------------------------------------------------------------- bool ExeSurfTmResetTwoColors( int nId) @@ -1118,6 +1157,20 @@ ExeSurfTmSetShowEdges( int nId, bool bShow) return bOk ; } +//---------------------------------------------------------------------------- +bool +ExeSurfTmGetShowEdges( int nId, bool& bShow) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la superficie trimesh + ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ; + bool bOk = ( pStm != nullptr) ; + // recupero lo stato di visualizzazione degli spigoli vivi + bShow = ( bOk && pStm->GetShowEdges()) ; + return bOk ; +} + //---------------------------------------------------------------------------- static bool MySurfBzTrim( int nId, int nTrimmerId) diff --git a/LUA_GdbModifySurf.cpp b/LUA_GdbModifySurf.cpp index da4bedd..58e046d 100644 --- a/LUA_GdbModifySurf.cpp +++ b/LUA_GdbModifySurf.cpp @@ -479,6 +479,44 @@ LuaSurfTmSubtractProjectedFacesOnFace( lua_State* L) return 4 ; } +//------------------------------------------------------------------------------- +static int +LuaSurfTmSetFaceColor( lua_State* L) +{ + // 3 parametri : Id, nFacet, nColor + int nId ; + LuaCheckParam( L, 1, nId) + int nFacet ; + LuaCheckParam( L, 2, nFacet) + int nColor ; + LuaCheckParam( L, 3, nColor) + LuaClearStack( L) ; + // imposto il colore alla faccia della superficie TM + bool bOk = ExeSurfTmSetFaceColor( nId, nFacet, nColor) ; + LuaSetParam( L, bOk) ; + return 1 ; +} + +//------------------------------------------------------------------------------- +static int +LuaSurfTmGetTriaColor( lua_State* L) +{ + // 2 parametri : Id, nTria + int nId ; + LuaCheckParam( L, 1, nId) + int nTria ; + LuaCheckParam( L, 2, nTria) + LuaClearStack( L) ; + // recupero il flag di colore del triangolo della superficie TM + int nColor ; + bool bOk = ExeSurfTmGetTriaColor( nId, nTria, nColor) ; + if ( bOk) + LuaSetParam( L, nColor) ; + else + LuaSetParam( L) ; + return 1 ; +} + //------------------------------------------------------------------------------- static int LuaSurfTmResetTwoColors( lua_State* L) @@ -510,6 +548,24 @@ LuaSurfTmSetShowEdges( lua_State* L) return 1 ; } +//------------------------------------------------------------------------------- +static int +LuaSurfTmGetShowEdges( lua_State* L) +{ + // 1 parametro : Id + int nId ; + LuaCheckParam( L, 1, nId) + LuaClearStack( L) ; + // recupero il flag di visualizzazione degli spigoli vivi della superficie TM + bool bShow ; + bool bOk = ExeSurfTmGetShowEdges( nId, bShow) ; + if ( bOk) + LuaSetParam( L, bShow) ; + else + LuaSetParam( L) ; + return 1 ; +} + //------------------------------------------------------------------------------- static int LuaSurfBzTrim( lua_State* L) @@ -554,8 +610,11 @@ LuaInstallGdbModifySurf( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSplit", LuaSurfTmSplit) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmCut", LuaSurfTmCut) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSubtractProjectedFacesOnFace", LuaSurfTmSubtractProjectedFacesOnFace) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSetFaceColor", LuaSurfTmSetFaceColor) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetTriaColor", LuaSurfTmGetTriaColor) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmResetTwoColors", LuaSurfTmResetTwoColors) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmSetShowEdges", LuaSurfTmSetShowEdges) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetShowEdges", LuaSurfTmGetShowEdges) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfBzTrim", LuaSurfBzTrim) ; return bOk ; }