EgtMachKernel :
- piccole migliorie.
This commit is contained in:
+22
-7
@@ -9815,10 +9815,10 @@ Pocketing::GetAdaptedSfrByTrimesh( const ISurfFlatRegion* pSrfExtended, const IS
|
||||
if ( IsNull( pStmExtended) || ! pStmExtended->IsValid())
|
||||
return false ;
|
||||
|
||||
//int A = m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pStmExtended->Clone()) ;
|
||||
//m_pGeomDB->SetMaterial( A, ORANGE) ;
|
||||
//int p = m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pStmORIG->Clone()) ;
|
||||
//m_pGeomDB->SetMaterial( p, PURPLE) ;
|
||||
int A = m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pStmExtended->Clone()) ;
|
||||
m_pGeomDB->SetMaterial( A, ORANGE) ;
|
||||
int p = m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pStmORIG->Clone()) ;
|
||||
m_pGeomDB->SetMaterial( p, PURPLE) ;
|
||||
|
||||
// 2) Creazione della FlatRegion di proiezione complessiva delle facce dela TriMesh sopra al piano di svuotatura attuale
|
||||
PtrOwner<ISurfFlatRegion> pSfrProjUP( CreateSurfFlatRegion()) ;
|
||||
@@ -9842,6 +9842,10 @@ Pocketing::GetAdaptedSfrByTrimesh( const ISurfFlatRegion* pSrfExtended, const IS
|
||||
|
||||
//int b = m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pStmExtended->Clone()) ;
|
||||
//m_pGeomDB->SetMaterial( b, BLACK) ;
|
||||
// NB. Se pStmExtended è vuota, allora la TriMesh non arriva fino al bordo del grezzo, quindi non cambio
|
||||
// la geometria di intersezione
|
||||
if ( ! IsNull( pStmExtended) && pStmExtended->GetTriangleCount() == 0)
|
||||
pStmExtended.Set( CloneSurfTriMesh( pSfrORIG->GetAuxSurf())) ;
|
||||
|
||||
// 5) taglio la TriMesh originale togliendo tutto ciò che sta sotto al piano di proiezione
|
||||
PtrOwner<ISurfTriMesh> pStmORIG_forCut( CloneSurfTriMesh( pStmORIG)) ;
|
||||
@@ -13883,15 +13887,26 @@ Pocketing::GetSfrByStm( const ISurfTriMesh* pStm, ISurfFlatRegion* pSfr, const P
|
||||
if ( IsNull( pCrv_c) || ! pCrv_c->IsValid())
|
||||
return false ;
|
||||
|
||||
//m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pCrv_c->Clone()) ;
|
||||
|
||||
PtrOwner<ICurve> pCrv_proj( ProjectCurveOnPlane( *pCrv_c, plPock)) ;
|
||||
double dAreaCheck = EPS_SMALL ; Plane3d plCheck ;
|
||||
if ( ! IsNull( pCrv_proj) &&
|
||||
pCrv_proj->IsClosed() &&
|
||||
pCrv_proj->GetArea( plCheck, dAreaCheck) &&
|
||||
dAreaCheck <= EPS_SMALL) {
|
||||
m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pCrv_c->Clone()) ;
|
||||
m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pStm->Clone()) ;
|
||||
continue ;
|
||||
|
||||
}
|
||||
|
||||
SrfChunkDef.AddCurve( Release( pCrv_proj)) ; // aggiungo le curve proiettate
|
||||
}
|
||||
|
||||
// recupero la FlatRegion
|
||||
PtrOwner<ISurfFlatRegion> pSrfByCurves( SrfChunkDef.GetSurf()) ;
|
||||
if ( IsNull( pSrfByCurves) || pSrfByCurves->GetChunkCount() == 0) // controllo validità della FlatRegion
|
||||
return false ;
|
||||
return true ; // non ho ricavato nulla, la TriMesh è troppo sottile o piccola
|
||||
|
||||
// restituisco la FlatRegion
|
||||
pSfr->Clear() ;
|
||||
pSfr->CopyFrom( pSrfByCurves) ;
|
||||
|
||||
Reference in New Issue
Block a user