diff --git a/EXE_GdbGetPocketing.cpp b/EXE_GdbGetPocketing.cpp index ce166e9..d379379 100644 --- a/EXE_GdbGetPocketing.cpp +++ b/EXE_GdbGetPocketing.cpp @@ -59,7 +59,7 @@ ExePocketing( const int nId, double dRad, double dStep, double dAngle, int nType // eseguo Pocketing ICRVCOMPOPOVECTOR vCrvCompoRes ; - bool bOk = CalcPocketing( pSfr, dRad, 0, dStep, dAngle, nType, bSmooth, false, false, false, nullptr, vCrvCompoRes) ; + bool bOk = CalcPocketing( pSfr, dRad, 0, dStep, dAngle, nType, bSmooth, false, false, false, P_INVALID, nullptr, vCrvCompoRes) ; nFirstId = GDB_ID_NULL ; nCrvCount = int( vCrvCompoRes.size()) ; if ( bOk && nCrvCount > 0) { diff --git a/EXE_GdbGetSurf.cpp b/EXE_GdbGetSurf.cpp index ea2bb9f..463529d 100644 --- a/EXE_GdbGetSurf.cpp +++ b/EXE_GdbGetSurf.cpp @@ -261,6 +261,25 @@ ExeSurfFrChunkSimpleClassify( int nId1, int nChunk1, int nId2, int nChunk2, doub return nRes ; } +//---------------------------------------------------------------------------- +bool +ExeSurfFrChunkCenter( int nId, int nChunk, int nRefId, Point3d& ptCen, Vector3d& vtN) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, false) + // recupero la superficie FlatRegion + ISurfFlatRegion* pSfr = GetSurfFlatRegion( pGeomDB->GetGeoObj( nId)) ; + if ( pSfr == nullptr) + return false ; + // recupero il centro della parte + if ( ! pSfr->GetChunkCentroid( nChunk, ptCen)) + return false ; + // recupero la normale della regione + vtN = pSfr->GetNormVersor() ; + // gestione trasformazioni ( eventuali) + return TransformPoint( pGeomDB, nId, nRefId, ptCen) && TransformVector( pGeomDB, nId, nRefId, vtN) ; +} + //---------------------------------------------------------------------------- int ExeExtractSurfFrChunkLoops( int nId, int nChunk, int nDestGrpId, int* pnCount) diff --git a/EXE_GdbObjAttribs.cpp b/EXE_GdbObjAttribs.cpp index 6b58f2d..b61e9c1 100644 --- a/EXE_GdbObjAttribs.cpp +++ b/EXE_GdbObjAttribs.cpp @@ -232,12 +232,12 @@ ExeGetCalcStatus( int nId, int* pnStat) //----------------------------------------------------------------------------- bool -ExeSetMark( int nId) +ExeSetMark( int nId, int nMark) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, false) // imposto l'evidenziazione - bool bOk = pGeomDB->SetMark( nId) ; + bool bOk = pGeomDB->SetMark( nId, nMark) ; // non produce modifica perchè mark ignorato in salvataggio return bOk ; } diff --git a/EXE_Scene.cpp b/EXE_Scene.cpp index 4afafcd..fdbcb4e 100644 --- a/EXE_Scene.cpp +++ b/EXE_Scene.cpp @@ -109,12 +109,12 @@ ExeSetLineAttribs( int nWidth) //----------------------------------------------------------------------------- bool -ExeSetMarkAttribs( Color MarkCol) +ExeSetMarkAttribs( Color MarkCol, Color Mark2Col) { IEGrScene* pScene = GetCurrScene() ; VERIFY_SCENE( pScene, false) // imposto il colore del Mark - return pScene->SetMark( MarkCol) ; + return ( pScene->SetMark( MarkCol) && pScene->SetMark2( Mark2Col)) ; } //----------------------------------------------------------------------------- diff --git a/EgtExecutor.rc b/EgtExecutor.rc index 6408674..b24ba1d 100644 Binary files a/EgtExecutor.rc and b/EgtExecutor.rc differ diff --git a/LUA_GdbObjAttribs.cpp b/LUA_GdbObjAttribs.cpp index e7e1086..93503d6 100644 --- a/LUA_GdbObjAttribs.cpp +++ b/LUA_GdbObjAttribs.cpp @@ -247,12 +247,14 @@ LuaGetCalcStatus( lua_State* L) static int LuaSetMark( lua_State* L) { - // 1 parametro : Id + // 1 o 2 parametri : Id [, nMark] int nId ; LuaCheckParam( L, 1, nId) + int nMark = 1 ; + LuaGetParam( L, 2, nMark) ; LuaClearStack( L) ; // imposto l'evidenziazione - bool bOk = ExeSetMark( nId) ; + bool bOk = ExeSetMark( nId, nMark) ; // restituisco il risultato LuaSetParam( L, bOk) ; return 1 ;