EgtMachKernel :
- in lavorazione waterjet migliorata scelta inizio su chiusa e interna.
This commit is contained in:
+20
-10
@@ -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) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user