EgtMachkernel :
- in fresatura corretto riconoscimento se inizio attacco è sopra il grezzo.
This commit is contained in:
+20
-13
@@ -2097,7 +2097,7 @@ Milling::AddStandardMilling( const ICurveComposite* pCompo, const Vector3d& vtTo
|
||||
// determino se l'inizio dell'attacco è fuori dal grezzo
|
||||
bool bOutStart = GetPointOutOfRaw( ptP1, vtTool, dElev) ;
|
||||
// determino se l'inizio dell'attacco è sopra il grezzo
|
||||
bool bAboveStart = m_bAboveHead && GetPointAboveRaw( ptP1) ;
|
||||
bool bAboveStart = m_bAboveHead && GetPointAboveRaw( ptP1, vtTool) ;
|
||||
// determino se l'inizio dell'attacco è esattamente sotto il grezzo, nel qual caso ricalcolo l'elevazione
|
||||
bool bUnderStart = m_bAboveHead && GetPointUnderRaw( ptP1, vtTool, dStElev) ;
|
||||
// imposto versore correzione e ausiliario sul punto di partenza
|
||||
@@ -2197,7 +2197,7 @@ Milling::AddStandardMilling( const ICurveComposite* pCompo, const Vector3d& vtTo
|
||||
else
|
||||
dEndElev -= ( ptP1 - ptEnd) * vtTool ;
|
||||
// determino se la fine dell'uscita è sopra il grezzo
|
||||
bool bAboveEnd = m_bAboveHead && GetPointAboveRaw( ptP1) ;
|
||||
bool bAboveEnd = m_bAboveHead && GetPointAboveRaw( ptP1, vtTool) ;
|
||||
// aggiungo retrazione
|
||||
if ( ! AddRetract( ptP1, vtTool, dSafeZ, dSafeAggrBottZ, dEndElev, dAppr, bAboveEnd)) {
|
||||
m_pMchMgr->SetLastError( 2312, "Error in Milling : Retract not computable") ;
|
||||
@@ -2271,7 +2271,7 @@ Milling::AddZigZagMilling( const ICurveComposite* pCompo, const Vector3d& vtTool
|
||||
// determino se l'inizio dell'attacco è fuori dal grezzo
|
||||
bool bOutStart = GetPointOutOfRaw( ptP1, vtTool, dElev) ;
|
||||
// determino se l'inizio dell'attacco è sopra il grezzo
|
||||
bool bAboveStart = m_bAboveHead && GetPointAboveRaw( ptP1) ;
|
||||
bool bAboveStart = m_bAboveHead && GetPointAboveRaw( ptP1, vtTool) ;
|
||||
// determino se l'inizio dell'attacco è esattamente sotto il grezzo, nel qual caso ricalcolo l'elevazione
|
||||
if ( j == 1)
|
||||
bool bUnderStart = m_bAboveHead && GetPointUnderRaw( ptP1, vtTool, dStElev) ;
|
||||
@@ -2386,7 +2386,7 @@ Milling::AddZigZagMilling( const ICurveComposite* pCompo, const Vector3d& vtTool
|
||||
else
|
||||
dEndElev -= ( ptP1 - ptEnd) * vtTool ;
|
||||
// determino se la fine dell'uscita è sopra il grezzo
|
||||
bool bAboveEnd = m_bAboveHead && GetPointAboveRaw( ptP1) ;
|
||||
bool bAboveEnd = m_bAboveHead && GetPointAboveRaw( ptP1, vtTool) ;
|
||||
// aggiungo retrazione
|
||||
if ( ! AddRetract( ptP1, vtTool, dSafeZ, dSafeAggrBottZ, dEndElev, dAppr, bAboveEnd)) {
|
||||
m_pMchMgr->SetLastError( 2312, "Error in Milling : Retract not computable") ;
|
||||
@@ -2444,7 +2444,7 @@ Milling::AddOneWayMilling( const ICurveComposite* pCompo, const Vector3d& vtTool
|
||||
Point3d ptEnd ;
|
||||
pCompo->GetEndPoint( ptEnd) ;
|
||||
ptEnd -= vtTool * dDepth ;
|
||||
bool bAboveStartEnd = m_bAboveHead && GetPointAboveRaw( ptStart) && GetPointAboveRaw( ptEnd) ;
|
||||
bool bAboveStartEnd = m_bAboveHead && GetPointAboveRaw( ptStart, vtTool) && GetPointAboveRaw( ptEnd, vtTool) ;
|
||||
|
||||
// determino numero e affondamento degli step
|
||||
int nStep = max( 1, static_cast<int>( ceil( dElev / dOkStep))) ;
|
||||
@@ -2676,7 +2676,7 @@ Milling::AddSpiralMilling( const ICurveComposite* pCompo, const Vector3d& vtTool
|
||||
// determino se l'inizio dell'attacco è fuori dal grezzo
|
||||
bool bOutStart = GetPointOutOfRaw( ptP1, vtTool, dElev) ;
|
||||
// determino se l'inizio dell'attacco è sopra il grezzo
|
||||
bool bAboveStart = m_bAboveHead && GetPointAboveRaw( ptP1) ;
|
||||
bool bAboveStart = m_bAboveHead && GetPointAboveRaw( ptP1, vtTool) ;
|
||||
// determino se l'inizio dell'attacco è esattamente sotto il grezzo, nel qual caso ricalcolo l'elevazione
|
||||
bool bUnderStart = m_bAboveHead && GetPointUnderRaw( ptP1, vtTool, dStElev) ;
|
||||
// imposto versore correzione e ausiliario sul punto di partenza
|
||||
@@ -2783,7 +2783,7 @@ Milling::AddSpiralMilling( const ICurveComposite* pCompo, const Vector3d& vtTool
|
||||
else
|
||||
dEndElev -= ( ptP1 - ptEnd) * vtTool ;
|
||||
// determino se la fine dell'uscita è sopra il grezzo
|
||||
bool bAboveEnd = m_bAboveHead && GetPointAboveRaw( ptP1) ;
|
||||
bool bAboveEnd = m_bAboveHead && GetPointAboveRaw( ptP1, vtTool) ;
|
||||
// aggiungo retrazione
|
||||
if ( ! AddRetract( ptP1, vtTool, dSafeZ, dSafeAggrBottZ, dEndElev, dAppr, bAboveEnd)) {
|
||||
m_pMchMgr->SetLastError( 2312, "Error in Milling : Retract not computable") ;
|
||||
@@ -2849,7 +2849,7 @@ Milling::AddSpiralMilling( const ICurveComposite* pCompo, const Vector3d& vtTool
|
||||
// determino se l'inizio dell'attacco è fuori dal grezzo
|
||||
bool bOutStart = GetPointOutOfRaw( ptP1, vtTool, dElev) ;
|
||||
// determino se l'inizio dell'attacco è sopra il grezzo
|
||||
bool bAboveStart = m_bAboveHead && GetPointAboveRaw( ptP1) ;
|
||||
bool bAboveStart = m_bAboveHead && GetPointAboveRaw( ptP1, vtTool) ;
|
||||
// determino se l'inizio dell'attacco è esattamente sotto il grezzo, nel qual caso ricalcolo l'elevazione
|
||||
bool bUnderStart = m_bAboveHead && GetPointUnderRaw( ptP1, vtTool, dStElev) ;
|
||||
// approccio al punto iniziale
|
||||
@@ -2942,7 +2942,7 @@ Milling::AddSpiralMilling( const ICurveComposite* pCompo, const Vector3d& vtTool
|
||||
else
|
||||
dEndElev -= ( ptP1 - ptEnd) * vtTool ;
|
||||
// determino se la fine dell'uscita è sopra il grezzo
|
||||
bool bAboveEnd = m_bAboveHead && GetPointAboveRaw( ptP1) ;
|
||||
bool bAboveEnd = m_bAboveHead && GetPointAboveRaw( ptP1, vtTool) ;
|
||||
// aggiungo retrazione
|
||||
if ( ! AddRetract( ptP1, vtTool, dSafeZ, dSafeAggrBottZ, dEndElev, dAppr, bAboveEnd)) {
|
||||
m_pMchMgr->SetLastError( 2312, "Error in Milling : Retract not computable") ;
|
||||
@@ -3053,7 +3053,7 @@ Milling::AddSawZigZagMilling( const ICurveComposite* pCompo, const Vector3d& vtT
|
||||
// determino se l'inizio dell'attacco è fuori dal grezzo
|
||||
bool bOutStart = GetPointOutOfRaw( ptP1, vtTool, dElev) ;
|
||||
// determino se l'inizio dell'attacco è sopra il grezzo
|
||||
bool bAboveStart = m_bAboveHead && GetPointAboveRaw( ptP1) ;
|
||||
bool bAboveStart = m_bAboveHead && GetPointAboveRaw( ptP1, vtTool) ;
|
||||
// imposto versore correzione e ausiliario sul punto di partenza
|
||||
CalcAndSetCorrAuxDir( pCompo, ( bInvert ? nMaxInd - i + 1 : i)) ;
|
||||
// se primo step
|
||||
@@ -4056,9 +4056,13 @@ Milling::GetPointOutOfRaw( const Point3d& ptP, const Vector3d& vtTool, double dE
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Milling::GetPointAboveRaw( const Point3d& ptP) const
|
||||
Milling::GetPointAboveRaw( const Point3d& ptP, const Vector3d& vtTool) const
|
||||
{
|
||||
// determino la posizione del punto rispetto al grezzo
|
||||
// derivo punti più bassi dell'utensile
|
||||
Vector3d vtDown = - FromUprightOrtho( vtTool) ;
|
||||
Point3d ptP1 = ptP + vtDown * 0.5 * m_TParams.m_dTDiam ;
|
||||
Point3d ptP2 = ptP1 + vtTool * ((( m_TParams.m_nType & TF_SAWBLADE) == 0) ? m_TParams.m_dLen : m_TParams.m_dThick) ;
|
||||
// determino la posizione dei punti rispetto al grezzo
|
||||
// ciclo sui grezzi
|
||||
int nRawId = m_pMchMgr->GetFirstRawPart() ;
|
||||
while ( nRawId != GDB_ID_NULL) {
|
||||
@@ -4067,8 +4071,11 @@ Milling::GetPointAboveRaw( const Point3d& ptP) const
|
||||
int nStmId = m_pGeomDB->GetFirstNameInGroup( nRawId, MACH_RAW_SOLID) ;
|
||||
BBox3d b3Raw ;
|
||||
m_pGeomDB->GetGlobalBBox( nStmId, b3Raw) ;
|
||||
if ( ! b3Raw.IsEmpty() && ptP.z < b3Raw.GetMax().z + 10 * EPS_SMALL)
|
||||
if ( ! b3Raw.IsEmpty()) {
|
||||
if ( ptP1.z < b3Raw.GetMax().z + 10 * EPS_SMALL ||
|
||||
ptP2.z < b3Raw.GetMax().z + 10 * EPS_SMALL)
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
nRawId = m_pMchMgr->GetNextRawPart( nRawId) ;
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ class Milling : public Machining
|
||||
bool AddOscillArc( const ICurveArc* pArc, const Vector3d& vtTool, double dRampLen, double dFlatLen) ;
|
||||
double GetRadiusForStartEndElevation( void) const ;
|
||||
bool GetPointOutOfRaw( const Point3d& ptP, const Vector3d& vtTool, double dElev) const ;
|
||||
bool GetPointAboveRaw( const Point3d& ptP) const ;
|
||||
bool GetPointAboveRaw( const Point3d& ptP, const Vector3d& vtTool) const ;
|
||||
bool GetPointUnderRaw( const Point3d& ptP, const Vector3d& vtTool, double& dElev) const ;
|
||||
bool CalcAndSetCorrAuxDir( const ICurveComposite* pCompo, double dU) ;
|
||||
Vector3d CalcCorrDir( const ICurveComposite* pCompo, double dU) ;
|
||||
|
||||
Reference in New Issue
Block a user