From eb47c0956880e3efd50a0cea7c5703a01b8ee4ac Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Thu, 26 Nov 2015 16:50:35 +0000 Subject: [PATCH] EgtExecutor 1.6k9 : - aggiunta GetCalcTipFromPositions a EXE e LUA - modificata CreatrFlatParts (copia contorni in layer di nome opportuno). --- EXE_MachMgr.cpp | 11 +++++++++++ EXE_Nesting.cpp | 30 ++++++++++++++++++++++++++++++ EgtExecutor.rc | Bin 11694 -> 11694 bytes LUA_MachMgr.cpp | 30 ++++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+) diff --git a/EXE_MachMgr.cpp b/EXE_MachMgr.cpp index 77748fe..73de9a4 100644 --- a/EXE_MachMgr.cpp +++ b/EXE_MachMgr.cpp @@ -1298,6 +1298,17 @@ ExeGetCalcPositions( const Point3d& ptP, double dAngA, double dAngB, return pGseCtx->m_pMachMgr->GetCalcPositions( ptP, dAngA, dAngB, nStat, dX, dY, dZ) ; } +//----------------------------------------------------------------------------- +bool +ExeGetCalcTipFromPositions( double dX, double dY, double dZ, double dAngA, double dAngB, + bool bBottom, Point3d& ptTip) +{ + GseContext* pGseCtx = GetCurrGseContext() ; + VERIFY_CTX_MACHMGR( pGseCtx, false) + // calcolo il tip utensile dagli assi macchina + return pGseCtx->m_pMachMgr->GetCalcTipFromPositions( dX, dY, dZ, dAngA, dAngB, bBottom, ptTip) ; +} + //----------------------------------------------------------------------------- bool ExeVerifyOutOfStroke( double dX, double dY, double dZ, double dAngA, double dAngB, int& nStat) diff --git a/EXE_Nesting.cpp b/EXE_Nesting.cpp index 2d17bd6..1887e7a 100644 --- a/EXE_Nesting.cpp +++ b/EXE_Nesting.cpp @@ -415,6 +415,36 @@ VerifyAndAdjustFlatParts( void) pGeomDB->SetMaterial( nTextId, BLACK) ; } } + // creo un nuovo layer in cui copiare il contorno esterno + PtrOwner pOutCrv( bOk ? pSfr->GetLoop( 0, 0) : nullptr) ; + if ( ! IsNull( pOutCrv)) { + int nOutLoopId = ExeCreateGroup( pPar->GetId(), Frame3d(), RTY_GLOB) ; + bOk = bOk && nOutLoopId != GDB_ID_NULL ; + bOk = bOk && pGeomDB->SetName( nOutLoopId, "OutLoop") ; + pGeomDB->AddGeoObj( GDB_ID_NULL, nOutLoopId, Release( pOutCrv)) ; + } + // creo nuovi layer in cui copiare gli eventuali contorni interni + if ( bOk && pSfr->GetLoopCount( 0) > 1) { + int i = 1 ; + PtrOwner pInCrv( bOk ? pSfr->GetLoop( 0, i) : nullptr) ; + while ( ! IsNull( pInCrv)) { + int nInLoopId = ExeCreateGroup( pPar->GetId(), Frame3d(), RTY_GLOB) ; + bOk = bOk && nInLoopId != GDB_ID_NULL ; + bOk = bOk && pGeomDB->SetName( nInLoopId, "InLoop") ; + pGeomDB->AddGeoObj( GDB_ID_NULL, nInLoopId, Release( pInCrv)) ; + ++ i ; + pInCrv.Set( bOk ? pSfr->GetLoop( 0, i) : nullptr) ; + } + } + // creo nuovi layer in cui mettere le curve aperte + if ( bOk && vOpenIds.size() > 0) { + for ( int i = 0 ; bOk && i < int( vOpenIds.size()) ; ++i) { + int nOnPathId = ExeCreateGroup( pPar->GetId(), Frame3d(), RTY_GLOB) ; + bOk = bOk && nOnPathId != GDB_ID_NULL ; + bOk = bOk && pGeomDB->SetName( nOnPathId, "OnPath") ; + pGeomDB->RelocateGlob( vOpenIds[i], nOnPathId) ; + } + } // taglio le curve aperte con la regione for ( int i = 0 ; bOk && i < int( vOpenIds.size()) ; ++i) { ICurve* pCrv = GetCurve( pGeomDB->GetGeoObj( vOpenIds[i])) ; diff --git a/EgtExecutor.rc b/EgtExecutor.rc index 563aaa9ef60ea9745179642bbc8148b57f00e31e..f97e00cee8c12322e76a34cdcf9ef72b3977685d 100644 GIT binary patch delta 97 zcmZ1%y)JsgA2vqI%@@V4Gflq2na5~3Ignd-a{*Tk3sCf++-0W82LxfF21;&>n->Y| cF@rU@0x76sKgP|Iq`|@mn->Y| cF@rU@0x76sKgP|Iq`|@m