EgtMachKernel :

- a lavorazione WaterJetting aggiunti parametri necessari.
This commit is contained in:
Dario Sassi
2019-10-21 10:59:44 +00:00
parent 222db2563a
commit 40aa1de2de
4 changed files with 390 additions and 44 deletions
+196 -3
View File
@@ -28,11 +28,18 @@ using namespace std ;
enum nWaterJetting {
KEY_AB = 0,
KEY_AI,
KEY_CSL,
KEY_CSP,
KEY_EAL,
KEY_ECT,
KEY_F,
KEY_FA,
KEY_FT,
KEY_HPT,
KEY_ICT,
KEY_INV,
KEY_LICL,
KEY_LIH,
KEY_LIHR,
KEY_LIPR,
KEY_LITG,
@@ -41,11 +48,15 @@ enum nWaterJetting {
KEY_LOPR,
KEY_LOTG,
KEY_LOTY,
KEY_LPT,
KEY_NAME,
KEY_NNS,
KEY_NNU,
KEY_OR,
KEY_OVL,
KEY_PRB,
KEY_PRBMAX,
KEY_PRBMIN,
KEY_S,
KEY_SA,
KEY_SAL,
@@ -59,11 +70,18 @@ enum nWaterJetting {
static const std::array<std::string,KEY_ZZZ> sWaterJettingKey = {
"AB",
"AI",
"CSL",
"CSP",
"EAL",
"ECT",
"F",
"FA",
"FT",
"HPT",
"ICT",
"INV",
"LICL",
"LIH",
"LIHR",
"LIPR",
"LITG",
@@ -72,11 +90,15 @@ static const std::array<std::string,KEY_ZZZ> sWaterJettingKey = {
"LOPR",
"LOTG",
"LOTY",
"LPT",
"NAME",
"NNS",
"NNU",
"OR",
"OVL",
"PRB",
"PRBMAX",
"PRBMIN",
"S",
"SA",
"SAL",
@@ -132,13 +154,24 @@ WaterJettingData::CopyFrom( const MachiningData* pMdata)
m_nWorkSide = pSdata->m_nWorkSide ;
m_dOverlap = pSdata->m_dOverlap ;
m_dSideAngle = pSdata->m_dSideAngle ;
m_dForwardAngle = pSdata->m_dForwardAngle ;
m_dStartAddLen = pSdata->m_dStartAddLen ;
m_dEndAddLen = pSdata->m_dEndAddLen ;
m_bProbing = pSdata->m_bProbing ;
m_dProbingMinDist = pSdata->m_dProbingMinDist ;
m_dProbingMaxDist = pSdata->m_dProbingMaxDist ;
m_nExtCornerType = pSdata->m_nExtCornerType ;
m_nIntCornerType = pSdata->m_nIntCornerType ;
m_dCornerSlowLen = pSdata->m_dCornerSlowLen ;
m_nCornerSlowPerc = pSdata->m_nCornerSlowPerc ;
m_nLeadInType = pSdata->m_nLeadInType ;
m_dLiTang = pSdata->m_dLiTang ;
m_dLiPerp = pSdata->m_dLiPerp ;
m_dLiCompLen = pSdata->m_dLiCompLen ;
m_bLiHole = pSdata->m_bLiHole ;
m_dLiHoleRad = pSdata->m_dLiHoleRad ;
m_nLpTurns = pSdata->m_nLpTurns ;
m_nHpTurns = pSdata->m_nHpTurns ;
m_nLeadOutType = pSdata->m_nLeadOutType ;
m_dLoTang = pSdata->m_dLoTang ;
m_dLoPerp = pSdata->m_dLoPerp ;
@@ -175,13 +208,24 @@ WaterJettingData::SameAs( const MachiningData* pMdata) const
m_nWorkSide == pSdata->m_nWorkSide &&
abs( m_dOverlap - pSdata->m_dOverlap) < EPS_MACH_LEN_PAR &&
abs( m_dSideAngle - pSdata->m_dSideAngle) < EPS_MACH_ANG_PAR &&
abs( m_dForwardAngle - pSdata->m_dForwardAngle) < EPS_MACH_ANG_PAR &&
abs( m_dStartAddLen - pSdata->m_dStartAddLen) < EPS_MACH_LEN_PAR &&
abs( m_dEndAddLen - pSdata->m_dEndAddLen) < EPS_MACH_LEN_PAR &&
m_bProbing == pSdata->m_bProbing &&
abs( m_dProbingMinDist - pSdata->m_dProbingMinDist) < EPS_MACH_LEN_PAR &&
abs( m_dProbingMaxDist - pSdata->m_dProbingMaxDist) < EPS_MACH_LEN_PAR &&
m_nExtCornerType == pSdata->m_nExtCornerType &&
m_nIntCornerType == pSdata->m_nIntCornerType &&
abs( m_dCornerSlowLen - pSdata->m_dCornerSlowLen) < EPS_MACH_LEN_PAR &&
m_nCornerSlowPerc == pSdata->m_nCornerSlowPerc &&
m_nLeadInType == pSdata->m_nLeadInType &&
abs( m_dLiTang - pSdata->m_dLiTang) < EPS_MACH_LEN_PAR &&
abs( m_dLiPerp - pSdata->m_dLiPerp) < EPS_MACH_LEN_PAR &&
abs( m_dLiCompLen - pSdata->m_dLiCompLen) < EPS_MACH_LEN_PAR &&
m_bLiHole == pSdata->m_bLiHole &&
abs( m_dLiHoleRad - pSdata->m_dLiHoleRad) < EPS_MACH_LEN_PAR &&
m_nLpTurns == pSdata->m_nLpTurns &&
m_nHpTurns == pSdata->m_nHpTurns &&
m_nLeadOutType == pSdata->m_nLeadOutType &&
abs( m_dLoTang - pSdata->m_dLoTang) < EPS_MACH_LEN_PAR &&
abs( m_dLoPerp - pSdata->m_dLoPerp) < EPS_MACH_LEN_PAR &&
@@ -232,21 +276,42 @@ WaterJettingData::FromString( const string& sString, int& nKey)
case KEY_AI :
m_sInitAngs = sVal ;
break ;
case KEY_CSL :
bOk = ::FromString( sVal, m_dCornerSlowLen) ;
break ;
case KEY_CSP :
bOk = ::FromString( sVal, m_nCornerSlowPerc) ;
break ;
case KEY_EAL :
bOk = ::FromString( sVal, m_dEndAddLen) ;
break ;
case KEY_ECT :
bOk = ::FromString( sVal, m_nExtCornerType) ;
break ;
case KEY_F :
bOk = ::FromString( sVal, m_dFeed) ;
break ;
case KEY_FA :
bOk = ::FromString( sVal, m_dForwardAngle) ;
break ;
case KEY_FT :
bOk = ::FromString( sVal, m_dTipFeed) ;
break ;
case KEY_HPT :
bOk = ::FromString( sVal, m_nHpTurns) ;
break ;
case KEY_ICT :
bOk = ::FromString( sVal, m_nIntCornerType) ;
break ;
case KEY_INV :
bOk = ::FromString( sVal, m_bInvert) ;
break ;
case KEY_LICL :
bOk = ::FromString( sVal, m_dLiCompLen) ;
break ;
case KEY_LIH :
bOk = ::FromString( sVal, m_bLiHole) ;
break ;
case KEY_LIHR :
bOk = ::FromString( sVal, m_dLiHoleRad) ;
break ;
@@ -271,6 +336,9 @@ WaterJettingData::FromString( const string& sString, int& nKey)
case KEY_LOTY :
bOk = ::FromString( sVal, m_nLeadOutType) ;
break ;
case KEY_LPT :
bOk = ::FromString( sVal, m_nLpTurns) ;
break ;
case KEY_NAME :
m_sName = sVal ;
bOk = ! m_sName.empty() ;
@@ -284,6 +352,15 @@ WaterJettingData::FromString( const string& sString, int& nKey)
case KEY_OR :
bOk = ::FromString( sVal, m_dOffsR) ;
break ;
case KEY_PRB :
bOk = ::FromString( sVal, m_bProbing) ;
break ;
case KEY_PRBMAX :
bOk = ::FromString( sVal, m_dProbingMaxDist) ;
break ;
case KEY_PRBMIN :
bOk = ::FromString( sVal, m_dProbingMinDist) ;
break ;
case KEY_OVL :
bOk = ::FromString( sVal, m_dOverlap) ;
break ;
@@ -325,11 +402,18 @@ WaterJettingData::ToString( int nInd) const
switch ( nInd) {
case KEY_AB : return ( sWaterJettingKey[KEY_AB] + "=" + m_sBlockedAxis) ;
case KEY_AI : return ( sWaterJettingKey[KEY_AI] + "=" + m_sInitAngs) ;
case KEY_CSL : return ( sWaterJettingKey[KEY_CSL] + "=" + ::ToString( m_dCornerSlowLen)) ;
case KEY_CSP : return ( sWaterJettingKey[KEY_CSP] + "=" + ::ToString( m_nCornerSlowPerc)) ;
case KEY_EAL : return ( sWaterJettingKey[KEY_EAL] + "=" + ::ToString( m_dEndAddLen)) ;
case KEY_ECT : return ( sWaterJettingKey[KEY_ECT] + "=" + ::ToString( m_nExtCornerType)) ;
case KEY_F : return ( sWaterJettingKey[KEY_F] + "=" + ::ToString( m_dFeed)) ;
case KEY_FA : return ( sWaterJettingKey[KEY_FA] + "=" + ::ToString( m_dForwardAngle)) ;
case KEY_FT : return ( sWaterJettingKey[KEY_FT] + "=" + ::ToString( m_dTipFeed)) ;
case KEY_HPT : return ( sWaterJettingKey[KEY_HPT] + "=" + ::ToString( m_nHpTurns)) ;
case KEY_ICT : return ( sWaterJettingKey[KEY_ICT] + "=" + ::ToString( m_nIntCornerType)) ;
case KEY_INV : return ( sWaterJettingKey[KEY_INV] + "=" + ::ToString( m_bInvert)) ;
case KEY_LICL : return ( sWaterJettingKey[KEY_LICL] + "=" + ::ToString( m_dLiCompLen)) ;
case KEY_LIH : return ( sWaterJettingKey[KEY_LIH] + "=" + ::ToString( m_bLiHole)) ;
case KEY_LIHR : return ( sWaterJettingKey[KEY_LIHR] + "=" + ::ToString( m_dLiHoleRad)) ;
case KEY_LIPR : return ( sWaterJettingKey[KEY_LIPR] + "=" + ::ToString( m_dLiPerp)) ;
case KEY_LITG : return ( sWaterJettingKey[KEY_LITG] + "=" + ::ToString( m_dLiTang)) ;
@@ -338,11 +422,15 @@ WaterJettingData::ToString( int nInd) const
case KEY_LOPR : return ( sWaterJettingKey[KEY_LOPR] + "=" + ::ToString( m_dLoPerp)) ;
case KEY_LOTG : return ( sWaterJettingKey[KEY_LOTG] + "=" + ::ToString( m_dLoTang)) ;
case KEY_LOTY : return ( sWaterJettingKey[KEY_LOTY] + "=" + ::ToString( m_nLeadOutType)) ;
case KEY_LPT : return ( sWaterJettingKey[KEY_LPT] + "=" + ::ToString( m_nLpTurns)) ;
case KEY_NAME : return ( sWaterJettingKey[KEY_NAME] + "=" + m_sName) ;
case KEY_NNS : return ( sWaterJettingKey[KEY_NNS] + "=" + m_sSysNotes) ;
case KEY_NNU : return ( sWaterJettingKey[KEY_NNU] + "=" + m_sUserNotes) ;
case KEY_OR : return ( sWaterJettingKey[KEY_OR] + "=" + ::ToString( m_dOffsR)) ;
case KEY_OVL : return ( sWaterJettingKey[KEY_OVL] + "=" + ::ToString( m_dOverlap)) ;
case KEY_PRB : return ( sWaterJettingKey[KEY_PRB] + "=" + ::ToString( m_bProbing)) ;
case KEY_PRBMAX : return ( sWaterJettingKey[KEY_PRBMAX] + "=" + ::ToString( m_dProbingMaxDist)) ;
case KEY_PRBMIN : return ( sWaterJettingKey[KEY_PRBMIN] + "=" + ::ToString( m_dProbingMinDist)) ;
case KEY_S : return ( sWaterJettingKey[KEY_S] + "=" + ::ToString( m_dSpeed)) ;
case KEY_SA : return ( sWaterJettingKey[KEY_SA] + "=" + ::ToString( m_dSideAngle)) ;
case KEY_SAL : return ( sWaterJettingKey[KEY_SAL] + "=" + ::ToString( m_dStartAddLen)) ;
@@ -359,7 +447,9 @@ WaterJettingData::ToString( int nInd) const
bool
WaterJettingData::IsOptional( int nKey) const
{
return false ;
return ( nKey == KEY_FA || nKey == KEY_PRB || nKey == KEY_PRBMAX || nKey == KEY_PRBMIN ||
nKey == KEY_ECT || nKey == KEY_ICT || nKey == KEY_CSL || nKey == KEY_CSP ||
nKey == KEY_LIH || nKey == KEY_LIHR || nKey == KEY_LPT || nKey == KEY_HPT) ;
}
//----------------------------------------------------------------------------
@@ -376,12 +466,32 @@ WaterJettingData::VerifyWorkSide( int nVal) const
return ( nVal == WJET_WS_CENTER || nVal == WJET_WS_LEFT || nVal == WJET_WS_RIGHT) ;
}
//----------------------------------------------------------------------------
bool
WaterJettingData::VerifyExtCornerType( int nVal) const
{
return ( nVal == WJET_EC_NONE || nVal == WJET_EC_SLOW || nVal == WJET_EC_LOOP) ;
}
//----------------------------------------------------------------------------
bool
WaterJettingData::VerifyIntCornerType( int nVal) const
{
return ( nVal == WJET_IC_NONE || nVal == WJET_IC_SLOW) ;
}
//----------------------------------------------------------------------------
bool
WaterJettingData::VerifyCornerSlowPerc( int nVal) const
{
return ( nVal >= 0 && nVal <= 100) ;
}
//----------------------------------------------------------------------------
bool
WaterJettingData::VerifyLeadInType( int nVal) const
{
return ( nVal == WJET_LI_NONE || nVal == WJET_LI_LINEAR ||
nVal == WJET_LI_TANGENT) ;
return ( nVal == WJET_LI_NONE || nVal == WJET_LI_LINEAR || nVal == WJET_LI_TANGENT) ;
}
//----------------------------------------------------------------------------
@@ -401,6 +511,15 @@ WaterJettingData::VerifySideAngle( double dVal) const
return ( ( dVal > - MAX_SIDE_ANG && dVal < MAX_SIDE_ANG) || abs( dVal - AUTO_SIDE_ANG) < EPS_ANG_SMALL) ;
}
//----------------------------------------------------------------------------
bool
WaterJettingData::VerifyForwardAngle( double dVal) const
{
const double MAX_FORW_ANG = 30.0 + EPS_ANG_SMALL ;
const double AUTO_FORW_ANG = 99 ;
return ( ( dVal > - EPS_ZERO && dVal < MAX_FORW_ANG) || abs( dVal - AUTO_FORW_ANG) < EPS_ANG_SMALL) ;
}
//----------------------------------------------------------------------------
bool
WaterJettingData::VerifyTool( const ToolsMgr* pToolsMgr, const std::string& sVal, const ToolData*& pTdata) const
@@ -433,6 +552,12 @@ WaterJettingData::SetParam( int nType, bool bVal)
case MPA_INVERT :
m_bInvert = bVal ;
return true ;
case MPA_PROBING :
m_bProbing = bVal ;
return true ;
case MPA_LIHOLE :
m_bLiHole = bVal ;
return true ;
}
return false ;
}
@@ -447,6 +572,21 @@ WaterJettingData::SetParam( int nType, int nVal)
return false ;
m_nWorkSide = nVal ;
return true ;
case MPA_EXTCORNERTYPE :
if ( ! VerifyExtCornerType( nVal))
return false ;
m_nExtCornerType = nVal ;
break ;
case MPA_INTCORNERTYPE :
if ( ! VerifyIntCornerType( nVal))
return false ;
m_nIntCornerType = nVal ;
break ;
case MPA_CORNERSLOWPERC :
if ( ! VerifyCornerSlowPerc( nVal))
return false ;
m_nCornerSlowPerc = nVal ;
break ;
case MPA_LEADINTYPE :
if ( ! VerifyLeadInType( nVal))
return false ;
@@ -457,6 +597,12 @@ WaterJettingData::SetParam( int nType, int nVal)
return false ;
m_nLeadOutType = nVal ;
return true ;
case MPA_LPTURNS :
m_nLpTurns = nVal ;
break ;
case MPA_HPTURNS :
m_nHpTurns = nVal ;
break ;
case MPA_SCC :
if ( ! VerifySolCh( nVal))
return false ;
@@ -491,12 +637,26 @@ WaterJettingData::SetParam( int nType, double dVal)
return false ;
m_dSideAngle = dVal ;
return true ;
case MPA_FORWARDANGLE :
if ( ! VerifyForwardAngle( dVal))
return false ;
m_dForwardAngle = dVal ;
return true ;
case MPA_STARTADDLEN :
m_dStartAddLen = dVal ;
return true ;
case MPA_ENDADDLEN :
m_dEndAddLen = dVal ;
return true ;
case MPA_PROBINGMINDIST :
m_dProbingMinDist = dVal ;
return true ;
case MPA_PROBINGMAXDIST :
m_dProbingMaxDist = dVal ;
return true ;
case MPA_CORNERSLOWLEN :
m_dCornerSlowLen = dVal ;
return true ;
case MPA_LITANG :
m_dLiTang = dVal ;
return true ;
@@ -570,6 +730,12 @@ WaterJettingData::GetParam( int nType, bool& bVal) const
case MPA_INVERT :
bVal = m_bInvert ;
return true ;
case MPA_PROBING :
bVal = m_bProbing ;
return true ;
case MPA_LIHOLE :
bVal = m_bLiHole ;
return true ;
}
bVal = false ;
return false ;
@@ -586,12 +752,27 @@ WaterJettingData::GetParam( int nType, int& nVal) const
case MPA_WORKSIDE :
nVal = m_nWorkSide ;
return true ;
case MPA_EXTCORNERTYPE :
nVal = m_nExtCornerType ;
return true ;
case MPA_INTCORNERTYPE :
nVal = m_nIntCornerType ;
return true ;
case MPA_CORNERSLOWPERC :
nVal = m_nCornerSlowPerc ;
return true ;
case MPA_LEADINTYPE :
nVal = m_nLeadInType ;
return true ;
case MPA_LEADOUTTYPE :
nVal = m_nLeadOutType ;
return true ;
case MPA_LPTURNS :
nVal = m_nLpTurns ;
return true ;
case MPA_HPTURNS :
nVal = m_nHpTurns ;
return true ;
case MPA_SCC :
nVal = m_nSolCh ;
return true ;
@@ -623,12 +804,24 @@ WaterJettingData::GetParam( int nType, double& dVal) const
case MPA_SIDEANGLE :
dVal = m_dSideAngle ;
return true ;
case MPA_FORWARDANGLE :
dVal = m_dForwardAngle ;
return true ;
case MPA_STARTADDLEN :
dVal = m_dStartAddLen ;
return true ;
case MPA_ENDADDLEN :
dVal = m_dEndAddLen ;
return true ;
case MPA_PROBINGMINDIST :
dVal = m_dProbingMinDist ;
return true ;
case MPA_PROBINGMAXDIST :
dVal = m_dProbingMaxDist ;
return true ;
case MPA_CORNERSLOWLEN :
dVal = m_dCornerSlowLen ;
return true ;
case MPA_LITANG :
dVal = m_dLiTang ;
return true ;