EgtMachKernel :
- merge con master.
This commit is contained in:
+30
-25
@@ -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) {
|
||||
|
||||
@@ -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) ;
|
||||
|
||||
Reference in New Issue
Block a user