diff --git a/CamData.cpp b/CamData.cpp index f573efe..65a8eff 100644 --- a/CamData.cpp +++ b/CamData.cpp @@ -1,13 +1,14 @@ //---------------------------------------------------------------------------- -// EgalTech 2015-2016 +// EgalTech 2015-2023 //---------------------------------------------------------------------------- -// File : CamData.cpp Data : 24.02.16 Versione : 1.6n8 +// File : CamData.cpp Data : 22.11.23 Versione : 2.5k3 // Contenuto : Implementazione informazioni Cam di ogni movimento. // // // // Modifiche : 10.06.15 DS Creazione modulo. // 24.02.16 DS Versione 2 (aggiunti m_nMove e m_ptCen). +// 22.11.23 DS Aggiunto flag ToolShow (forza in ogni caso la visualizzazione della direzione utensile). // //---------------------------------------------------------------------------- @@ -53,7 +54,9 @@ static int CAM_PARAM_V7 = 22 ; static string CAM_ORIGFEED = "OrFeed" ; static int CAM_PARAM_V8 = 23 ; static string CAM_FLAG2 = "Flg2" ; -static int CAM_TOTPARAM =CAM_PARAM_V8 ; +static int CAM_PARAM_V9 = 24 ; +static string CAM_TOOLSHOW = "TSh" ; +static int CAM_TOTPARAM = CAM_PARAM_V9 ; //---------------------------------------------------------------------------- @@ -79,6 +82,7 @@ CamData::Clone( void) const pCam->m_pGeomDB = nullptr ; pCam->m_nMove = m_nMove ; pCam->m_nCorre = m_nCorre ; + pCam->m_bToolShow = m_bToolShow ; pCam->m_vtTool = m_vtTool ; pCam->m_vtCorr = m_vtCorr ; pCam->m_vtAux = m_vtAux ; @@ -139,6 +143,7 @@ CamData::Dump( string& sOut, bool bMM, const char* szNewLine) const sOut += CAM_AXND + "=" + ToString( m_vtMachN) + szNewLine ; sOut += CAM_NDLT + "=" + ToString( m_dDeltaN) + szNewLine ; sOut += CAM_BDIR + "=" + ToString( m_vtBackAux) + szNewLine ; + sOut += CAM_TOOLSHOW + "=" + ToString( m_bToolShow) + szNewLine ; return true ; } @@ -205,6 +210,8 @@ CamData::Save( int nBaseId, STRVECTOR& vString) const vString[++k] = CAM_ORIGFEED + "=" + ToString( m_dOrigFeed) ; // parametri aggiunti V8 vString[++k] = CAM_FLAG2 + "=" + ToString( m_nFlag2) ; + // parametri aggiunti V9 + vString[++k] = CAM_TOOLSHOW + "=" + ToString( m_bToolShow) ; } catch( ...) { return false ; @@ -297,6 +304,14 @@ CamData::Load( const STRVECTOR& vString, int nBaseGdbId) else { m_nFlag2 = 0 ; } + // parametri aggiunti V9 + if ( int( vString.size()) >= CAM_PARAM_V9) { + if ( ! GetVal( vString[++k], CAM_TOOLSHOW, m_bToolShow)) + return false ; + } + else { + m_bToolShow = false ; + } return true ; } @@ -313,7 +328,7 @@ CamData::GetDrawPolyLines( POLYLINELIST& lstPL) const PolyLine& PL = lstPL.back() ; // dimensioni const double TLEN = 40 ; - const double ALEN = 4 ; + const double ALEN = 1 ; // inserisco disegno nella polilinea PL.AddUPoint( 0, m_ptEnd) ; Point3d ptTip = m_ptEnd + m_vtTool * TLEN ; @@ -335,6 +350,9 @@ CamData::GetDrawPolyLines( POLYLINELIST& lstPL) const ptP6.ToGlob( frF) ; PL.AddUPoint( 6, ptP6) ; PL.AddUPoint( 6, ptTip) ; + // da visualizzare sempre se richiesto + if ( m_bToolShow) + PL.SetTempProp( 1) ; } // se vettore correzione non nullo if ( ! m_vtCorr.IsSmall()) { @@ -344,7 +362,7 @@ CamData::GetDrawPolyLines( POLYLINELIST& lstPL) const PolyLine& PL = lstPL.back() ; // dimensioni const double CLEN = 20 ; - const double ALEN = 2 ; + const double ALEN = 1 ; // inserisco disegno nella polilinea PL.AddUPoint( 0, m_ptEnd) ; Point3d ptTip = m_ptEnd + m_vtCorr * CLEN ; @@ -373,7 +391,7 @@ CamData::GetDrawPolyLines( POLYLINELIST& lstPL) const PolyLine& PL = lstPL.back() ; // dimensioni const double CLEN = 20 ; - const double ALEN = 2 ; + const double ALEN = 1 ; // inserisco disegno nella polilinea PL.AddUPoint( 0, m_ptEnd) ; Point3d ptTip = m_ptEnd + m_vtAux * CLEN ; @@ -548,6 +566,7 @@ CamData::CamData( void) m_pGeomDB = nullptr ; m_nMove = 0 ; m_nCorre = 0 ; + m_bToolShow = false ; m_dAngCen = 0 ; m_dDeltaN = 0 ; m_dFeed = 0 ; diff --git a/CamData.h b/CamData.h index fbaf3ad..a410ed1 100644 --- a/CamData.h +++ b/CamData.h @@ -68,11 +68,13 @@ class CamData : public IUserObj bool SetAxesAngCen( double dAngCen) ; bool SetAxesNormDir( const Vector3d& vtDir) ; bool SetBackAuxDir( const Vector3d& vtDir) ; - const int GetMoveType( void) const + bool SetToolShow( bool bShow) + { m_bToolShow = bShow ; return true ; } + int GetMoveType( void) const { return m_nMove ; } - const bool IsLine( void) const + bool IsLine( void) const { return ( m_nMove == 0 || m_nMove == 1) ; } - const bool IsArc( void) const + bool IsArc( void) const { return ( m_nMove == 2 || m_nMove == 3) ; } const Vector3d& GetToolDir( void) const { return m_vtTool ; } @@ -108,14 +110,16 @@ class CamData : public IUserObj { return m_vMachAxes ; } const Point3d& GetAxesCen( void) const { return m_ptMachCen ; } - const double GetAxesRad( void) const + double GetAxesRad( void) const { return m_dMachRad ; } - const double GetAxesAngCen( void) const + double GetAxesAngCen( void) const { return m_dMachAngCen ; } const Vector3d& GetAxesNormDir( void) const { return m_vtMachN ; } const Vector3d& GetBackAuxDir( void) const { return m_vtBackAux ; } + bool GetToolShow( void) const + { return m_bToolShow ; } public : enum { AS_NONE = 0, @@ -139,6 +143,7 @@ class CamData : public IUserObj IGeomDB* m_pGeomDB ; int m_nMove ; // tipo movimento (0=rapido, 1=lineare, 2=arco CW, 3=arco CCW) int m_nCorre ; // tipo correzione (0, 41, 42, 141, 142, 40) + bool m_bToolShow ; // flag per forzare la visualizzazione della direzione utensile in ogni caso Vector3d m_vtTool ; // versore fresa Vector3d m_vtCorr ; // versore correzione Vector3d m_vtAux ; // versore ausiliario diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index ccc05db..4495130 100644 Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ diff --git a/GenMachining.cpp b/GenMachining.cpp index 1d0b29e..0dcb4d2 100644 --- a/GenMachining.cpp +++ b/GenMachining.cpp @@ -55,6 +55,17 @@ static const string EVAR_STARTPOS = ".STARTPOS" ; // IN (num) quota di inizio l static const string EVAR_OFFSR = ".OFFSR" ; // IN (num) offset radiale static const string EVAR_OFFSL = ".OFFSL" ; // IN (num) offset longitudinale static const string EVAR_TOOL = ".TOOL" ; // IN (string) nome dell'utensile +static const string EVAR_HEAD = ".HEAD" ; // IN (string) nome testa +static const string EVAR_EXIT = ".EXIT" ; // IN (int) indice uscita +static const string EVAR_TTYPE = ".TTYPE" ; // IN (int) tipo utensile +static const string EVAR_TMAXMAT = ".TMAXMAT" ; // IN (num) massimo materiale +static const string EVAR_TDIAM = ".TDIAM" ; // IN (num) diametro utensile +static const string EVAR_TTOTDIAM = ".TTOTDIAM" ; // IN (num) diametro totale utensile +static const string EVAR_TLEN = ".TLEN" ; // IN (num) lunghezza utensile +static const string EVAR_TTOTLEN = ".TTOTLEN" ; // IN (num) lunghezza totale utensile +static const string EVAR_TTHICK = ".THICK" ; // IN (num) spessore per lame o altezza taglienti +static const string EVAR_TCORNRAD = ".TCORNRAD" ; // IN (num) raggio corner +static const string EVAR_TSIDEANG = ".TSIDEANG" ; // IN (num) angolo del fianco rispetto all'asse static const string EVAR_FEED = ".FEED" ; // IN (num) feed dell'utensile static const string EVAR_STARTFEED = ".STARTFEED" ;// IN (num) feed di inizio dell'utensile static const string EVAR_ENDFEED = ".ENDFEED" ; // IN (num) feed di fine dell'utensile @@ -481,6 +492,17 @@ GenMachining::Preview( bool bRecalc) bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_OFFSR, GetOffsR()) ; bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_OFFSL, GetOffsL()) ; bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TOOL, m_TParams.m_sName) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_HEAD, m_TParams.m_sHead) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_EXIT, m_TParams.m_nExit) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TTYPE, m_TParams.m_nType) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TMAXMAT, m_TParams.m_dMaxMat) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TDIAM, m_TParams.m_dDiam) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TTOTDIAM, m_TParams.m_dTDiam) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TLEN, m_TParams.m_dLen) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TTOTLEN, m_TParams.m_dTLen) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TTHICK, m_TParams.m_dThick) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TCORNRAD, m_TParams.m_dCornRad) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TSIDEANG, m_TParams.m_dSideAng) ; bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_FEED, GetFeed()) ; bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_STARTFEED, GetStartFeed()) ; bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_ENDFEED, GetEndFeed()) ; @@ -584,6 +606,17 @@ GenMachining::Apply( bool bRecalc, bool bPostApply) bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_OFFSR, GetOffsR()) ; bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_OFFSL, GetOffsL()) ; bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TOOL, m_TParams.m_sName) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_HEAD, m_TParams.m_sHead) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_EXIT, m_TParams.m_nExit) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TTYPE, m_TParams.m_nType) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TMAXMAT, m_TParams.m_dMaxMat) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TDIAM, m_TParams.m_dDiam) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TTOTDIAM, m_TParams.m_dTDiam) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TLEN, m_TParams.m_dLen) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TTOTLEN, m_TParams.m_dTLen) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TTHICK, m_TParams.m_dThick) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TCORNRAD, m_TParams.m_dCornRad) ; + bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TSIDEANG, m_TParams.m_dSideAng) ; bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_FEED, GetFeed()) ; bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_STARTFEED, GetStartFeed()) ; bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_ENDFEED, GetEndFeed()) ; diff --git a/MachineLuaCL.cpp b/MachineLuaCL.cpp index ffeeb57..f81ee6c 100644 --- a/MachineLuaCL.cpp +++ b/MachineLuaCL.cpp @@ -31,7 +31,7 @@ using namespace std ; int Machine::LuaEmtAddRapidStart( lua_State* L) { - // 6 parametri : nPathId, ptP, vtTool, vtCorr, vtAux, nFlag + // 6 o 7 parametri : nPathId, ptP, vtTool, vtCorr, vtAux, nFlag [, bToolShow] int nPathId ; LuaCheckParam( L, 1, nPathId) Point3d ptP ; @@ -44,6 +44,8 @@ Machine::LuaEmtAddRapidStart( lua_State* L) LuaCheckParam( L, 5, vtAux) int nFlag ; LuaCheckParam( L, 6, nFlag) + bool bToolShow = false ; + LuaGetParam( L, 7, bToolShow) ; LuaClearStack( L) ; // verifico ci sia una macchina attiva valida if ( m_pMchLua == nullptr || @@ -69,6 +71,7 @@ Machine::LuaEmtAddRapidStart( lua_State* L) pCam->SetEndPoint( ptP) ; pCam->SetFeed( 0) ; pCam->SetFlag( nFlag) ; + pCam->SetToolShow( bToolShow) ; // associo questo oggetto a quello geometrico m_pMchLua->m_pGeomDB->SetUserObj( nId, Release( pCam)) ; } @@ -84,7 +87,7 @@ Machine::LuaEmtAddRapidStart( lua_State* L) int Machine::LuaEmtAddRapidMove( lua_State* L) { - // 7 parametri : nPathId, ptIni, ptFin, vtTool, vtCorr, vtAux, nFlag + // 7 o 8 parametri : nPathId, ptIni, ptFin, vtTool, vtCorr, vtAux, nFlag [, bToolShow] int nPathId ; LuaCheckParam( L, 1, nPathId) Point3d ptIni ; @@ -99,6 +102,8 @@ Machine::LuaEmtAddRapidMove( lua_State* L) LuaCheckParam( L, 6, vtAux) int nFlag ; LuaCheckParam( L, 7, nFlag) + bool bToolShow = false ; + LuaGetParam( L, 8, bToolShow) ; LuaClearStack( L) ; // verifico ci sia una macchina attiva valida if ( m_pMchLua == nullptr || @@ -124,6 +129,7 @@ Machine::LuaEmtAddRapidMove( lua_State* L) pCam->SetEndPoint( ptFin) ; pCam->SetFeed( 0) ; pCam->SetFlag( nFlag) ; + pCam->SetToolShow( bToolShow) ; // associo questo oggetto a quello geometrico m_pMchLua->m_pGeomDB->SetUserObj( nId, Release( pCam)) ; } @@ -139,7 +145,7 @@ Machine::LuaEmtAddRapidMove( lua_State* L) int Machine::LuaEmtAddLinearMove( lua_State* L) { - // 8 parametri : nPathId, ptIni, ptFin, vtTool, vtCorr, vtAux, dFeed, nFlag + // 8 o 9 parametri : nPathId, ptIni, ptFin, vtTool, vtCorr, vtAux, dFeed, nFlag [, bToolShow] int nPathId ; LuaCheckParam( L, 1, nPathId) Point3d ptIni ; @@ -156,6 +162,8 @@ Machine::LuaEmtAddLinearMove( lua_State* L) LuaCheckParam( L, 7, dFeed) int nFlag ; LuaCheckParam( L, 8, nFlag) + bool bToolShow = false ; + LuaGetParam( L, 9, bToolShow) ; LuaClearStack( L) ; // verifico ci sia una macchina attiva valida if ( m_pMchLua == nullptr || @@ -181,6 +189,7 @@ Machine::LuaEmtAddLinearMove( lua_State* L) pCam->SetEndPoint( ptFin) ; pCam->SetFeed( dFeed) ; pCam->SetFlag( nFlag) ; + pCam->SetToolShow( bToolShow) ; // associo questo oggetto a quello geometrico m_pMchLua->m_pGeomDB->SetUserObj( nId, Release( pCam)) ; } @@ -196,7 +205,7 @@ Machine::LuaEmtAddLinearMove( lua_State* L) int Machine::LuaEmtAddArcMove( lua_State* L) { - // 11 parametri : nPathId, ptIni, ptFin, ptCen, dAngCen, vtN, vtTool, vtCorr, vtAux, dFeed, nFlag + // 11 o 12 parametri : nPathId, ptIni, ptFin, ptCen, dAngCen, vtN, vtTool, vtCorr, vtAux, dFeed, nFlag [, bToolShow] int nPathId ; LuaCheckParam( L, 1, nPathId) Point3d ptIni ; @@ -219,6 +228,8 @@ Machine::LuaEmtAddArcMove( lua_State* L) LuaCheckParam( L, 10, dFeed) int nFlag ; LuaCheckParam( L, 11, nFlag) + bool bToolShow = false ; + LuaGetParam( L, 12, bToolShow) ; LuaClearStack( L) ; // verifico ci sia una macchina attiva valida if ( m_pMchLua == nullptr || @@ -252,6 +263,7 @@ Machine::LuaEmtAddArcMove( lua_State* L) pCam->SetNormDir( vtN) ; pCam->SetFeed( dFeed) ; pCam->SetFlag( nFlag) ; + pCam->SetToolShow( bToolShow) ; // associo questo oggetto a quello geometrico m_pMchLua->m_pGeomDB->SetUserObj( nId, Release( pCam)) ; } diff --git a/Operation.cpp b/Operation.cpp index 5ba1f4f..0f546e4 100644 --- a/Operation.cpp +++ b/Operation.cpp @@ -1418,6 +1418,11 @@ Operation::CalcMirrorByDouble( int nClId, const std::string& sUserNotes) // eseguo mirroring rispetto a piano opportuno m_pGeomDB->MirrorGroup( nDblId, ptOn, vtNorm) ; + // se presente una differenza in Z, eseguo spostamento + double dDeltaZ ; + if ( GetValInNotes( sUserNotes, "DeltaZ", dDeltaZ) && abs( dDeltaZ) > EPS_SMALL) + m_pGeomDB->TranslateGlob( nDblId, Vector3d( 0, 0, dDeltaZ)) ; + return true ; }