EgtMachKernel 2.6l2 :
- modifiche a tagli con lama per eliminare approcci/retrazioni con attacco e uscita fuori grezzo e tipologia ToAndFrom - aggiunte gestione nuove costanti (SURFFIN_SUB_Z_CONST e SURFFIN_SUB_OPTIMAL) per tipo finitura superfici.
This commit is contained in:
Binary file not shown.
@@ -16,6 +16,9 @@
|
||||
//----------------- Costanti generali ----------------------------------------
|
||||
#include "/EgtDev/Include/EGkGeoConst.h"
|
||||
|
||||
//----------- Minima distanza di sicurezza ----------------------------------
|
||||
const double MIN_SAFEDIST = 5.0 ;
|
||||
|
||||
//----------- Costanti per approssimazioni con polilinee o poliarchi --------
|
||||
const double LIN_TOL_STD = 0.1 ;
|
||||
const double LIN_TOL_MID = 0.05 ;
|
||||
|
||||
@@ -46,7 +46,6 @@ using namespace std ;
|
||||
|
||||
//------------------------------ Constants ------------------------------------
|
||||
const double OSC_MIN_LEN = 0.1 ;
|
||||
const double MIN_SAFEDIST = 5.0 ;
|
||||
const double LIM_DOWN_APPRZ = -0.5 ;
|
||||
const double DELTA_ELEV_RAD = 4.0 ;
|
||||
const double LIM_SIN_DIFF_DIR = 0.175 ;
|
||||
|
||||
@@ -4172,7 +4172,6 @@ Operation::OneMoveTestCollisionAvoid( const STRVECTOR& vAxName, const DBLVECTOR&
|
||||
|
||||
// distanza di sicurezza
|
||||
const double TOL_SAFEDIST = 5.0 ;
|
||||
const double MIN_SAFEDIST = 5.0 ;
|
||||
double dSafeDist = GetSafeZ() ;
|
||||
dSafeDist = max( dSafeDist - TOL_SAFEDIST, MIN_SAFEDIST) ;
|
||||
// Vado nelle posizioni da controllare
|
||||
|
||||
+33
-7
@@ -16,6 +16,7 @@
|
||||
#include "MachMgr.h"
|
||||
#include "DllMain.h"
|
||||
#include "Sawing.h"
|
||||
#include "GeoConst.h"
|
||||
#include "OperationConst.h"
|
||||
#include "/EgtDev/Include/EXeCmdLogOff.h"
|
||||
#include "/EgtDev/Include/EXeConst.h"
|
||||
@@ -98,6 +99,7 @@ Sawing::Clone( void) const
|
||||
pSaw->m_nPhase = m_nPhase ;
|
||||
pSaw->m_Params = m_Params ;
|
||||
pSaw->m_TParams = m_TParams ;
|
||||
pSaw->m_bDownSE = m_bDownSE ;
|
||||
pSaw->m_nStatus = m_nStatus ;
|
||||
pSaw->m_nCuts = m_nCuts ;
|
||||
}
|
||||
@@ -211,6 +213,7 @@ Sawing::Sawing( void)
|
||||
m_Params.m_sToolName = "*" ;
|
||||
m_TParams.m_sName = "*" ;
|
||||
m_TParams.m_sHead = "*" ;
|
||||
m_bDownSE = false ;
|
||||
m_nStatus = MCH_ST_TO_VERIFY ;
|
||||
m_nCuts = 0 ;
|
||||
}
|
||||
@@ -689,6 +692,11 @@ Sawing::Apply( bool bRecalc, bool bPostApply)
|
||||
if ( ! VerifySideAngle())
|
||||
return false ;
|
||||
|
||||
// verifiche per attacchi/uscite senza approcci e retrazioni
|
||||
int nDownSE = 0 ;
|
||||
FromString( ExtractInfo( m_Params.m_sUserNotes, "DownSE="), nDownSE) ;
|
||||
m_bDownSE = ( nDownSE != 0 && m_Params.m_nStepType == SAW_ST_TOANDFROM) ;
|
||||
|
||||
// recupero gruppo per geometria di lavorazione (Cutter Location)
|
||||
int nClId = m_pGeomDB->GetFirstNameInGroup( m_nOwnerId, MCH_CL) ;
|
||||
// se non c'è, lo aggiungo
|
||||
@@ -3822,8 +3830,16 @@ Sawing::GenerateIntArcCl( const ICurveArc* pArc,
|
||||
bool
|
||||
Sawing::AddApproach( const Point3d& ptP, const Vector3d& vtCorr, double dSafeZ, double dElev, double dAppr)
|
||||
{
|
||||
// se abilitato approccio diretto fuori dal grezzo (solo per lavorazione ToAndFrom)
|
||||
if ( m_bDownSE) {
|
||||
// 1 -> punto sopra inizio
|
||||
SetFlag( 1) ;
|
||||
Point3d ptP1 = ptP + vtCorr * ( dElev / 2 + dAppr / vtCorr.z) ;
|
||||
if ( AddRapidStart( ptP1) == GDB_ID_NULL)
|
||||
return false ;
|
||||
}
|
||||
// se distanza di sicurezza minore di distanza di inizio
|
||||
if ( dSafeZ < m_Params.m_dStartPos + 10 * EPS_SMALL) {
|
||||
else if ( dSafeZ < m_Params.m_dStartPos + 10 * EPS_SMALL) {
|
||||
// 1 -> punto sopra inizio
|
||||
SetFlag( 1) ;
|
||||
Point3d ptP1 = ptP + vtCorr * ( dElev + dAppr / vtCorr.z) ;
|
||||
@@ -3849,7 +3865,17 @@ Sawing::AddApproach( const Point3d& ptP, const Vector3d& vtCorr, double dSafeZ,
|
||||
bool
|
||||
Sawing::AddRetract( const Point3d& ptP, const Vector3d& vtCorr, double dSafeZ, double dElev, double dAppr)
|
||||
{
|
||||
if ( dSafeZ < m_Params.m_dStartPos + 10 * EPS_SMALL) {
|
||||
// se abilitato retrazione diretta fuori dal grezzo (solo per lavorazione ToAndFrom)
|
||||
if ( m_bDownSE) {
|
||||
// 4 -> movimento di risalita sopra il punto finale
|
||||
SetFeed( GetEndFeed()) ;
|
||||
Point3d ptP4 = ptP + vtCorr * ( dElev / 2 + dAppr / vtCorr.z) ;
|
||||
if ( AddRapidMove( ptP4) == GDB_ID_NULL)
|
||||
return false ;
|
||||
// elevazione da considerare nella retrazione
|
||||
double dRtrElev = ( m_bDownSE ? 0 : dElev) ;
|
||||
}
|
||||
else if ( dSafeZ < m_Params.m_dStartPos + 10 * EPS_SMALL) {
|
||||
// 4 -> movimento di risalita sopra il punto finale
|
||||
SetFeed( GetEndFeed()) ;
|
||||
Point3d ptP4 = ptP + vtCorr * ( dElev + dAppr / vtCorr.z) ;
|
||||
@@ -3964,7 +3990,7 @@ Sawing::AdjustLineForEdges( ICurveLine* pLine, double dElev, const Vector3d& vtC
|
||||
bool& bToSkip, double& dDeltaLiExt, double& dDeltaLoExt)
|
||||
{
|
||||
// distanza XY tra centro e bordo taglio
|
||||
double dDeltaT = (( dElev < 0.5 * m_TParams.m_dDiam) ? sqrt( dElev * m_TParams.m_dDiam - dElev * dElev) : 0) ;
|
||||
double dDeltaT = (( dElev < 0.5 * m_TParams.m_dDiam) ? sqrt( dElev * m_TParams.m_dDiam - dElev * dElev) : 0.5 * m_TParams.m_dDiam) ;
|
||||
// lunghezza aggiuntiva per attacco speciale a zigzag
|
||||
double dDeltaLi = 0 ;
|
||||
if ( dLiElev > EPS_SMALL)
|
||||
@@ -4000,7 +4026,7 @@ Sawing::AdjustLineForEdges( ICurveLine* pLine, double dElev, const Vector3d& vtC
|
||||
for ( int i = 0 ; i < 4 ; ++i)
|
||||
dDeltaI = max( dDeltaI, dDist[i]) ;
|
||||
if ( m_Params.m_nLeadInType == SAW_LI_EXT_OUT)
|
||||
dDeltaI += dDeltaT ;
|
||||
dDeltaI += dDeltaT + ( m_bDownSE ? MIN_SAFEDIST : 0) ;
|
||||
dDeltaLiExt = dDeltaI ;
|
||||
}
|
||||
}
|
||||
@@ -4024,7 +4050,7 @@ Sawing::AdjustLineForEdges( ICurveLine* pLine, double dElev, const Vector3d& vtC
|
||||
for ( int i = 0 ; i < 4 ; ++i)
|
||||
dDeltaI = max( dDeltaI, dDist[i]) ;
|
||||
if ( m_Params.m_nLeadInType == SAW_LI_EXT_OUT)
|
||||
dDeltaI += dDeltaT ;
|
||||
dDeltaI += dDeltaT + ( m_bDownSE ? MIN_SAFEDIST : 0) ;
|
||||
dDeltaLiExt = dDeltaI ;
|
||||
}
|
||||
}
|
||||
@@ -4059,7 +4085,7 @@ Sawing::AdjustLineForEdges( ICurveLine* pLine, double dElev, const Vector3d& vtC
|
||||
for ( int i = 0 ; i < 4 ; ++i)
|
||||
dDeltaF = max( dDeltaF, dDist[i]) ;
|
||||
if ( m_Params.m_nLeadOutType == SAW_LO_EXT_OUT)
|
||||
dDeltaF += dDeltaT ;
|
||||
dDeltaF += dDeltaT + ( m_bDownSE ? MIN_SAFEDIST : 0) ;
|
||||
dDeltaLoExt = dDeltaF ;
|
||||
}
|
||||
}
|
||||
@@ -4084,7 +4110,7 @@ Sawing::AdjustLineForEdges( ICurveLine* pLine, double dElev, const Vector3d& vtC
|
||||
dDeltaF = max( dDeltaF, dDist[i]) ;
|
||||
// se LeadOut EXT_OUT vado all'esterno
|
||||
if ( m_Params.m_nLeadOutType == SAW_LO_EXT_OUT)
|
||||
dDeltaF += dDeltaT ;
|
||||
dDeltaF += dDeltaT + ( m_bDownSE ? MIN_SAFEDIST : 0) ;
|
||||
dDeltaLoExt = dDeltaF ;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,6 +164,7 @@ class Sawing : public Machining
|
||||
SELVECTOR m_vId ; // identificativi entità geometriche da lavorare
|
||||
SawingData m_Params ; // parametri lavorazione
|
||||
ToolData m_TParams ; // parametri utensile
|
||||
bool m_bDownSE ; // flag per attacco/uscita senza risalite se fuori dal grezzo
|
||||
int m_nStatus ; // stato di aggiornamento della lavorazione
|
||||
int m_nCuts ; // numero di tagli generati
|
||||
} ;
|
||||
|
||||
@@ -390,7 +390,8 @@ bool
|
||||
SurfFinishingData::VerifySubType( int nVal) const
|
||||
{
|
||||
return ( nVal == SURFFIN_SUB_ZIGZAG || nVal == SURFFIN_SUB_ONEWAY ||
|
||||
nVal == SURFFIN_SUB_SPIRALIN || nVal == SURFFIN_SUB_SPIRALOUT) ;
|
||||
nVal == SURFFIN_SUB_SPIRALIN || nVal == SURFFIN_SUB_SPIRALOUT ||
|
||||
nVal == SURFFIN_SUB_Z_CONST || nVal == SURFFIN_SUB_OPTIMAL) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user