EgtMachKernel :
- codice senza considerare il volume di svuotatura.
This commit is contained in:
+21
-60
@@ -9016,6 +9016,7 @@ Pocketing::AdjustContourWithOpenEdges( ICurveComposite* pCompo, ICRVCOMPOPOVECTO
|
||||
}
|
||||
int nCrv_offs = OffsCrv.GetCurveCount() ;
|
||||
if ( nCrv_offs == 0) {
|
||||
// GESTIONE SPECIALE DEGLI APERTI CHE OFFSETTATI NON GENERANO CURVE -----------------------------------
|
||||
// se un lato aperto è formato da più curve e l'offset di tale composita sparisce, la superficie può
|
||||
// estendersi fino all'intersezione delle due curva ad amo che determinano l'immagine del tool nello svuotare
|
||||
// i lati chiusi adiacenti
|
||||
@@ -9048,9 +9049,6 @@ Pocketing::AdjustContourWithOpenEdges( ICurveComposite* pCompo, ICRVCOMPOPOVECTO
|
||||
pJCrv1->AddPoint( ptLine) ;
|
||||
pJCrv1->AddLine( ptArc) ;
|
||||
pJCrv1->AddArcTg( ptStart) ;
|
||||
|
||||
//int PURp = m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pJCrv1->Clone()) ;
|
||||
//m_pGeomDB->SetMaterial( PURp, PURPLE) ;
|
||||
// intersezione
|
||||
pJCrv->ToLoc( frPocket) ;
|
||||
pJCrv1->ToLoc( frPocket) ;
|
||||
@@ -9076,6 +9074,8 @@ Pocketing::AdjustContourWithOpenEdges( ICurveComposite* pCompo, ICRVCOMPOPOVECTO
|
||||
else
|
||||
continue ;
|
||||
}
|
||||
// -----------------------------------------------------------------------------------------
|
||||
// GESTIONE SPECIALE DEGLI APERTI CHE GENERANO ISOLE APERTE --------------------------------
|
||||
// dall'offset di un lato aperto posso generare più curva composite...
|
||||
PtrOwner<ICurve> pCrvlonger( OffsCrv.GetLongerCurve()) ;
|
||||
while ( ! IsNull( pCrvlonger)) {
|
||||
@@ -9099,10 +9099,13 @@ Pocketing::AdjustContourWithOpenEdges( ICurveComposite* pCompo, ICRVCOMPOPOVECTO
|
||||
vpCrvs[i].Set( pCrvRange) ;
|
||||
vpCrvs[i]->SetTempProp( 1) ;
|
||||
}
|
||||
// -----------------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
// clono la pCompo
|
||||
PtrOwner<ICurveComposite> pCompo_clone( CloneCurveComposite( pCompo)) ;
|
||||
if ( IsNull( pCompo_clone))
|
||||
return false ;
|
||||
|
||||
// reinserisco le curve, chiudendo eventuali gap
|
||||
pCompo->Clear() ;
|
||||
@@ -9438,7 +9441,7 @@ Pocketing::AdustTmpPropLinesForProjection( ICurveComposite* pCompo)
|
||||
//---------------------------------------------------------------------------
|
||||
bool
|
||||
Pocketing::AdjustPathOutsideRawForOpenEdges( const ICurveComposite* pCompo, const ICRVCOMPOPOVECTOR& vCrvIsland,
|
||||
ICurveComposite* pCrvOpenOffs, const Point3d& ptCrvOpenS,
|
||||
ICurveComposite* pCrvOpenOffs, const Point3d& ptCrvOpenS,
|
||||
const Point3d& ptCrvOpenE, const double dRad,
|
||||
const double dDiam, ICurveComposite* pNewCrv, const Vector3d& vtTrasl,
|
||||
ISurfTriMesh* pStmRaw, bool bInVsOut)
|
||||
@@ -9468,7 +9471,6 @@ Pocketing::AdjustPathOutsideRawForOpenEdges( const ICurveComposite* pCompo, cons
|
||||
|
||||
if ( ! pCrvOpen->TrimStartEndAtParam( dUTrimS, dUTrimE))
|
||||
pCrvOpen->Clear() ;
|
||||
|
||||
}
|
||||
else {
|
||||
// se l'inizio coincide con la fine, allora la curva è tutta aperta
|
||||
@@ -9480,7 +9482,6 @@ Pocketing::AdjustPathOutsideRawForOpenEdges( const ICurveComposite* pCompo, cons
|
||||
PtrOwner<ICurveComposite> pCompo_noOpenCrv( CloneCurveComposite( pCompo_Succ)) ;
|
||||
pCompo_noOpenCrv->AddCurve( pCompo_Prec->Clone()) ;
|
||||
|
||||
|
||||
// recupero i punti e i vettori tangenti iniziali e finali del lato aperto
|
||||
Point3d ptSTART ; pCrvOpenOffs->GetStartPoint( ptSTART) ;
|
||||
Point3d ptEND ; pCrvOpenOffs->GetEndPoint( ptEND) ;
|
||||
@@ -9926,7 +9927,7 @@ Pocketing::GetParamsAtEachStep( ISURFFRPOVECTOR& vSrfSliced, vector<ICRVCOMPOPOV
|
||||
|
||||
// ================================ RECUPERO DELLA TRIMESH (se selezionata) ==============================
|
||||
// recupero il bordo della superficie
|
||||
PtrOwner<ICurveComposite> pCrvBorder( GetCurveComposite( pSrfChunk_c->GetLoop( 0, 0))) ;
|
||||
PtrOwner<ICurveComposite> pCrvBorder( CloneCurveComposite( pSrfChunk_c->GetLoop( 0, 0))) ;
|
||||
if ( IsNull( pCrvBorder) || ! pCrvBorder->IsValid())
|
||||
return false ;
|
||||
|
||||
@@ -9952,10 +9953,11 @@ Pocketing::GetParamsAtEachStep( ISURFFRPOVECTOR& vSrfSliced, vector<ICRVCOMPOPOV
|
||||
// 2) controllo se ci sono degli step extra ( aggiornando il vettore degli step)
|
||||
if ( ! CalcExtraSteps( pSrfChunk_c, pStmORIG, vtTool, dElev, dDepth, nStep, dStep, vVtTrasl))
|
||||
return false ;
|
||||
vSrfSliced.resize(( int)vVtTrasl.size()) ;
|
||||
vCrvOEWithFlags.resize(( int)vVtTrasl.size()) ;
|
||||
vbChangedPrec.resize(( int)vVtTrasl.size()) ;
|
||||
nStep = ( int)vVtTrasl.size() ;
|
||||
|
||||
vSrfSliced.resize( int( vVtTrasl.size())) ;
|
||||
vCrvOEWithFlags.resize( int(vVtTrasl.size())) ;
|
||||
vbChangedPrec.resize( int( vVtTrasl.size())) ;
|
||||
nStep = int( vVtTrasl.size()) ;
|
||||
}
|
||||
// ======================================================================================
|
||||
|
||||
@@ -10218,7 +10220,7 @@ Pocketing::ProjectEdgesOfSelectedStm( const ISurfFlatRegion* pSrfToPock, const I
|
||||
if ( IsNull( pCrvBorder) || ! pCrvBorder->IsValid() || pCrvBorder->GetCurveCount() == 0)
|
||||
return false ;
|
||||
|
||||
// 2) Recupero la faccia selezionata ( è la TmpProp 1)
|
||||
// 2) recupero la faccia selezionata ( è la TmpProp 1)
|
||||
int nFacet = pCrvBorder->GetTempProp( 1) ;
|
||||
if ( nFacet < 0)
|
||||
return false ;
|
||||
@@ -10249,7 +10251,7 @@ Pocketing::ProjectEdgesOfSelectedStm( const ISurfFlatRegion* pSrfToPock, const I
|
||||
return false ;
|
||||
if ( IsNull( pStmORIG_noSelFace) ||
|
||||
! pStmORIG_noSelFace->IsValid() ||
|
||||
pStmORIG_noSelFace->GetTriangleCount() == 0)
|
||||
pStmORIG_noSelFace->GetTriangleCount() == 0) // se non ho altre facce ho già finito...
|
||||
return true ; // <--- tutti i lati sono aperti !
|
||||
|
||||
// d) proietto tutto sul piano di svuotatura e aggiungo la faccia selezionata
|
||||
@@ -10296,8 +10298,6 @@ Pocketing::GetAdaptedSfrByTrimesh( const ISurfFlatRegion* pSrfExtended, const IS
|
||||
PtrOwner<ISurfTriMesh> pStmExtended( CloneSurfTriMesh( pSrfExtended_cl->GetAuxSurf())) ;
|
||||
if ( IsNull( pStmExtended) || ! pStmExtended->IsValid())
|
||||
return false ;
|
||||
//m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pStmExtended->Clone()) ;
|
||||
//m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pStmORIG->Clone()) ;
|
||||
|
||||
// 2) Creazione della FlatRegion di proiezione complessiva delle facce della TriMesh sopra al piano di svuotatura
|
||||
// attuale
|
||||
@@ -10324,7 +10324,6 @@ Pocketing::GetAdaptedSfrByTrimesh( const ISurfFlatRegion* pSrfExtended, const IS
|
||||
if ( ! ProjectStmOnPlane( pStmORIG_forCut, plProj, pSfrProjUP))
|
||||
return false ;
|
||||
}
|
||||
//m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pSfrProjUP->Clone()) ;
|
||||
|
||||
// 7) verifico se la superificie è problematica per il taglio
|
||||
PtrOwner<ISurfFlatRegion> pSfrORIGNoSelFaceProj( CreateSurfFlatRegion()) ;
|
||||
@@ -10333,7 +10332,7 @@ Pocketing::GetAdaptedSfrByTrimesh( const ISurfFlatRegion* pSrfExtended, const IS
|
||||
return false ;
|
||||
PtrOwner<ISurfTriMesh> pStmORIGNoSelFace( CloneSurfTriMesh( pStmORIG)) ;
|
||||
if ( ! pStmORIGNoSelFace->RemoveFacet( nTmpProp1) ||
|
||||
! ProjectStmOnPlane( pStmORIGNoSelFace, plProj, pSfrORIGNoSelFaceProj))
|
||||
! ProjectStmOnPlane( pStmORIGNoSelFace, plProj, pSfrORIGNoSelFaceProj))
|
||||
return false ;
|
||||
if ( AreOppositeVectorApprox( vtN, pSfrORIGNoSelFaceProj->GetNormVersor()))
|
||||
pSfrORIGNoSelFaceProj->Invert() ;
|
||||
@@ -10393,17 +10392,15 @@ Pocketing::GetAdaptedSfrByTrimesh( const ISurfFlatRegion* pSrfExtended, const IS
|
||||
bS = true ;
|
||||
if ( pCrvLoopH->IsPointOn( ptE, 50 * EPS_SMALL))
|
||||
bE = true ;
|
||||
//m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pCrvCompo->Clone()) ;
|
||||
//m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pSfrExtended->Clone()) ;
|
||||
}
|
||||
}
|
||||
bExtraSub = ! ( bS && bE) ;
|
||||
if ( bExtraSub) {
|
||||
// 9.2) conservo le parti in comuune tra quest'ultima FlatRegion e la superificie originale
|
||||
// 7.1) conservo le parti in comune tra quest'ultima FlatRegion e la superificie originale
|
||||
if ( ! pSfrORIGNoSelFaceProj->Intersect( *pSfrORIG))
|
||||
return false ;
|
||||
|
||||
// 7.3) Sottraggo
|
||||
// 7.2) Sottraggo
|
||||
if ( pSfrORIGNoSelFaceProj->IsValid() &&
|
||||
pSfrExtended->Subtract( *pSfrORIGNoSelFaceProj)) {
|
||||
|
||||
@@ -10421,13 +10418,10 @@ Pocketing::GetAdaptedSfrByTrimesh( const ISurfFlatRegion* pSrfExtended, const IS
|
||||
}
|
||||
|
||||
// 8) Verifico se riesco a fare il taglio
|
||||
//m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pStmExtended->Clone()) ;
|
||||
//m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pStmORIG->Clone()) ;
|
||||
if ( ! pStmExtended->CutWithOtherSurf( *pStmORIG, false, true))
|
||||
return false ;
|
||||
if ( ! IsNull( pStmExtended) && pStmExtended->GetTriangleCount() == 0)
|
||||
pStmExtended.Set( CloneSurfTriMesh( pSfrORIG->GetAuxSurf())) ;
|
||||
//m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pStmExtended->Clone()) ;
|
||||
|
||||
// 8) Riconverto in FlatRegion
|
||||
if ( ! GetSfrByStm( pStmExtended, pSfrExtended, plProj, vtExtr, dThick))
|
||||
@@ -10442,10 +10436,6 @@ Pocketing::GetAdaptedSfrByTrimesh( const ISurfFlatRegion* pSrfExtended, const IS
|
||||
! pSfrExtended->Subtract( *pSfrProjUP))
|
||||
return false ;
|
||||
|
||||
//m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pSfrExtended->Clone()) ;
|
||||
//m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pSfrProjUP->Clone()) ;
|
||||
//m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pSfrExtended_Sub->Clone()) ;
|
||||
|
||||
}
|
||||
|
||||
// 9) Ricalcolo lati aperti e lati chiusi
|
||||
@@ -10491,8 +10481,6 @@ Pocketing::GetAdaptedSfrByTrimesh( const ISurfFlatRegion* pSrfExtended, const IS
|
||||
pCrv_u->GetEndPoint( ptE) ;
|
||||
pCrv_u->GetMidPoint( ptM) ;
|
||||
PtrOwner<ISurfTriMesh> pStmNoSelFace( CloneSurfTriMesh( pStmORIG)) ;
|
||||
//if ( ! pStmNoSelFace->RemoveFacet( nTmpProp1))
|
||||
// return false ;
|
||||
|
||||
DistPointSurfTm dPStm1( ptS, *pStmNoSelFace) ;
|
||||
DistPointSurfTm dPStm2( ptM, *pStmNoSelFace) ;
|
||||
@@ -10597,9 +10585,6 @@ Pocketing::ProjectStmOnPlane( const ISurfTriMesh* pStmAbove, const Plane3d plPoc
|
||||
if ( IsNull( pStmRef) || ! pStmRef->IsValid())
|
||||
return false ;
|
||||
|
||||
//int b = m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pStmRef->Clone()) ;
|
||||
//m_pGeomDB->SetMaterial( b, BLUE) ;
|
||||
|
||||
// 2.1) Per semplicità rimuovo dalla superficie tutti i triangoli che sono perpendicolari al piano di svuotatura
|
||||
StmFromTriangleSoup TriaSoupEasy ; TriaSoupEasy.Start() ;
|
||||
for ( int t = 0 ; t < pStmRef->GetTriangleCount() ; ++ t) {
|
||||
@@ -10622,9 +10607,6 @@ Pocketing::ProjectStmOnPlane( const ISurfTriMesh* pStmAbove, const Plane3d plPoc
|
||||
return false ;
|
||||
pStmRef->ToGlob( frPlane) ;
|
||||
|
||||
//int P = m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pStmRef->Clone()) ;
|
||||
//m_pGeomDB->SetMaterial( P, PURPLE) ;
|
||||
|
||||
// 4) controllo la validità della superficie ottenuta
|
||||
if ( IsNull( pStmRef) || ! pStmRef->IsValid() || pStmRef->GetTriangleCount() == 0)
|
||||
return true ; // la proeizione sparisce
|
||||
@@ -10650,12 +10632,6 @@ Pocketing::ProjectStmOnPlane( const ISurfTriMesh* pStmAbove, const Plane3d plPoc
|
||||
return true ;
|
||||
pStmUp->Repair() ; pStmDown->Repair() ;
|
||||
|
||||
//int r = m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pStmUp->Clone()) ;
|
||||
//int o = m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pStmDown->Clone()) ;
|
||||
//m_pGeomDB->SetMaterial( r, RED) ;
|
||||
//m_pGeomDB->SetMaterial( o, ORANGE) ;
|
||||
//m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pSfrProj->Clone()) ;
|
||||
|
||||
// 6) Essendo due Trimesh piane e sullo stesso piano, converto in FlatRegion prima di unirle
|
||||
PtrOwner<ISurfFlatRegion> pSfrUp( CreateSurfFlatRegion()) ;
|
||||
PtrOwner<ISurfFlatRegion> pSfrUp1( CreateSurfFlatRegion()) ;
|
||||
@@ -10897,8 +10873,6 @@ Pocketing::SubtractFinalShape( ISurfFlatRegion* pSfrCurr, const Vector3d& vtTras
|
||||
if ( IsNull( pSfrCurr_c) || ! pSfrCurr_c->IsValid())
|
||||
return false ;
|
||||
|
||||
//m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pSfrCurr_c->Clone()) ;
|
||||
//m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pSfrShape_c->Clone()) ;
|
||||
if ( pSfrCurr_c ->IsValid() && pSfrShape_c->IsValid()) {
|
||||
if ( AreOppositeVectorApprox( pSfrCurr_c->GetNormVersor(), pSfrShape_c->GetNormVersor()))
|
||||
pSfrShape_c->Invert() ;
|
||||
@@ -11323,7 +11297,6 @@ Pocketing::ModifySurfByOpenEdge( ISurfFlatRegion* pSrf, ICRVCOMPOPOVECTOR& vCrvO
|
||||
PtrOwner<ICurveComposite> pCrvEL( ConvertCurveToComposite( pSrf->GetLoop( c, 0))) ;
|
||||
if ( IsNull( pCrvEL))
|
||||
return false ;
|
||||
//vCrvOrig_tmp.emplace_back( Release( pCrvEL)) ;
|
||||
vCrvOEFlags.emplace_back( Release( pCrvEL)) ;
|
||||
|
||||
// 2) creo un vettore con le isole del Chunk ( e uno con le isole ammissibili)
|
||||
@@ -12339,7 +12312,7 @@ Pocketing::GetProjStmOnSfr( const ISurfFlatRegion* pSfr, const ISurfTriMesh* pSt
|
||||
// nelle posizioni successive inserisco le curve esterne dei chunk creati ( aperti per definizione)
|
||||
ICRVCOMPOPOVECTOR vCrvExtProj ; // <---- questo vettore contiene il bordo della superificie ricavata dall'interzione
|
||||
// quindi in posizione 0 ho una curva con i lati aperti/chiusi già settati
|
||||
vCrvExtProj.emplace_back( GetCurveComposite( pSfr->GetLoop( 0, 0))) ;
|
||||
vCrvExtProj.emplace_back( ConvertCurveToComposite( pSfr->GetLoop( 0, 0))) ;
|
||||
|
||||
// Clono la superificie di partenza ( per sicurezza lascio invariata quella passata alla funzione)
|
||||
PtrOwner<ISurfFlatRegion> pSrf_Clone( CloneSurfFlatRegion( pSfr)) ;
|
||||
@@ -12404,7 +12377,7 @@ Pocketing::GetProjStmOnSfr( const ISurfFlatRegion* pSfr, const ISurfTriMesh* pSt
|
||||
// ( semplice AdjustContourWithOpenEdges, senza grezzo e senza isole, verrà tutto fatto in seguito)
|
||||
if ( AdjustContourWithOpenEdges( pCrvExt, vCrvNull, m_dMaxLenRawProj, 0.0, 0.0, V_NULL, nullptr, true)) {
|
||||
// la curva restitutita presenta i lati aperti/chiusi impostati ( all'originale si lasciano invariati i chiusi,
|
||||
// gli aperrti vengono Offsettati e i raccordi sono lineari mediante rette chiuse
|
||||
// gli aperti vengono Offsettati e i raccordi sono lineari mediante rette chiuse
|
||||
// ( NB. Se le rette di raccordo fossero settate aperte, rischierei di rovinare parti di grezzo al
|
||||
// di fuori di lati chiusi ( tutto dipende dell'angolo di inclinazione della superificie originale rispetto
|
||||
// ad ogni singola faccia del grezzo ).
|
||||
@@ -12641,6 +12614,7 @@ Pocketing::ProjectRaw( ISurfFlatRegion* pSrf, const Vector3d& vtTrasl,
|
||||
PtrOwner<ISurfFlatRegion> pSfr_Act( CreateSurfFlatRegion()) ;
|
||||
if ( IsNull( pSfr_Act))
|
||||
return false ;
|
||||
// NON UTILIZZATA !
|
||||
if ( ! CloseOpenSidesInsideRawForProjection( pSrf_clone_ChunkC, pStmRaw, pSfr_Act))
|
||||
return false ;
|
||||
pSrf_clone_ChunkC.Set( Release( pSfr_Act)) ;
|
||||
@@ -14419,8 +14393,6 @@ Pocketing::GetNewSrfByAnotherPocketing( ISurfFlatRegion* pSrf, ISurfFlatRegion*
|
||||
PtrOwner<ISurfFlatRegion> pSrf_Sub( CloneSurfFlatRegion( pSrf)) ;
|
||||
if ( IsNull( pSrf_Sub) || ! pSrf_Sub->IsValid())
|
||||
return false ;
|
||||
//int Y = m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pSrf_Sub->Clone()) ;
|
||||
//m_pGeomDB->SetMaterial( Y, YELLOW) ;
|
||||
// effettuo un Offset verso l'interno ( curve esterne che percorre il centro del Tool)
|
||||
if ( pSrf_Sub->Offset( - m_dDiam_Prec / 2 - m_dOffsetR_Prec - 5 * EPS_SMALL, ICurve::OFF_FILLET)) {
|
||||
// se la superificie sparisce o trovo un chunk non valido, la risvuoto tutta per sicurezza...
|
||||
@@ -14429,17 +14401,9 @@ Pocketing::GetNewSrfByAnotherPocketing( ISurfFlatRegion* pSrf, ISurfFlatRegion*
|
||||
// effettuo un Offset del raggio del tool precedente per ricavare la regione svuotata in precedenza
|
||||
PtrOwner<ISurfFlatRegion> pSrfHelp( CloneSurfFlatRegion( pSrf_Sub)) ;
|
||||
if ( ! pSrf_Sub->Offset( m_dDiam_Prec / 2 + 20 * EPS_SMALL, ICurve::OFF_FILLET)) {
|
||||
//int nbadOffs = m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pSrfHelp->Clone()) ;
|
||||
//m_pGeomDB->Save( nbadOffs, "C:\\Users\\riccardo.elitropi\\Desktop\\Err_offs" + ToString( nbadOffs) + "__m" + ToString( m_dDiam_Prec / 2 + 20 * EPS_SMALL) + ".nge") ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
//int r = m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pSrf_Sub->Clone()) ;
|
||||
//m_pGeomDB->SetMaterial( r, RED) ;
|
||||
|
||||
//int v = m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pSrf_noOpenEdge->Clone()) ;
|
||||
//m_pGeomDB->SetMaterial( v, GREEN) ;
|
||||
|
||||
PtrOwner<ISurfFlatRegion> pSrf_clone( CloneSurfFlatRegion( pSrf_noOpenEdge)) ;
|
||||
if ( pSrf_clone->Subtract( *pSrf_Sub)) {
|
||||
|
||||
@@ -14448,9 +14412,6 @@ Pocketing::GetNewSrfByAnotherPocketing( ISurfFlatRegion* pSrf, ISurfFlatRegion*
|
||||
return true ;
|
||||
}
|
||||
|
||||
//int l = m_pGeomDB->AddGeoObj( GDB_ID_NULL, GDB_ID_ROOT, pSrf_clone->Clone()) ;
|
||||
//m_pGeomDB->SetMaterial( l, LIME) ;
|
||||
|
||||
// ricavo la curva esterna originale
|
||||
PtrOwner<ICurveComposite> pCrvExt_orig( GetCurveComposite( pSrf->GetLoop( 0, 0))) ;
|
||||
// superificie finale da restituire ...
|
||||
|
||||
@@ -369,6 +369,7 @@ class Pocketing : public Machining
|
||||
AggrBottom m_AggrBottom ; // dati eventuale aggregato da sotto
|
||||
bool m_bOpenOutRaw ; // flag forzatura lati aperti sempre fuori dal grezzo
|
||||
double m_dOpenMinSafe ; // minima distanza di sicurezza di attacco su lato aperto
|
||||
|
||||
bool m_bIntersRaw = true ; // flag per intersezione con grezzo
|
||||
bool m_bProjectRaw = true ; // flag di proiezione del grezzo
|
||||
bool m_bHasShape = true ; // flag per presenza di geometria voluta
|
||||
|
||||
Reference in New Issue
Block a user