EgtGeomKernel :

- miglior controllo dei risultati in asportazione materiale da Zmap (virtual milling).
This commit is contained in:
Dario Sassi
2023-09-18 08:12:24 +02:00
parent 29c00caf4a
commit b7a5123ba9
+49 -92
View File
@@ -501,9 +501,9 @@ VolZmap::MillingStep( int nCurrTool,
m_nCurrTool = nCurrTool ;
Tool& CurrTool = m_vTool[m_nCurrTool] ;
// Se non è definito l'utensile, non devo fare alcunchè
// Se non è definito l'utensile, non posso fare alcunchè
if ( CurrTool.GetType() == Tool::UNDEF)
return true ;
return false ;
// Controllo definizione vettori direzione
if ( vtDs.IsSmall() || vtDe.IsSmall())
return false ;
@@ -520,21 +520,15 @@ VolZmap::MillingStep( int nCurrTool,
m_nConnectedCompoCount = - 1 ;
// Punti e vettori descriventi il moto nel sistema intrinseco dello Zmap
Point3d ptPLs = ptPs ;
ptPLs.ToLoc( m_MapFrame) ;
Point3d ptPLe = ptPe ;
ptPLe.ToLoc( m_MapFrame) ;
Vector3d vtDLs = vtDs ;
vtDLs.ToLoc( m_MapFrame) ;
Point3d ptPLs = GetToLoc( ptPs, m_MapFrame) ;
Point3d ptPLe = GetToLoc( ptPe, m_MapFrame) ;
Vector3d vtDLs = GetToLoc( vtDs, m_MapFrame) ;
vtDLs.Normalize() ;
Vector3d vtDLe = vtDe ;
vtDLe.ToLoc( m_MapFrame) ;
Vector3d vtDLe = GetToLoc( vtDe, m_MapFrame) ;
vtDLe.Normalize() ;
Vector3d vtALs = vtAs ;
vtALs.ToLoc( m_MapFrame) ;
Vector3d vtALs = GetToLoc( vtAs, m_MapFrame) ;
vtALs.Normalize() ;
Vector3d vtALe = vtAe ;
vtALe.ToLoc( m_MapFrame) ;
Vector3d vtALe = GetToLoc( vtAe, m_MapFrame) ;
vtALe.Normalize() ;
//static PerformanceCounter Counter ;
@@ -624,7 +618,7 @@ VolZmap::MillingTranslationStep( const Point3d& ptPs, const Point3d& ptPe, const
}
}
}
return true ;
return bOk ;
}
//----------------------------------------------------------------------------
@@ -677,21 +671,16 @@ VolZmap::SelectMotion( int nGrid, const Point3d& ptLs, const Point3d& ptLe, cons
if ( vtMove.SqLenXY() < EPS_SMALL * EPS_SMALL) {
switch ( CurrTool.GetType()) {
case Tool::GEN :
GenTool_ZDrilling( nGrid, ptLs, ptLe, vtL) ;
break ;
return GenTool_ZDrilling( nGrid, ptLs, ptLe, vtL) ;
case Tool::CYLMILL :
case Tool::BALLMILL :
CylBall_ZDrilling( nGrid, ptLs, ptLe, vtL) ;
break ;
return CylBall_ZDrilling( nGrid, ptLs, ptLe, vtL) ;
case Tool::CONEMILL :
Conus_ZDrilling( nGrid, ptLs, ptLe, vtL) ;
break ;
return Conus_ZDrilling( nGrid, ptLs, ptLe, vtL) ;
case Tool::MORTISER :
Mrt_ZDrilling( nGrid, ptLs, ptLe, vtL, vtAL) ;
break ;
return Mrt_ZDrilling( nGrid, ptLs, ptLe, vtL, vtAL) ;
case Tool::CHISEL :
Chs_ZDrilling( nGrid, ptLs, ptLe, vtL, vtAL) ;
break ;
return Chs_ZDrilling( nGrid, ptLs, ptLe, vtL, vtAL) ;
}
}
@@ -699,21 +688,16 @@ VolZmap::SelectMotion( int nGrid, const Point3d& ptLs, const Point3d& ptLe, cons
else if ( abs( vtMove.z) < EPS_SMALL) {
switch ( CurrTool.GetType()) {
case Tool::GEN :
GenTool_ZMilling( nGrid, ptLs, ptLe, vtL) ;
break ;
return GenTool_ZMilling( nGrid, ptLs, ptLe, vtL) ;
case Tool::CYLMILL :
case Tool::BALLMILL :
CylBall_ZPerp( nGrid, ptLs, ptLe, vtL) ;
break ;
return CylBall_ZPerp( nGrid, ptLs, ptLe, vtL) ;
case Tool::CONEMILL :
Conus_ZPerp( nGrid, ptLs, ptLe, vtL) ;
break ;
return Conus_ZPerp( nGrid, ptLs, ptLe, vtL) ;
case Tool::MORTISER :
Mrt_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
break ;
return Mrt_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
case Tool::CHISEL :
Chs_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
break ;
return Chs_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
}
}
@@ -721,18 +705,14 @@ VolZmap::SelectMotion( int nGrid, const Point3d& ptLs, const Point3d& ptLe, cons
else {
switch ( CurrTool.GetType()) {
case Tool::GEN :
GenTool_ZMilling( nGrid, ptLs, ptLe, vtL) ;
break ;
return GenTool_ZMilling( nGrid, ptLs, ptLe, vtL) ;
case Tool::CYLMILL :
case Tool::BALLMILL :
CylBall_ZMilling( nGrid, ptLs, ptLe, vtL) ;
break ;
return CylBall_ZMilling( nGrid, ptLs, ptLe, vtL) ;
case Tool::CONEMILL :
Conus_ZMilling( nGrid, ptLs, ptLe, vtL) ;
break ;
return Conus_ZMilling( nGrid, ptLs, ptLe, vtL) ;
case Tool::MORTISER :
Mrt_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
break ;
return Mrt_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
}
}
}
@@ -751,62 +731,48 @@ VolZmap::SelectMotion( int nGrid, const Point3d& ptLs, const Point3d& ptLe, cons
if ( dSqLOrt < EPS_SMALL * EPS_SMALL) {
switch ( CurrTool.GetType()) {
case Tool::GEN :
GenTool_Drilling( nGrid, ptLs, ptLe, vtL) ;
break ;
return GenTool_Drilling( nGrid, ptLs, ptLe, vtL) ;
case Tool::CYLMILL :
case Tool::BALLMILL :
CylBall_XYDrilling( nGrid, ptLs, ptLe, vtL) ;
break ;
return CylBall_XYDrilling( nGrid, ptLs, ptLe, vtL) ;
case Tool::CONEMILL :
Conus_XYDrilling( nGrid, ptLs, ptLe, vtL) ;
break ;
return Conus_XYDrilling( nGrid, ptLs, ptLe, vtL) ;
case Tool::MORTISER :
Mrt_Drilling( nGrid, ptLs, ptLe, vtL, vtAL) ;
break ;
return Mrt_Drilling( nGrid, ptLs, ptLe, vtL, vtAL) ;
case Tool::CHISEL :
Chs_Drilling( nGrid, ptLs, ptLe, vtL, vtAL) ;
break ;
return Chs_Drilling( nGrid, ptLs, ptLe, vtL, vtAL) ;
}
}
// Fresatura con vettore movimento perpendicolare all'utensile
else if ( dSqLLong < EPS_SMALL * EPS_SMALL) {
switch ( CurrTool.GetType()) {
case Tool::GEN :
GenTool_Milling( nGrid, ptLs, ptLe, vtL) ;
break ;
return GenTool_Milling( nGrid, ptLs, ptLe, vtL) ;
case Tool::CYLMILL :
case Tool::BALLMILL :
CylBall_XYPerp( nGrid, ptLs, ptLe, vtL) ;
break ;
return CylBall_XYPerp( nGrid, ptLs, ptLe, vtL) ;
case Tool::CONEMILL :
// Usiamo la generica per via dell'intsabilità di Conus_XYPerp
//Conus_XYPerp( i, ptLs[i], ptLe[i], vtLs[i]) ;
Conus_Milling( nGrid, ptLs, ptLe, vtL) ;
break ;
//return Conus_XYPerp( i, ptLs[i], ptLe[i], vtLs[i]) ;
return Conus_Milling( nGrid, ptLs, ptLe, vtL) ;
case Tool::MORTISER :
Mrt_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
break ;
return Mrt_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
case Tool::CHISEL :
Chs_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
break ;
return Chs_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
}
}
// Fresatura con vettore movimento generico rispetto all'utensile
else {
switch ( CurrTool.GetType()) {
case Tool::GEN :
GenTool_Milling( nGrid, ptLs, ptLe, vtL);
break ;
return GenTool_Milling( nGrid, ptLs, ptLe, vtL);
case Tool::CYLMILL :
case Tool::BALLMILL :
CylBall_XYMilling( nGrid, ptLs, ptLe, vtL) ;
break ;
return CylBall_XYMilling( nGrid, ptLs, ptLe, vtL) ;
case Tool::CONEMILL :
Conus_XYMilling( nGrid, ptLs, ptLe, vtL) ;
break ;
return Conus_XYMilling( nGrid, ptLs, ptLe, vtL) ;
case Tool::MORTISER :
Mrt_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
break ;
return Mrt_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
}
}
}
@@ -824,48 +790,39 @@ VolZmap::SelectMotion( int nGrid, const Point3d& ptLs, const Point3d& ptLe, cons
if ( dSqLOrt < EPS_SMALL * EPS_SMALL) {
switch ( CurrTool.GetType()) {
case Tool::GEN :
GenTool_Drilling( nGrid, ptLs, ptLe, vtL) ;
break ;
return GenTool_Drilling( nGrid, ptLs, ptLe, vtL) ;
case Tool::CYLMILL :
case Tool::BALLMILL :
CylBall_Drilling( nGrid, ptLs, ptLe, vtL) ;
break ;
return CylBall_Drilling( nGrid, ptLs, ptLe, vtL) ;
case Tool::CONEMILL :
Conus_Drilling( nGrid, ptLs, ptLe, vtL) ;
break ;
return Conus_Drilling( nGrid, ptLs, ptLe, vtL) ;
case Tool::MORTISER :
Mrt_Drilling( nGrid, ptLs, ptLe, vtL, vtAL) ;
break ;
return Mrt_Drilling( nGrid, ptLs, ptLe, vtL, vtAL) ;
case Tool::CHISEL :
Chs_Drilling( nGrid, ptLs, ptLe, vtL, vtAL) ;
break ;
return Chs_Drilling( nGrid, ptLs, ptLe, vtL, vtAL) ;
}
}
// Fresatura con vettore movimento generico rispetto all'utensile
else {
switch ( CurrTool.GetType()) {
case Tool::GEN :
GenTool_Milling( nGrid, ptLs, ptLe, vtL) ;
break ;
return GenTool_Milling( nGrid, ptLs, ptLe, vtL) ;
case Tool::CYLMILL :
case Tool::BALLMILL :
CylBall_Milling( nGrid, ptLs, ptLe, vtL) ;
break ;
return CylBall_Milling( nGrid, ptLs, ptLe, vtL) ;
case Tool::CONEMILL :
Conus_Milling( nGrid, ptLs, ptLe, vtL) ;
break ;
return Conus_Milling( nGrid, ptLs, ptLe, vtL) ;
case Tool::MORTISER :
Mrt_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
break ;
return Mrt_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
case Tool::CHISEL :
// ammesso solo movimento perpendicolare all'asse utensile
if ( dSqLLong < EPS_SMALL * EPS_SMALL)
Chs_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
return Chs_Milling( nGrid, ptLs, ptLe, vtL, vtAL) ;
break ;
}
}
}
return true ;
return false ;
}