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:
+12
-3
@@ -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
@@ -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
@@ -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) ;
|
||||
|
||||
Reference in New Issue
Block a user