From f949e39d476c659dd27a6f4293529d176e3ee25e Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Wed, 8 May 2024 15:53:02 +0200 Subject: [PATCH 1/6] EgtExecutor : - aggiunta funzione Exe e Lua SurfTmGetFacetOutlineInfo. --- EXE_GdbGetSurf.cpp | 61 ++++++++++++++++++++++++++++++++++++++++++++++ LUA_GdbGetSurf.cpp | 35 ++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) diff --git a/EXE_GdbGetSurf.cpp b/EXE_GdbGetSurf.cpp index 7fff7bf..bf13364 100644 --- a/EXE_GdbGetSurf.cpp +++ b/EXE_GdbGetSurf.cpp @@ -1081,6 +1081,67 @@ ExeSurfTmGetFacetBBoxRef( int nId, int nFacet, int nFlag, const Frame3d& frRef, return pStm->GetFacetBBox( nFacet, frGlobL, b3Box, nFlag) ; } +//----------------------------------------------------------------------------- +bool +ExeSurfTmGetFacetOutlineInfo( int nId, int nFacet, int nRefId, + int& nStatus, INTVECTOR& vnAdj, DBLVECTOR& vdLen, VCT3DVECTOR& vvtNorm, DBLVECTOR& vdElev) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la superficie TriMesh + const ISurfTriMesh* pStm = GetSurfTriMesh( pGeomDB->GetGeoObj( nId)) ; + if ( pStm == nullptr) + return false ; + // recupero normale della faccia + Vector3d vtNorm ; + if ( ! pStm->GetFacetNormal( nFacet, vtNorm)) + return false ; + // recupero i loop come polilinee + POLYLINEVECTOR vPL ; + if ( ! pStm->GetFacetLoops( nFacet, vPL) || vPL.empty()) + return false ; + // calcolo lo stato + if ( vPL.size() == 1) + nStatus = 0 ; + else + nStatus = -1 ; + // pulisco e prealloco i vettori del risultato + int nDim = vPL[0].GetLineNbr() ; + vnAdj.clear() ; vnAdj.reserve( nDim) ; + vdLen.clear() ; vdLen.reserve( nDim) ; + vvtNorm.clear() ; vvtNorm.reserve( nDim) ; + vdElev.clear() ; vdElev.reserve( nDim) ; + // recupero riferimento alla lista dei punti + PNTULIST& lstPU = vPL[0].GetUPointList() ; + // ciclo sui lati del loop esterno (il primo) + double dIni, dFin ; + Point3d ptIni, ptFin ; + bool bFound = vPL[0].GetFirstULine( &dIni, &ptIni, &dFin, &ptFin) ; + while ( bFound) { + int nAdj = lround( dIni) ; + double dLen = Dist( ptIni, ptFin) ; + Vector3d vtN = ptFin - ptIni ; + vtN.Normalize() ; + vtN.Rotate( vtNorm, 0, ( nAdj >= 0 ? 1 : -1)) ; + TransformVector( pGeomDB, nId, nRefId, vtN) ; + double dElev = 0 ; + for ( const auto& PU : lstPU) { + double dDist = ( PU.first - ptIni) * vtN ; + if ( nAdj >= 0) + dElev = max( dElev, dDist) ; + else + dElev = min( dElev, dDist) ; + } + vnAdj.emplace_back( nAdj) ; + vdLen.emplace_back( dLen) ; + vvtNorm.emplace_back( vtN) ; + vdElev.emplace_back( dElev) ; + bFound = vPL[0].GetNextULine( &dIni, &ptIni, &dFin, &ptFin) ; + } + + return true ; +} + //---------------------------------------------------------------------------- int ExeSurfTmGetEdges( int nId, int nDestGrpId, bool bSmoothAng, int* pnCount) diff --git a/LUA_GdbGetSurf.cpp b/LUA_GdbGetSurf.cpp index 3bd9111..6bbeb2b 100644 --- a/LUA_GdbGetSurf.cpp +++ b/LUA_GdbGetSurf.cpp @@ -443,6 +443,40 @@ LuaSurfTmGetFacetBBoxRef( lua_State* L) return 1 ; } +//---------------------------------------------------------------------------- +static int +LuaSurfTmGetFacetOutlineInfo( lua_State* L) +{ + // 2 o 3 parametri : Id, nFacet [, nRefId] + int nId ; + LuaCheckParam( L, 1, nId) + int nFacet ; + LuaCheckParam( L, 2, nFacet) + int nRefId = nId ; + LuaGetParam( L, 3, nRefId) ; + LuaClearStack( L) ; + // recupero le informazioni + int nStatus ; + INTVECTOR vnAdj ; + VCT3DVECTOR vvtNorm ; + DBLVECTOR vdElev ; + DBLVECTOR vdLen ; + bool bOk = ExeSurfTmGetFacetOutlineInfo( nId, nFacet, nRefId, nStatus, vnAdj, vdLen, vvtNorm, vdElev) ; + // restituisco il risultato + if ( bOk) { + LuaSetParam( L, nStatus) ; + LuaSetParam( L, vnAdj) ; + LuaSetParam( L, vdLen) ; + LuaSetParam( L, vvtNorm) ; + LuaSetParam( L, vdElev) ; + return 5 ; + } + else { + LuaSetParam( L) ; + return 1 ; + } +} + //---------------------------------------------------------------------------- static int LuaSurfTmFacetAdjacencies( lua_State* L) @@ -1106,6 +1140,7 @@ LuaInstallGdbGetSurf( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetFacetBBox", LuaSurfTmGetFacetBBox) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetFacetBBoxGlob", LuaSurfTmGetFacetBBoxGlob) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetFacetBBoxRef", LuaSurfTmGetFacetBBoxRef) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmGetFacetOutlineInfo", LuaSurfTmGetFacetOutlineInfo) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetAdjacencies", LuaSurfTmFacetAdjacencies) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetNearestEndPoint", LuaSurfTmFacetNearestEndPoint) ; bOk = bOk && luaMgr.RegisterFunction( "EgtSurfTmFacetNearestMidPoint", LuaSurfTmFacetNearestMidPoint) ; From 9219fe9792200859e2dc6a37b9bcd7e5707a0e66 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Wed, 8 May 2024 16:11:23 +0200 Subject: [PATCH 2/6] EgtExecutor : - modifiche estetiche. --- EXE_GdbModifyCurve.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/EXE_GdbModifyCurve.cpp b/EXE_GdbModifyCurve.cpp index 80ae05c..70babc7 100644 --- a/EXE_GdbModifyCurve.cpp +++ b/EXE_GdbModifyCurve.cpp @@ -2494,7 +2494,7 @@ ExeProjectCurveOnSurfTmExt( int nCurveId, int nSurfTmId, int nGuideId, int nDest //------------------------------------------------------------------------------- static bool MyProjectCurveOnSurfBz( int nCurveId, int nSurfBzId, const Vector3d& vtDir, int nDestGrpId, - double dLinTol, double dMaxSegmLen, int nRefType) + double dLinTol, double dMaxSegmLen, int nRefType) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) @@ -2565,7 +2565,7 @@ MyProjectCurveOnSurfBz( int nCurveId, int nSurfBzId, const Vector3d& vtDir, int //------------------------------------------------------------------------------- bool ExeProjectCurveOnSurfBz( int nCurveId, int nSurfBzId, const Vector3d& vtDir, int nDestGrpId, - double dLinTol, double dMaxSegmLen, int nRefType) + double dLinTol, double dMaxSegmLen, int nRefType) { bool bOk = MyProjectCurveOnSurfBz( nCurveId, nSurfBzId, vtDir, nDestGrpId, dLinTol, dMaxSegmLen, nRefType) ; ExeSetModified() ; @@ -2588,7 +2588,7 @@ ExeProjectCurveOnSurfBz( int nCurveId, int nSurfBzId, const Vector3d& vtDir, int //------------------------------------------------------------------------------- static bool MyProjectCurveOnSurfBzExt( int nCurveId, int nSurfBzId, int nGuideId, int nDestGrpId, - double dLinTol, double dMaxSegmLen, bool bDirFromGuide) + double dLinTol, double dMaxSegmLen, bool bDirFromGuide) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) @@ -2695,7 +2695,7 @@ MyProjectCurveOnSurfBzExt( int nCurveId, int nSurfBzId, int nGuideId, int nDestG //------------------------------------------------------------------------------- bool ExeProjectCurveOnSurfBzExt( int nCurveId, int nSurfBzId, int nGuideId, int nDestGrpId, - double dLinTol, double dMaxSegmLen, bool bDirFromGuide) + double dLinTol, double dMaxSegmLen, bool bDirFromGuide) { bool bOk = MyProjectCurveOnSurfBzExt( nCurveId, nSurfBzId, nGuideId, nDestGrpId, dLinTol, dMaxSegmLen, bDirFromGuide) ; ExeSetModified() ; From 3d59a7ec240b65a159466af2d6906dddd773f739 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Thu, 9 May 2024 11:18:51 +0200 Subject: [PATCH 3/6] EgtExecutor : - migliorie alla funzione Exe e Lua SurfTmGetFacetOutlineInfo. --- EXE_GdbCreateCurve.cpp | 5 ++--- EXE_GdbGetSurf.cpp | 41 ++++++++++++++++++++++++++++++++--------- EXE_GdbModifyCurve.cpp | 10 +++++----- LUA_GdbGetSurf.cpp | 6 ++++-- 4 files changed, 43 insertions(+), 19 deletions(-) diff --git a/EXE_GdbCreateCurve.cpp b/EXE_GdbCreateCurve.cpp index 95daf41..eb39e19 100644 --- a/EXE_GdbCreateCurve.cpp +++ b/EXE_GdbCreateCurve.cpp @@ -40,13 +40,12 @@ #include "/EgtDev/Include/EGkChainCurves.h" #include "/EgtDev/Include/EGkCurveByInterp.h" #include "/EgtDev/Include/EGkCurveByApprox.h" +#include "/EgtDev/Include/EGkCurveAux.h" #include "/EgtDev/Include/EGkOffsetCurve.h" +#include "/EgtDev/Include/EGkCurveLocal.h" #include "/EgtDev/Include/EGkSurfTriMesh.h" #include "/EgtDev/Include/EGkDistPointCurve.h" #include "/EgtDev/Include/EGkStringUtils3d.h" -#include "/EgtDev/Include/EGkCurveLocal.h" -#include "/EgtDev/Include/EGkCurveAux.h" -#include "/EgtDev/Include/EGkCurve.h" #include "/EgtDev/Include/EgtPointerOwner.h" using namespace std ; diff --git a/EXE_GdbGetSurf.cpp b/EXE_GdbGetSurf.cpp index bf13364..246825a 100644 --- a/EXE_GdbGetSurf.cpp +++ b/EXE_GdbGetSurf.cpp @@ -1084,7 +1084,7 @@ ExeSurfTmGetFacetBBoxRef( int nId, int nFacet, int nFlag, const Frame3d& frRef, //----------------------------------------------------------------------------- bool ExeSurfTmGetFacetOutlineInfo( int nId, int nFacet, int nRefId, - int& nStatus, INTVECTOR& vnAdj, DBLVECTOR& vdLen, VCT3DVECTOR& vvtNorm, DBLVECTOR& vdElev) + int& nStatus, BOOLVECTOR& vbOpen, INTVECTOR& vnAdj, DBLVECTOR& vdLen, VCT3DVECTOR& vvtNorm, DBLVECTOR& vdElev) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) @@ -1103,10 +1103,30 @@ ExeSurfTmGetFacetOutlineInfo( int nId, int nFacet, int nRefId, // calcolo lo stato if ( vPL.size() == 1) nStatus = 0 ; - else + else { nStatus = -1 ; + for ( int i = 1 ; nStatus == -1 && i < int( vPL.size()) ; ++ i) { + double dIni, dFin ; + Point3d ptIni, ptFin ; + bool bFound = vPL[i].GetFirstULine( &dIni, &ptIni, &dFin, &ptFin) ; + while ( bFound) { + int nAdj = lround( dIni) ; + Vector3d vtNf ; + if ( nAdj >= 0 && pStm->GetFacetNormal( nAdj, vtNf)) { + Vector3d vtTg = ptFin - ptIni ; + vtTg.Normalize() ; + if ( ( vtTg ^ vtNf) * vtNorm > EPS_SMALL) { + nStatus = 1 ; + break ; + } + } + bFound = vPL[i].GetNextULine( &dIni, &ptIni, &dFin, &ptFin) ; + } + } + } // pulisco e prealloco i vettori del risultato int nDim = vPL[0].GetLineNbr() ; + vbOpen.clear() ; vbOpen.reserve( nDim) ; vnAdj.clear() ; vnAdj.reserve( nDim) ; vdLen.clear() ; vdLen.reserve( nDim) ; vvtNorm.clear() ; vvtNorm.reserve( nDim) ; @@ -1120,18 +1140,21 @@ ExeSurfTmGetFacetOutlineInfo( int nId, int nFacet, int nRefId, while ( bFound) { int nAdj = lround( dIni) ; double dLen = Dist( ptIni, ptFin) ; - Vector3d vtN = ptFin - ptIni ; - vtN.Normalize() ; - vtN.Rotate( vtNorm, 0, ( nAdj >= 0 ? 1 : -1)) ; + bool bOpen = true ; + Vector3d vtTg = ptFin - ptIni ; + vtTg.Normalize() ; + Vector3d vtNf ; + if ( nAdj >= 0 && pStm->GetFacetNormal( nAdj, vtNf)) + bOpen = ((vtTg ^ vtNf) * vtNorm < EPS_SMALL) ; + Vector3d vtN = vtTg ; + vtN.Rotate( vtNorm, 0, ( bOpen ? -1 : 1)) ; TransformVector( pGeomDB, nId, nRefId, vtN) ; double dElev = 0 ; for ( const auto& PU : lstPU) { double dDist = ( PU.first - ptIni) * vtN ; - if ( nAdj >= 0) - dElev = max( dElev, dDist) ; - else - dElev = min( dElev, dDist) ; + dElev = ( bOpen ? min( dElev, dDist) : max( dElev, dDist)) ; } + vbOpen.emplace_back( bOpen) ; vnAdj.emplace_back( nAdj) ; vdLen.emplace_back( dLen) ; vvtNorm.emplace_back( vtN) ; diff --git a/EXE_GdbModifyCurve.cpp b/EXE_GdbModifyCurve.cpp index 70babc7..c3631bd 100644 --- a/EXE_GdbModifyCurve.cpp +++ b/EXE_GdbModifyCurve.cpp @@ -20,6 +20,8 @@ #include "GeoTools.h" #include "/EgtDev/Include/EXeExecutor.h" #include "/EgtDev/Include/EXeConst.h" +#include "/EgtDev/Include/EGkGeoPoint3d.h" +#include "/EgtDev/Include/EGkGeoVector3d.h" #include "/EgtDev/Include/EGkCurve.h" #include "/EgtDev/Include/EGkCurveArc.h" #include "/EgtDev/Include/EGkCurveBezier.h" @@ -34,17 +36,15 @@ #include "/EgtDev/Include/EGkChainCurves.h" #include "/EgtDev/Include/EGkProjectCurveSurfTm.h" #include "/EgtDev/Include/EGkSurfFlatRegion.h" +#include "/EgtDev/Include/EGkSfrCreate.h" +#include "/EgtDev/Include/EGkSurfBezier.h" #include "/EgtDev/Include/EGkExtTExt.h" #include "/EgtDev/Include/EGkGdbIterator.h" #include "/EgtDev/Include/EGkStringUtils3d.h" #include "/EgtDev/Include/EGkIntervals.h" #include "/EgtDev/Include/EGkPolygon3d.h" -#include "/EgtDev/Include/EGkGeoPoint3d.h" -#include "/EgtDev/Include/EGkGeoVector3d.h" -#include "/EgtDev/Include/EgtPointerOwner.h" #include "/EgtDev/Include/EGkCalcPocketing.h" -#include -#include "/EgtDev/Include/EGkSurfBezier.h" +#include "/EgtDev/Include/EgtPointerOwner.h" #include diff --git a/LUA_GdbGetSurf.cpp b/LUA_GdbGetSurf.cpp index 6bbeb2b..a7108d7 100644 --- a/LUA_GdbGetSurf.cpp +++ b/LUA_GdbGetSurf.cpp @@ -457,19 +457,21 @@ LuaSurfTmGetFacetOutlineInfo( lua_State* L) LuaClearStack( L) ; // recupero le informazioni int nStatus ; + BOOLVECTOR vbOpen ; INTVECTOR vnAdj ; VCT3DVECTOR vvtNorm ; DBLVECTOR vdElev ; DBLVECTOR vdLen ; - bool bOk = ExeSurfTmGetFacetOutlineInfo( nId, nFacet, nRefId, nStatus, vnAdj, vdLen, vvtNorm, vdElev) ; + bool bOk = ExeSurfTmGetFacetOutlineInfo( nId, nFacet, nRefId, nStatus, vbOpen, vnAdj, vdLen, vvtNorm, vdElev) ; // restituisco il risultato if ( bOk) { LuaSetParam( L, nStatus) ; + LuaSetParam( L, vbOpen) ; LuaSetParam( L, vnAdj) ; LuaSetParam( L, vdLen) ; LuaSetParam( L, vvtNorm) ; LuaSetParam( L, vdElev) ; - return 5 ; + return 6 ; } else { LuaSetParam( L) ; From 868efb69f1c4ab3a0508a684ba14fcf497486063 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Thu, 9 May 2024 18:48:31 +0200 Subject: [PATCH 4/6] EgtExecutor : - correzioni alla funzione Exe e Lua SurfTmGetFacetOutlineInfo. --- EXE_GdbGetSurf.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/EXE_GdbGetSurf.cpp b/EXE_GdbGetSurf.cpp index 246825a..05f6318 100644 --- a/EXE_GdbGetSurf.cpp +++ b/EXE_GdbGetSurf.cpp @@ -1138,27 +1138,35 @@ ExeSurfTmGetFacetOutlineInfo( int nId, int nFacet, int nRefId, Point3d ptIni, ptFin ; bool bFound = vPL[0].GetFirstULine( &dIni, &ptIni, &dFin, &ptFin) ; while ( bFound) { + // faccia adiacente int nAdj = lround( dIni) ; + // lunghezza lato double dLen = Dist( ptIni, ptFin) ; + // aperto se senza adiacenza o con faccia adiacente che va da parte negativa (tipo foro) bool bOpen = true ; Vector3d vtTg = ptFin - ptIni ; vtTg.Normalize() ; Vector3d vtNf ; if ( nAdj >= 0 && pStm->GetFacetNormal( nAdj, vtNf)) bOpen = ((vtTg ^ vtNf) * vtNorm < EPS_SMALL) ; + // normale al lato (verso interno se chiuso, verso esterno se aperto) Vector3d vtN = vtTg ; vtN.Rotate( vtNorm, 0, ( bOpen ? -1 : 1)) ; - TransformVector( pGeomDB, nId, nRefId, vtN) ; + // elevazione secondo direzione della normale al lato double dElev = 0 ; for ( const auto& PU : lstPU) { double dDist = ( PU.first - ptIni) * vtN ; dElev = ( bOpen ? min( dElev, dDist) : max( dElev, dDist)) ; } + // porto normale nel riferimento desiderato + TransformVector( pGeomDB, nId, nRefId, vtN) ; + // inserisco dati nei parametri di ritorno vbOpen.emplace_back( bOpen) ; vnAdj.emplace_back( nAdj) ; vdLen.emplace_back( dLen) ; vvtNorm.emplace_back( vtN) ; vdElev.emplace_back( dElev) ; + // passo al prossimo lato bFound = vPL[0].GetNextULine( &dIni, &ptIni, &dFin, &ptFin) ; } From e4f45df79ad5c4fc5c8442557e5db129c0c7ce70 Mon Sep 17 00:00:00 2001 From: Riccardo Elitropi Date: Wed, 15 May 2024 11:02:15 +0200 Subject: [PATCH 5/6] EgtExecutor : - aggiunta funzione per aggiornare uno Zmap con una Trimesh - aggiunta funzione per uniformare uno Zmap. --- EXE_GdbCreateVol.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++++ LUA_GdbCreateVol.cpp | 33 +++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) diff --git a/EXE_GdbCreateVol.cpp b/EXE_GdbCreateVol.cpp index 66bb808..87a43c2 100644 --- a/EXE_GdbCreateVol.cpp +++ b/EXE_GdbCreateVol.cpp @@ -187,3 +187,57 @@ ExeCreateVolZmapFromSurfTm( int nParentId, int nStmId, double dPrec, bool bTriDe // restituisco l'identificativo della nuova entità return nNewId ; } + +//------------------------------------------------------------------------------- +bool +ExeUpdateVolZmapByAddingSurfTm( int nVolZmapId, int nStmId) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL) + // recupero lo Zmap + IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nVolZmapId)) ; + bool bOk = ( pVZM != nullptr) ; + // recupero la trimesh + PtrOwner pStm( CloneSurfTriMesh( pGeomDB->GetGeoObj( nStmId))) ; + bOk = bOk && !IsNull( pStm) ; + // recupero il frame dello Zmap e della Trimesh + Frame3d frZmap, frStm ; + bOk = bOk && pGeomDB->GetGlobFrame( nVolZmapId, frZmap) && + pGeomDB->GetGlobFrame( nStmId, frStm) ; + // porto la Stm nel frame dello Zmap + bOk = bOk && pStm->LocToLoc( frStm, frZmap) ; + // aggiorno lo Zmap con la nuova superficie + bOk = bOk && pVZM->AddSurfTm( pStm) ; + ExeSetModified() ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLua = "EgtUpdateVolZmapByAddingSurfTm(" + ToString( nVolZmapId) + "," + + ToString( nStmId) + ")" + " -- bOk =" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + return bOk ; +} + +//------------------------------------------------------------------------------- +bool +ExeUniformVolZmap( int nVolZmapId, double dToler) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL) + // recupero lo Zmap + IVolZmap* pVZM = GetVolZmap( pGeomDB->GetGeoObj( nVolZmapId)) ; + bool bOk = ( pVZM != nullptr) ; + // aggiorno lo Zmap + dToler = max( dToler, EPS_SMALL) ; + bOk = bOk && pVZM->MakeUniform( dToler) ; + ExeSetModified() ; + // se richiesto, salvo il comando Lua equivalente + if ( IsCmdLog()) { + string sLua = "EgtUniformZmap(" + ToString( nVolZmapId) + "," + + ToString( dToler) + ")" + " -- bOk =" + ToString( bOk) ; + LOG_INFO( GetCmdLogger(), sLua.c_str()) ; + } + return bOk ; +} diff --git a/LUA_GdbCreateVol.cpp b/LUA_GdbCreateVol.cpp index f5ec104..a9c2aef 100644 --- a/LUA_GdbCreateVol.cpp +++ b/LUA_GdbCreateVol.cpp @@ -140,6 +140,37 @@ LuaCreateVolZmapFromSurfTm( lua_State* L) return 1 ; } +//------------------------------------------------------------------------------- +static int +LuaUpdateVolZmapByAddingSurfTm( lua_State* L) +{ + // 2 parametri : nVolZmapId, StmId, + int nVolZmapId ; + LuaCheckParam( L, 1, nVolZmapId) ; + int nStmId ; + LuaCheckParam( L, 2, nStmId) ; + LuaClearStack( L) ; + bool bOk = ExeUpdateVolZmapByAddingSurfTm( nVolZmapId, nStmId) ; + LuaSetParam( L, bOk) ; + return 1 ; +} + +//------------------------------------------------------------------------------- +static int +LuaUniformVolZmap( lua_State* L) +{ + // 1 o 2 parametri : nVolZmapId [, dToler] + int nVolZmapId ; + LuaCheckParam( L, 1, nVolZmapId) ; + double dToler = EPS_SMALL ; + LuaGetParam( L, 2, dToler) ; + LuaClearStack( L) ; + bool bOk = ExeUniformVolZmap( nVolZmapId, dToler) ; + LuaSetParam( L, bOk) ; + return 1 ; +} + + //------------------------------------------------------------------------------- bool LuaInstallGdbCreateVol( LuaMgr& luaMgr) @@ -149,5 +180,7 @@ LuaInstallGdbCreateVol( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapEmpty", LuaCreateVolZmapEmpty) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapByRegionExtrusion", LuaCreateVolZmapByRegionExtrusion) ; bOk = bOk && luaMgr.RegisterFunction( "EgtVolZmapFromSurfTm", LuaCreateVolZmapFromSurfTm) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtUpdateVolZmapByAddingSurfTm", LuaUpdateVolZmapByAddingSurfTm ) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtUniformZmap", LuaUniformVolZmap) ; return bOk ; } From 0424900a2b99cddd892394ae5171cd11c8c30366 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Thu, 16 May 2024 12:55:37 +0200 Subject: [PATCH 6/6] EgtExecutor 2.6e4 : - aggiunta funzione Exe e Lua VerifyKeyOption (nel parametro OptInd le centinaia indicano il numero di opzione, il resto indica il numero del bit). --- EXE.h | 5 +++-- EXE_General.cpp | 29 +++++++++++++++++++++++++++++ EgtExecutor.rc | Bin 18890 -> 18890 bytes LUA_General.cpp | 15 +++++++++++++++ 4 files changed, 47 insertions(+), 2 deletions(-) diff --git a/EXE.h b/EXE.h index fd6ee80..cb95f27 100644 --- a/EXE.h +++ b/EXE.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- -// EgalTech 2014-2023 +// EgalTech 2014-2024 //---------------------------------------------------------------------------- -// File : EXE.h Data : 05.02.23 Versione : 2.5a6 +// File : EXE.h Data : 15.05.24 Versione : 2.6e4 // Contenuto : Dichiarazioni locali per moduli EXE. // // @@ -26,6 +26,7 @@ const std::string& ExeGetIniFile( void) ; const std::string& ExeGetKey( void) ; const std::string& ExeGetNestKey( void) ; const std::string& ExeGetLockId( void) ; +bool ExeVerifyKeyOption( int nOptInd) ; //---------------------------------------------------------------------------- ILogger* GetLogger( void) ; diff --git a/EXE_General.cpp b/EXE_General.cpp index e6bc002..29cd10a 100644 --- a/EXE_General.cpp +++ b/EXE_General.cpp @@ -35,6 +35,7 @@ #include "/EgtDev/Include/EgtIniFile.h" #include "/EgtDev/Include/EgtLogger.h" #include "/EgtDev/Include/EgtStringConverter.h" +#include "/EgtDev/Include/EgtKeyCodes.h" #include "/EgtDev/Include/SELkLockId.h" #include "/EgtDev/Include/SELkKeyProc.h" #include @@ -352,6 +353,34 @@ ExeGetNetHwKey( void) return s_bNetHwKey ; } +//----------------------------------------------------------------------------- +bool +ExeVerifyKeyOption( int nOptInd) +{ + // recupero le opzioni abilitate + unsigned int nOpt1, nOpt2 ; + int nOptExpDays ; + int nRet = GetEGnKeyOptions( KEY_BASELIB_PROD, KEY_BASELIB_VER, KEY_BASELIB_LEV, + nOpt1, nOpt2, nOptExpDays) ; + if ( ! ExeGetNetHwKey()) + nRet = GetKeyOptions( ExeGetKey(), KEY_BASELIB_PROD, KEY_BASELIB_VER, KEY_BASELIB_LEV, + nOpt1, nOpt2, nOptExpDays) ; + // verifico validità chiave con licenza + if ( nRet != KEY_OK || nOptExpDays < GetCurrDay()) + return false ; + // verifico le opzioni (nOptInd = 100 -> bit 0 di Opt1 ... = 200 -> bit 0 di Opt2 ... = 231 -> bit 31 di Opt2) + if ( nOptInd >= 100 && nOptInd <= 131) { + unsigned int nOptVal = ( 1 << ( nOptInd - 100)) ; + return ( ( nOpt1 & nOptVal) != 0) ; + } + else if ( nOptInd >= 200 && nOptInd <= 231) { + unsigned int nOptVal = ( 1 << ( nOptInd - 200)) ; + return ( ( nOpt2 & nOptVal) != 0) ; + } + else + return false ; +} + //----------------------------------------------------------------------------- bool ExeSetFont( const string& sNfeFontDir, const string& sDefaultFont) diff --git a/EgtExecutor.rc b/EgtExecutor.rc index 1b7dbb9259bb0f6aa2ab5480eadd52b4e5b64276..6c5ea21e36b13f0a4f9cdbee794dfb1941ed8a15 100644 GIT binary patch delta 249 zcmX>#neo(Q#trM3wOtwV7}6PX7%~}(88R3Y7&I6{fg+ghlj4}o{f@#neo(Q#trM3)jb*V7}6PX7*ZLEfmne-gCUrqgdq`#Gl9HNpll|Hz4<1yA~U1$ z=HG0tAj*+zISZI~oN4j~!74`M$&OsfoBM=pK%%F`z-k1g5Na9}VQS)(_~ePTbn;DR v>B%45mQCh!STy;UlYn48*nys42j&1BmIzeQx_OSX4l`CM>CGS9ZZQD>r%FJ@ diff --git a/LUA_General.cpp b/LUA_General.cpp index ce7da97..a643614 100644 --- a/LUA_General.cpp +++ b/LUA_General.cpp @@ -1083,6 +1083,20 @@ LuaGetMsg( lua_State* L) return 1 ; } +//------------------------------------------------------------------------------- +static int +LuaVerifyKeyOption( lua_State* L) +{ + // 1 parametro : nOptInd + int nOptInd ; + LuaCheckParam( L, 1, nOptInd) + LuaClearStack( L) ; + // verifico l'abilitazione dell'opzione (da chiave + licenza) + bool bOk = ExeVerifyKeyOption( nOptInd) ; + LuaSetParam( L, bOk) ; + return 1 ; +} + //------------------------------------------------------------------------------- static int LuaWinExec( lua_State* L) @@ -1384,6 +1398,7 @@ LuaInstallGeneral( LuaMgr& luaMgr) bOk = bOk && luaMgr.RegisterFunction( "EgtIs64bit", LuaIs64bit) ; bOk = bOk && luaMgr.RegisterFunction( "EgtGetLanguage", LuaGetLanguage) ; bOk = bOk && luaMgr.RegisterFunction( "EgtMsg", LuaGetMsg) ; + bOk = bOk && luaMgr.RegisterFunction( "EgtVerifyKeyOption", LuaVerifyKeyOption) ; bOk = bOk && luaMgr.RegisterFunction( "EgtDialogBox", LuaDialogBox) ; bOk = bOk && luaMgr.RegisterFunction( "EgtWinExec", LuaWinExec) ; bOk = bOk && luaMgr.RegisterFunction( "EgtCloseExe", LuaCloseExe) ;