diff --git a/EXE_GdbGetCurve.cpp b/EXE_GdbGetCurve.cpp index df7f2c3..ffc188d 100644 --- a/EXE_GdbGetCurve.cpp +++ b/EXE_GdbGetCurve.cpp @@ -60,6 +60,21 @@ ExeCurveLength( int nId, double* pdLen) return ( pCurve != nullptr && pCurve->GetLength( *pdLen)) ; } +//---------------------------------------------------------------------------- +bool +ExeCurveLengthAtParam( int nId, double dPar, double* pdLen) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // verifico il parametro + if ( pdLen == nullptr) + return false ; + // recupero la curva + ICurve* pCurve = GetCurve( pGeomDB->GetGeoObj( nId)) ; + // recupero la lunghezza + return ( pCurve != nullptr && pCurve->GetLengthAtParam( dPar, *pdLen)) ; +} + //---------------------------------------------------------------------------- bool ExeCurveParamAtLength( int nId, double dLen, double* pdPar) diff --git a/EgtExecutor.rc b/EgtExecutor.rc index c44c7be..7c53ece 100644 Binary files a/EgtExecutor.rc and b/EgtExecutor.rc differ diff --git a/LUA_GdbGetCurve.cpp b/LUA_GdbGetCurve.cpp index f46bed8..d779ee5 100644 --- a/LUA_GdbGetCurve.cpp +++ b/LUA_GdbGetCurve.cpp @@ -57,6 +57,25 @@ LuaCurveLength( lua_State* L) return 1 ; } +//---------------------------------------------------------------------------- +static int +LuaCurveLengthAtParam( lua_State* L) +{ + // 2 parametri : Id, dPar + int nId ; + LuaCheckParam( L, 1, nId) + double dPar ; + LuaCheckParam( L, 2, dPar) ; + LuaClearStack( L) ; + // recupero la lunghezza della curva + double dLen ; + if ( ExeCurveLengthAtParam( nId, dPar, &dLen)) + LuaSetParam( L, dLen) ; + else + LuaSetParam( L) ; + return 1 ; +} + //---------------------------------------------------------------------------- static int LuaCurveParamAtLength( lua_State* L) @@ -594,6 +613,7 @@ LuaInstallGdbGetCurve( LuaMgr& luaMgr) bool bOk = ( &luaMgr != nullptr) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCurveDomain", LuaCurveDomain) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCurveLength", LuaCurveLength) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtCurveLengthAtParam", LuaCurveLengthAtParam) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCurveParamAtLength", LuaCurveParamAtLength) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCurveParamAtPoint", LuaCurveParamAtPoint) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCurveIsClosed", LuaCurveIsClosed) ;