EgtMachKernel :

- in lavorazione waterjet migliorata scelta inizio su chiusa e interna.
This commit is contained in:
Dario Sassi
2019-10-17 04:59:54 +00:00
parent 9717cb503e
commit cd28dbd9c9
+20 -10
View File
@@ -1311,17 +1311,27 @@ WaterJetting::ProcessPath( int nPathId, int nPvId, int nClId)
double dThick ;
pCompo->GetThickness( dThick) ;
// se percorso chiuso con inizio/fine su angolo interno, porto la partenza a metà del primo lato
// se percorso chiuso con lavorazione all'interno, porto la partenza a metà del lato più lungo
if ( pCompo->IsClosed()) {
Vector3d vtStart, vtEnd ;
pCompo->GetStartDir( vtStart) ;
pCompo->GetEndDir( vtEnd) ;
if ( ! AreSameVectorApprox( vtStart, vtEnd)) {
bool bAngCCW = ( ( vtEnd ^ vtStart) * vtTool > 0.0) ;
if ( m_Params.m_nWorkSide == WJET_WS_CENTER ||
( m_Params.m_nWorkSide == WJET_WS_RIGHT && ! bAngCCW) ||
( m_Params.m_nWorkSide == WJET_WS_LEFT && bAngCCW))
pCompo->ChangeStartPoint( 0.5) ;
double dArea ;
if ( pCompo->GetAreaXY( dArea) &&
( ( dArea < 0 && m_Params.m_nWorkSide == WJET_WS_RIGHT) ||
( dArea > 0 && m_Params.m_nWorkSide == WJET_WS_LEFT))) {
int i = 0 ;
int nMax = - 1 ;
double dLenMax = 0 ;
const ICurve* pCrv = pCompo->GetFirstCurve() ;
while ( pCrv != nullptr) {
double dLen ;
if ( pCrv->GetLength( dLen) && dLen > dLenMax) {
dLenMax = dLen ;
nMax = i ;
}
++ i ;
pCrv = pCompo->GetNextCurve() ;
}
if ( nMax >= 0)
pCompo->ChangeStartPoint( nMax + 0.5) ;
}
}