EgtMachKernel :

- in foratura anche le composite con curve di Bezier che sono cerchi vengono riconosciute
- aggiustato parametro di sicurezza per controllo collisioni nei rapidi.
This commit is contained in:
Dario Sassi
2018-05-09 06:55:11 +00:00
parent 9cc19c0d31
commit f3ffeffc7d
3 changed files with 14 additions and 5 deletions
+12 -3
View File
@@ -1219,11 +1219,20 @@ Drilling::GetHoleData( SelData Id, Hole& hole)
const ICurveArc* pArc = GetCurveArc( m_pGeomDB->GetGeoObj( Id.nId)) ;
if ( pArc == nullptr) {
const ICurveComposite* pCompo = GetCurveComposite( m_pGeomDB->GetGeoObj( Id.nId)) ;
if ( pCompo == nullptr)
Point3d ptCen ;
Vector3d vtN ;
double dRad ;
bool bCCW ;
if ( pCompo == nullptr || ! pCompo->IsACircle( 100 * EPS_SMALL, ptCen, vtN, dRad, bCCW))
return false ;
const ICurveArc* pArcTmp = GetCurveArc( pCompo->GetFirstCurve()) ;
if ( pArcTmp == nullptr || ! pMyArc.Set( pArcTmp->Clone()))
pMyArc.Set( CreateCurveArc()) ;
if ( IsNull( pMyArc) || ! pMyArc->Set( ptCen, vtN, dRad))
return false ;
//if ( pCompo == nullptr)
// return false ;
//const ICurveArc* pArcTmp = GetCurveArc( pCompo->GetFirstCurve()) ;
//if ( pArcTmp == nullptr || ! pMyArc.Set( pArcTmp->Clone()))
// return false ;
Vector3d vtExtr ; pCompo->GetExtrusion( vtExtr) ;
pMyArc->SetExtrusion( vtExtr) ;
double dThick = 0 ; pCompo->GetThickness( dThick) ;
+1 -1
View File
@@ -1952,7 +1952,7 @@ Operation::TestCollisionAvoid( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEn
pMch->LinkFixtureToGroup( nFxtId, sTable) ;
// distanza di sicurezza
double dSafeDist = m_pMchMgr->GetCurrMachiningsMgr()->GetSafeZ() ;
dSafeDist = max( 0.9 * dSafeDist, dSafeDist - 10.0) ;
dSafeDist = min( dSafeDist, max( 0.5 * dSafeDist, 10.0)) ;
// Vado nelle posizioni da controllare
const int COLL_STEP = 16 ;
bool bCollide = false ;
+1 -1
View File
@@ -2565,7 +2565,7 @@ Pocketing::CalcSpiral( const ICurveComposite* pCompo, bool bSplitArcs,
// se circonferenza, chiamo la funzione specializzata
Point3d ptCen ; Vector3d vtN ; double dRad ; bool bCCW ;
if ( pCompo->IsACircle( 10 * EPS_SMALL, ptCen, vtN, dRad, bCCW)) {
if ( pCompo->IsACircle( 100 * EPS_SMALL, ptCen, vtN, dRad, bCCW)) {
double dIntRad = 0 ;
if ( m_Params.m_nSubType == POCKET_SUB_SPIRALOUT && GetLeadInType() == POCKET_LI_HELIX) {
dIntRad = min( 0.5 * min( m_Params.m_dLiTang, m_TParams.m_dDiam), dRad - dOffs) ;