EgtGeomKernel 2.5i1 :

- corretta SetSawTool di Tool per caso con raggio corner uguale a raggio
- aggiunta prima versione di proiezione curva su superficie trimesh.
This commit is contained in:
Dario Sassi
2023-09-11 10:38:44 +02:00
parent c0fe5f14a8
commit 349c515e3e
7 changed files with 86 additions and 12 deletions
+9 -8
View File
@@ -1,7 +1,7 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2022
// EgalTech 2015-2023
//----------------------------------------------------------------------------
// File : Tool.cpp Data : 04.07.18 Versione : 2.4f3
// File : Tool.cpp Data : 08.09.23 Versione : 2.5i1
// Contenuto : Implementazione della classe Tool
//
//
@@ -87,6 +87,8 @@ Tool::SetStdTool( const string& sToolName, double dH, double dR, double dCornR,
if ( dH < EPS_SMALL || dR < EPS_SMALL || dCornR < - EPS_SMALL)
return false ;
bool bApproxWithLines = false ;
// utensile cilindrico
if ( dCornR < EPS_SMALL) {
m_nType = CYLMILL ;
@@ -126,9 +128,8 @@ Tool::SetStdTool( const string& sToolName, double dH, double dR, double dCornR,
m_Outline.AddLine( pt2);
m_Outline.AddArcTg( pt3) ;
m_Outline.AddLine( pt4) ;
// se da approosimare
if ( m_bApproxWithLines)
return SetGenTool( sToolName, &m_Outline, nToolNum) ;
// se da approssimare
bApproxWithLines = m_bApproxWithLines ;
}
// utensile sferico
else {
@@ -151,7 +152,7 @@ Tool::SetStdTool( const string& sToolName, double dH, double dR, double dCornR,
}
// eventuali sistemazioni per altezza tagliente
if ( ModifyForCutterHeight())
if ( ModifyForCutterHeight() || bApproxWithLines)
return SetGenTool( sToolName, &m_Outline, nToolNum) ;
else
return true ;
@@ -381,7 +382,7 @@ Tool::SetSawTool( const string& sToolName, double dH, double dR,
}
// altrimenti con raggio corner
else {
double dCR = Clamp( dCornR, 0., dThick / 2) ;
double dCR = Clamp( dCornR, 0., min( dThick / 2, dR - 10 * EPS_SMALL)) ;
// creazione profilo
m_Outline.AddPoint( pt0) ;
m_Outline.AddLine( pt1) ;
@@ -410,7 +411,7 @@ Tool::SetSawTool( const string& sToolName, double dH, double dR,
}
// altrimenti con raggio corner
else {
double dCR = Clamp( dCornR, 0., dThick / 2) ;
double dCR = Clamp( dCornR, 0., min( dThick / 2, dR - 10 * EPS_SMALL)) ;
// creazione profilo
m_Outline.AddPoint( pt0) ;
m_Outline.AddLine( pt3 - X_AX * dCR) ;