EgtMachKernel :
- In PocketingNT piccola correzione.
This commit is contained in:
+27
-2
@@ -1226,7 +1226,6 @@ PocketingNT::AdjustCurvesByStmTopology( const ISurfTriMesh* pSurf, const Frame3d
|
||||
ICRVCOMPOPOVECTOR vpCrvs ;
|
||||
GetHomogeneousParts( pCrvCompo, vpCrvs) ;
|
||||
// scorro i tratti alla ricerca di lati aperti
|
||||
bool bOpenCrvInPart = false ;
|
||||
for ( int i = 0 ; i < int( vpCrvs.size()) ; ++ i) {
|
||||
if ( vpCrvs[i]->GetTempProp( 0) == TEMP_PROP_OPEN_EDGE) {
|
||||
// analizzo le sottocurve del tratto
|
||||
@@ -1402,6 +1401,32 @@ PocketingNT::AdjustCurvesByStmTopology( const ISurfTriMesh* pSurf, const Frame3d
|
||||
m_pGeomDB->SetMaterial( nId, LIME) ;
|
||||
#endif
|
||||
|
||||
// se la nuova superficie ricavata contiene un tratto chiuso, allora non faccio nulla
|
||||
// ( Esempio di una tasca inclinata con gradini )
|
||||
const double OFFSET_FOR_CLOSE = 1. ; // euristico
|
||||
PtrOwner<ISurfFlatRegion> pSfrVol_Clone( pSfrVol->CreateOffsetSurf( - OFFSET_FOR_CLOSE, ICurve::OFF_FILLET)) ;
|
||||
if ( IsNull( pSfrVol_Clone))
|
||||
return false ;
|
||||
for ( int i = 0 ; i < int( vCrvCompo.size()) ; ++ i) {
|
||||
ICRVCOMPOPOVECTOR vpCrvs ;
|
||||
GetHomogeneousParts( vCrvCompo[i], vpCrvs) ;
|
||||
for ( int j = 0 ; j < int( vpCrvs.size()) ; ++ j) {
|
||||
if ( vpCrvs[j]->GetTempProp( 0) == TEMP_PROP_CLOSE_EDGE) {
|
||||
CRVCVECTOR ccClass ;
|
||||
if ( pSfrVol_Clone->GetCurveClassification( *vpCrvs[j], EPS_SMALL, ccClass)) {
|
||||
for ( int k = 0 ; k < int( ccClass.size()) ; ++ k) {
|
||||
if ( ccClass[k].nClass != CRVC_OUT) {
|
||||
// non estendo la superficie in quanto rovina il grezzo adiacente ad un chiuso
|
||||
return true ;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// definisco i lati aperti della nuova regione da svuotare
|
||||
// --- i lati aperti sono quelli in comune con la proiezione del grezzo
|
||||
for ( auto& pCrv : lstPC)
|
||||
@@ -1576,7 +1601,7 @@ PocketingNT::GetCurves( const SelData& Id, const ISurfTriMesh* pStmRaw, const IS
|
||||
if ( ! pSurf->GetFacetsContact( nFacet, nFlag, bAdjac, ptP1, ptP2, dAng))
|
||||
dAng = - ANG_RIGHT ;
|
||||
if ( dAng > - EPS_ANG_SMALL)
|
||||
pCrvCompo->SetCurveTempProp( nInd, 1) ;
|
||||
pCrvCompo->SetCurveTempProp( nInd, TEMP_PROP_OPEN_EDGE) ;
|
||||
}
|
||||
// passo al successivo
|
||||
++ nInd ;
|
||||
|
||||
Reference in New Issue
Block a user