EgtMachKernel :

- In PocketingNT piccola correzione.
This commit is contained in:
Riccardo Elitropi
2025-10-22 16:16:15 +02:00
parent 4b346b39ba
commit 799aef3d5a
+27 -2
View File
@@ -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 ;