diff --git a/EXE_GdbGetCurve.cpp b/EXE_GdbGetCurve.cpp index a599bc0..1be905c 100644 --- a/EXE_GdbGetCurve.cpp +++ b/EXE_GdbGetCurve.cpp @@ -679,6 +679,48 @@ ExeCurveCompoNormVersor( int nId, int nSimpCrv, int nRefId, Vector3d& vtNorm) return TransformVector( pGeomDB, nId, nRefId, vtNorm) ; } +//---------------------------------------------------------------------------- +bool +ExeCurveCompoGetTempProp( int nId, INTVECTOR& vProp, int nPropInd) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la curva composita + const ICurveComposite* pCompo = GetCurveComposite( pGeomDB->GetGeoObj( nId)) ; + if ( pCompo == nullptr) + return false ; + // recupero i valori + vProp.clear() ; + vProp.reserve( pCompo->GetCurveCount()) ; + const ICurve* pSmplCrv = pCompo->GetFirstCurve() ; + while ( pSmplCrv != nullptr) { + vProp.push_back( pSmplCrv->GetTempProp( nPropInd)) ; + pSmplCrv = pCompo->GetNextCurve() ; + } + return true ; +} + +//---------------------------------------------------------------------------- +bool +ExeCurveCompoGetTempParam( int nId, DBLVECTOR& vParam, int nParamInd) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la curva composita + const ICurveComposite* pCompo = GetCurveComposite( pGeomDB->GetGeoObj( nId)) ; + if ( pCompo == nullptr) + return false ; + // recupero i valori + vParam.clear() ; + vParam.reserve( pCompo->GetCurveCount()) ; + const ICurve* pSmplCrv = pCompo->GetFirstCurve() ; + while ( pSmplCrv != nullptr) { + vParam.push_back( pSmplCrv->GetTempParam( nParamInd)) ; + pSmplCrv = pCompo->GetNextCurve() ; + } + return true ; +} + //---------------------------------------------------------------------------- int ExeShowCurveBezierControlPoints( int nCrvId, int* pnCount) diff --git a/EXE_GdbModifyCurve.cpp b/EXE_GdbModifyCurve.cpp index c3631bd..f4753ee 100644 --- a/EXE_GdbModifyCurve.cpp +++ b/EXE_GdbModifyCurve.cpp @@ -2183,6 +2183,52 @@ ExeRemoveCurveCompoUndercutOnY( int nId, double dLinTol) return bOk ; } +//---------------------------------------------------------------------------- +bool +ExeCurveCompoSetTempProp( int nId, int nCrv, int nProp, int nPropInd) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la curva composita + ICurveComposite* pCompo = GetCurveComposite( pGeomDB->GetGeoObj( nId)) ; + bool bOk = ( pCompo != nullptr) ; + // imposto il valore + bOk = bOk && pCompo->SetCurveTempProp( nCrv, nProp, nPropInd) ; + ExeSetModified() ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLua = "EgtCurveCompoSetTempProp(" + ToString( nId) + "," + + ToString( nCrv) + "," + + ToString( nProp) + ")" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + return bOk ; +} + +//---------------------------------------------------------------------------- +bool +ExeCurveCompoSetTempParam( int nId, int nCrv, double dParam, int nParamInd) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la curva composita + ICurveComposite* pCompo = GetCurveComposite( pGeomDB->GetGeoObj( nId)) ; + bool bOk = ( pCompo != nullptr) ; + // imposto il valore + bOk = bOk && pCompo->SetCurveTempParam( nCrv, dParam, nParamInd) ; + ExeSetModified() ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLua = "EgtCurveCompoSetTempParam(" + ToString( nId) + "," + + ToString( nCrv) + "," + + ToString( dParam) + ")" + + " -- Ok=" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + return bOk ; +} + //------------------------------------------------------------------------------- static bool MyChainCurvesInGroup( int nGroupId, const Point3d& ptNear, bool bAllowInvert, int nRefType) diff --git a/EgtExecutor.rc b/EgtExecutor.rc index 603791d..47dee54 100644 Binary files a/EgtExecutor.rc and b/EgtExecutor.rc differ diff --git a/LUA_GdbGetCurve.cpp b/LUA_GdbGetCurve.cpp index 3ab6b87..b75fdad 100644 --- a/LUA_GdbGetCurve.cpp +++ b/LUA_GdbGetCurve.cpp @@ -531,6 +531,40 @@ LuaCurveCompoNormVersor( lua_State* L) return 1 ; } +//---------------------------------------------------------------------------- +static int +LuaCurveCompoGetTempProp( lua_State* L) +{ + // 1 parametro : Id + int nId ; + LuaCheckParam( L, 1, nId) + LuaClearStack( L) ; + // recupero l'angolo al centro della curva semplice indicizzata + INTVECTOR vProp ; + if ( ExeCurveCompoGetTempProp( nId, vProp, 0)) + LuaSetParam( L, vProp) ; + else + LuaSetParam( L) ; + return 1 ; +} + +//---------------------------------------------------------------------------- +static int +LuaCurveCompoGetTempParam( lua_State* L) +{ + // 1 parametro : Id + int nId ; + LuaCheckParam( L, 1, nId) + LuaClearStack( L) ; + // recupero l'angolo al centro della curva semplice indicizzata + DBLVECTOR vParam ; + if ( ExeCurveCompoGetTempParam( nId, vParam, 0)) + LuaSetParam( L, vParam) ; + else + LuaSetParam( L) ; + return 1 ; +} + //---------------------------------------------------------------------------- static int LuaShowCurveBezierControlPoint( lua_State* L) @@ -584,6 +618,8 @@ 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( "EgtCurveCompoGetTempProp", LuaCurveCompoGetTempProp) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoGetTempParam", LuaCurveCompoGetTempParam) ; bOk = bOk && luaMgr.RegisterFunction( "EgtShowCurveBezierControlPoints", LuaShowCurveBezierControlPoint) ; return bOk ; } diff --git a/LUA_GdbModifyCurve.cpp b/LUA_GdbModifyCurve.cpp index 28f00ff..0c05432 100644 --- a/LUA_GdbModifyCurve.cpp +++ b/LUA_GdbModifyCurve.cpp @@ -913,6 +913,42 @@ LuaRemoveCurveCompoUndercutOnY( lua_State* L) return 1 ; } +//------------------------------------------------------------------------------- +static int +LuaCurveCompoSetTempProp( lua_State* L) +{ + // 3 parametri : Id, nCrv, nProp + int nId ; + LuaCheckParam( L, 1, nId) + int nCrv ; + LuaCheckParam( L, 2, nCrv) + int nProp ; + LuaCheckParam( L, 3, nProp) + LuaClearStack( L) ; + // imposto sulla curva della composita la proprietà temporanea + bool bOk = ExeCurveCompoSetTempProp( nId, nCrv, nProp) ; + LuaSetParam( L, bOk) ; + return 1 ; +} + +//------------------------------------------------------------------------------- +static int +LuaCurveCompoSetTempParam( lua_State* L) +{ + // 3 parametri : Id, nCrv, dParam + int nId ; + LuaCheckParam( L, 1, nId) + int nCrv ; + LuaCheckParam( L, 2, nCrv) + double dParam ; + LuaCheckParam( L, 3, dParam) + LuaClearStack( L) ; + // imposto sulla curva della composita il parametro temporaneo + bool bOk = ExeCurveCompoSetTempParam( nId, nCrv, dParam) ; + LuaSetParam( L, bOk) ; + return 1 ; +} + //---------------------------------------------------------------------------- static int LuaChainCurvesInGroup( lua_State* L) @@ -1182,6 +1218,8 @@ LuaInstallGdbModifyCurve( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtExplodeCurveCompo", LuaExplodeCurveCompo) ; bOk = bOk && luaMgr.RegisterFunction( "EgtMergeCurvesInCurveCompo", LuaMergeCurvesInCurveCompo) ; bOk = bOk && luaMgr.RegisterFunction( "EgtRemoveCurveCompoUndercutOnY", LuaRemoveCurveCompoUndercutOnY) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoSetTempProp", LuaCurveCompoSetTempProp) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtCurveCompoSetTempParam", LuaCurveCompoSetTempParam) ; bOk = bOk && luaMgr.RegisterFunction( "EgtChainCurvesInGroup", LuaChainCurvesInGroup) ; bOk = bOk && luaMgr.RegisterFunction( "EgtReorderCurvesInGroup", LuaReorderCurvesInGroup) ; bOk = bOk && luaMgr.RegisterFunction( "EgtProjectCurveOnSurfTm", LuaProjectCurveOnSurfTm) ;