diff --git a/EXE_GdbModifyCurve.cpp b/EXE_GdbModifyCurve.cpp index 9ccefab..3dca741 100644 --- a/EXE_GdbModifyCurve.cpp +++ b/EXE_GdbModifyCurve.cpp @@ -333,10 +333,9 @@ ExeChangeClosedCurveStartPoint( int nId, const Point3d& ptP, int nRefType) // porto in locale il punto vicino ad iniziale Point3d ptPL = GetPointLocal( pGeomDB, ptP, nRefType, frLoc) ; // recupero la posizione parametrica della proiezione di questo punto sulla curva - DistPointCurve distPC( ptPL, *pCurve) ; double dPar ; int nFlag ; - bOk = bOk && distPC.GetParamAtMinDistPoint( 0, dPar, nFlag) ; + bOk = bOk && DistPointCurve( ptPL, *pCurve).GetParamAtMinDistPoint( 0, dPar, nFlag) ; // cambio il punto iniziale if ( bOk && pCurve->GetType() == CRV_ARC) bOk = bOk && GetCurveArc(pCurve)->ChangeStartPoint(dPar) ; 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/EgtExecutor.rc b/EgtExecutor.rc index 54e0984..1b7dbb9 100644 Binary files a/EgtExecutor.rc and b/EgtExecutor.rc differ diff --git a/LUA_GdbGetCurve.cpp b/LUA_GdbGetCurve.cpp index dcb05cc..7f31ff1 100644 --- a/LUA_GdbGetCurve.cpp +++ b/LUA_GdbGetCurve.cpp @@ -584,6 +584,6 @@ LuaInstallGdbGetCurve( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoRadius", LuaCurveCompoRadius) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoAngCenter", LuaCurveCompoAngCenter) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoNormVersor", LuaCurveCompoNormVersor) ; - bOk = bOk && luaMgr.RegisterFunction( "EgtShowBezierControlPoints", LuaShowBezierCurveControlPoint) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtShowBezierCurveControlPoints", LuaShowBezierCurveControlPoint) ; return bOk ; } 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 ; } diff --git a/LUA_General.cpp b/LUA_General.cpp index e3eeca5..ce7da97 100644 --- a/LUA_General.cpp +++ b/LUA_General.cpp @@ -107,6 +107,24 @@ LuaPause( lua_State* L) return 1 ; } +//------------------------------------------------------------------------------- +static int +LuaGetKeyPressed( lua_State* L) +{ + // 1 parametro : nKeyCode + int nKeyCode ; + LuaCheckParam( L, 1, nKeyCode) + LuaClearStack( L) ; + // se abilitata UI, controllo se il tasto indicato è premuto + bool bPressed = false ; + if ( ExeGetEnableUI()) { + bPressed = (( GetAsyncKeyState( nKeyCode) & 0x8000) != 0) ; + } + // restituisco il risultato + LuaSetParam( L, bPressed) ; + return 1 ; +} + //------------------------------------------------------------------------------- static int LuaStartCounter( lua_State* L) @@ -1322,6 +1340,7 @@ LuaInstallGeneral( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "print", MyPrint) ; bOk = bOk && luaMgr.RegisterFunction( "EgtEvalNumExpr", LuaEvalNumExpr) ; bOk = bOk && luaMgr.RegisterFunction( "EgtPause", LuaPause) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtGetKeyPressed", LuaGetKeyPressed) ; bOk = bOk && luaMgr.RegisterFunction( "EgtStartCounter", LuaStartCounter) ; bOk = bOk && luaMgr.RegisterFunction( "EgtStopCounter", LuaStopCounter) ; bOk = bOk && luaMgr.RegisterFunction( "EgtNumToString", LuaNumToString) ;