EgtMachKernel 1.6n6 :

- corretta GetDistanceFromRawSide per riconoscimento grezzo di interesse
- corretta RemoveLastPhase per il caso in cui sia la fase corrente
- aggiunta RemoveRawPartFromCurrPhase.
This commit is contained in:
Dario Sassi
2016-02-17 14:36:43 +00:00
parent dbb19c7bd6
commit a9d9d63678
5 changed files with 56 additions and 2 deletions
+18 -1
View File
@@ -20,6 +20,7 @@
#include "CamData.h"
#include "/EgtDev/Include/EGkGeoPoint3d.h"
#include "/EgtDev/Include/EGkCurveLine.h"
#include "/EgtDev/Include/EgkDistPointCurve.h"
#include "/EgtDev/Include/EgkIntersCurves.h"
#include "/EgtDev/Include/EGkIntersLineSurfTm.h"
#include "/EgtDev/Include/EGkGeomDB.h"
@@ -218,10 +219,26 @@ Machining::GetDistanceFromRawSide( int nPhase, const Point3d& ptP, const Vector3
while ( nRawId != GDB_ID_NULL) {
// verifico che il grezzo compaia nella fase
if ( m_pMchMgr->VerifyRawPartPhase( nRawId, nPhase)) {
// pre-filtro con il box
BBox3d b3Raw ;
int nRawSolidId = m_pGeomDB->GetFirstNameInGroup( nRawId, MACH_RAW_SOLID) ;
if ( m_pGeomDB->GetGlobalBBox( nRawSolidId, b3Raw) && b3Pnt.OverlapsXY( b3Raw)) {
break ;
// porto il punto nel riferimento del grezzo
Frame3d frRaw ;
m_pGeomDB->GetGroupGlobFrame( nRawId, frRaw) ;
Point3d ptPL = ptP ;
ptPL.ToLoc( frRaw) ;
// verifica con il contorno
int nOutCrvId = m_pGeomDB->GetFirstNameInGroup( nRawId, MACH_RAW_OUTLINE) ;
ICurve* pCurve = GetCurve( m_pGeomDB->GetGeoObj( nOutCrvId)) ;
if ( pCurve != nullptr) {
int nSide ;
double dDist ;
DistPointCurve distPC( ptPL, *pCurve) ;
if ( distPC.GetDist( dDist) && dDist < 100 * EPS_SMALL ||
(distPC.GetSideAtMinDistPoint( 0, Z_AX, nSide) && nSide != MDS_RIGHT))
break ;
}
}
}
// passo al grezzo successivo