EgtMachKernel 2.5l1 :
- elevation ora viene calcolato più precisamente tramite Collision Avoid.
This commit is contained in:
+14
-6
@@ -378,7 +378,7 @@ Operation::GetElevation( int nPhase, const Point3d& ptP1, const Point3d& ptP2, c
|
||||
return true ;
|
||||
}
|
||||
|
||||
#if 1
|
||||
#if 0
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
@@ -506,10 +506,18 @@ Operation::GetElevation( int nPhase, const Point3d& ptP, const Vector3d& vtTool,
|
||||
pCAvTlStm->SetStdTool( dLen, dRad, 0) ;
|
||||
pCAvTlStm->SetSurfTm( *pStm) ;
|
||||
double dDist = 0 ;
|
||||
// per Collision Avoid il punto di riferimento non è il tip dell'utensile ma il naso mandrino
|
||||
if ( ! pCAvTlStm->TestPosition( ptPL + dLen * vtToolL, vtToolL, vtDirL, dDist))
|
||||
return false ;
|
||||
if ( dDist > 0)
|
||||
// non è ammesso un angolo oltre 90deg tra direzione utensile e vettore movimento
|
||||
if ( vtToolL * vtDirL < 0) {
|
||||
// il tip utensile è qui il naso mandrino per Collision Avoid
|
||||
if ( ! pCAvTlStm->TestPosition( ptPL, -vtToolL, vtDirL, dDist))
|
||||
return false ;
|
||||
}
|
||||
else {
|
||||
// per Collision Avoid il punto di riferimento non è il tip dell'utensile ma il naso mandrino
|
||||
if ( ! pCAvTlStm->TestPosition( ptPL + dLen * vtToolL, vtToolL, vtDirL, dDist))
|
||||
return false ;
|
||||
}
|
||||
if ( dDist > EPS_SMALL)
|
||||
vRawElev.emplace_back( nStmId, dDist) ;
|
||||
}
|
||||
}
|
||||
@@ -539,7 +547,7 @@ Operation::GetElevation( int nPhase, const Point3d& ptP, const Vector3d& vtTool,
|
||||
}
|
||||
b3Tool.Expand( MAX_DIST_RAW) ;
|
||||
// verifico la reale interferenza dell'utensile con i diversi grezzi
|
||||
for ( int i = 0 ; i < vRawElev.size() ; ++ i) {
|
||||
for ( int i = 0 ; i < int( vRawElev.size()) ; ++ i) {
|
||||
// box del grezzo
|
||||
BBox3d b3Raw ;
|
||||
m_pGeomDB->GetGlobalBBox( vRawElev[i].first, b3Raw) ;
|
||||
|
||||
Reference in New Issue
Block a user