EgtMachKernel :

- merge con master.
This commit is contained in:
Riccardo Elitropi
2023-07-26 13:13:27 +02:00
parent 25f141fbf0
commit 7cd3925e4c
2 changed files with 31 additions and 25 deletions
+30 -25
View File
@@ -738,7 +738,7 @@ Pocketing::Update( bool bPostApply)
return true ;
}
// elimino le entit CLIMB, RISE e HOME della lavorazione, potrebbero falsare i calcoli degli assi (in ogni casi vengono riaggiunte dopo)
// elimino le entità CLIMB, RISE e HOME della lavorazione, potrebbero falsare i calcoli degli assi (in ogni casi vengono riaggiunte dopo)
RemoveClimbRiseHome() ;
// imposto eventuale asse bloccato da lavorazione
@@ -1368,7 +1368,7 @@ Pocketing::SetCurveAllTempProp( int nCrvId, bool bForcedClose, ICurve* pCurve, b
return false ;
if ( pbSomeOpen != nullptr)
*pbSomeOpen = false ;
// reset propriet temporanee
// reset proprietà temporanee
ResetCurveAllTempProp( pCurve) ;
// se forzato chiuso o non presenti info per lati aperti, esco
if ( bForcedClose || ! m_pGeomDB->ExistsInfo( nCrvId, KEY_OPEN))
@@ -1397,6 +1397,17 @@ Pocketing::SetCurveAllTempProp( int nCrvId, bool bForcedClose, ICurve* pCurve, b
return true ;
}
//----------------------------------------------------------------------------
bool
Pocketing::GetForcedClosed( void)
{
int nOpen ;
if ( FromString( ExtractInfo( m_Params.m_sUserNotes, "Open="), nOpen) && nOpen == 0)
return true ;
else
return false ;
}
//----------------------------------------------------------------------------
bool
Pocketing::ResetCurveAllTempProp( ICurve* pCurve)
@@ -1583,11 +1594,10 @@ Pocketing::ProcessPath( int nAuxId, int nPvId, int nClId)
while ( nPathId != GDB_ID_NULL) { // Scorro tutte le curve concatenate per creare la superficie da lavorare
int nPi = m_pGeomDB->GetFirstInGroup( nPathId) ;
const IGeoObj* pGObj = m_pGeomDB->GetGeoObj( nPi) ;
if ( pGObj == nullptr)
int nPi = m_pGeomDB->GetFirstInGroup( nPathId) ; //nCrvId
if ( m_pGeomDB->GetGeoType( nPi) != CRV_COMPO)
return false ;
const ICurve* pOriCurve = ::GetCurve( pGObj) ;
const ICurve* pOriCurve = ::GetCurve( m_pGeomDB->GetGeoObj( nPi)) ;
if ( pOriCurve == nullptr)
return false ;
PtrOwner<ICurveComposite> pCompoOriCrv( GetCurveComposite( pOriCurve->Clone())) ;
@@ -1598,25 +1608,12 @@ Pocketing::ProcessPath( int nAuxId, int nPvId, int nClId)
nProp0 = pCompoOriCrv->GetTempProp( 0) ; // id selezionato
nProp1 = pCompoOriCrv->GetTempProp( 1) ; // lato adiancente per Trimesh
bool bSomeOpen = m_pGeomDB->ExistsInfo( nPi, KEY_OPEN) ;
if ( bSomeOpen) {
int nOpen ;
if ( FromString( ExtractInfo( m_Params.m_sUserNotes, "Open="), nOpen) && nOpen == 0)
bSomeOpen = false ;
}
// annullo i flag di tratto aperto
for ( int i = 0 ; i < int( pCompoOriCrv->GetCurveCount()) ; ++i)
pCompoOriCrv->SetCurveTempProp( i, 0, 0) ; // alla sottocurva
// aggiorno flag per lati aperti
if ( bSomeOpen) {
INTVECTOR vOpen ;
m_pGeomDB->GetInfo( nPi, KEY_OPEN, vOpen) ;
for ( int j : vOpen)
pCompoOriCrv->SetCurveTempProp( j, 1, 0) ; // alla sottocurva
}
bool bSomeOpen ; // = m_pGeomDB->ExistsInfo( nPi, KEY_OPEN) ;
SetCurveAllTempProp( nPi, GetForcedClosed(), pCompoOriCrv, &bSomeOpen) ;
// unisco le parti allineate (tranne inizio-fine se chiusa)
if ( ! pCompoOriCrv->MergeCurves( 10 * EPS_SMALL, 10 * EPS_ANG_SMALL, false, true))
return false ;
@@ -3321,8 +3318,7 @@ Pocketing::OptimizedZigZag( ISurfFlatRegion* pSrf, const Vector3d& vtTool, doubl
// setto proprietà sulle curve
if ( ! bSrfOriIsCut)
SetCurveAllTempProp( nCrvId, pCrvPocket) ;
SetCurveAllTempProp( nCrvId, GetForcedClosed(), pCrvPocket) ;
SetCurveAllTempProp( nCrvId, GetForcedClosed(), pCrvPocket) ;
pCrvPocket->MergeCurves( 10 * EPS_SMALL, 10 * EPS_ANG_SMALL) ;
// sistemo senso antiorario visto dalla direzione di estrusione
@@ -5070,6 +5066,13 @@ Pocketing::CalcSpiral( const ISurfFlatRegion* pSrfPock, int& nReg, Point3d& ptSt
else
return true ;
}
bool bSomeOpen = false ;
int nTmpProp0 = -1 ;
for ( int u = 0 ; u < pCrvOEWithFlags->GetCurveCount() && !bSomeOpen; ++ u) {
pCrvOEWithFlags->GetCurveTempProp( u, nTmpProp0, 0) ;
bSomeOpen = ( nTmpProp0 == 1) ;
}
// caso trapezoide
pCrvOEWithFlags->MergeCurves( 10 * EPS_SMALL, 10 * EPS_ANG_SMALL, true, true) ;
Point3d pt ; Vector3d vtB1, vtL1, vtB2 ;
@@ -5086,9 +5089,11 @@ Pocketing::CalcSpiral( const ISurfFlatRegion* pSrfPock, int& nReg, Point3d& ptSt
double dPocketSize = vtOrtho.Len() ;
double dMaxOptSize ;
FromString( ExtractInfo( m_Params.m_sUserNotes, "MaxOptSize="), dMaxOptSize) ;
if ( dPocketSize < m_TParams.m_dDiam + EPS_SMALL &&
if ( ( ( bSomeOpen && dPocketSize < m_TParams.m_dDiam + EPS_SMALL) ||
abs( dPocketSize - m_TParams.m_dDiam) < EPS_SMALL) &&
( ! FromString( ExtractInfo( m_Params.m_sUserNotes, "MaxOptSize="), dMaxOptSize) ||
dPocketSize < dMaxOptSize)) {
dPocketSize < dMaxOptSize))
{
if ( nReg == 0) {
CalcTrapezoidSpiral( pCrvOEWithFlags, vtDir, dPocketSize, pMCrv, pRCrv, bOptimizedTrap) ;
if ( bOptimizedTrap) {
+1
View File
@@ -71,6 +71,7 @@ class Pocketing : public Machining
private :
bool VerifyGeometry( SelData Id, int& nSubs, int& nType) ;
bool GetCurves( SelData Id, ICURVEPLIST& lstPC) ;
bool GetForcedClosed( void) ;
bool SetCurveAllTempProp( int nCrvId, bool bForcedClose, ICurve* pCurve, bool* pbSomeOpen = nullptr) ;
bool ResetCurveAllTempProp( ICurve* pCurve) ;
bool Chain( int nGrpDestId) ;