From 517a1021b58010e653bc4b672cca1f5c576d90ce Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 28 Jul 2025 08:38:34 +0200 Subject: [PATCH] =?UTF-8?q?EgtMachKernel=202.7g4=20:=20-=20correione=20ad?= =?UTF-8?q?=20AdjustOneStartEndMovement=20(si=20aggiunge=20RISE=20anche=20?= =?UTF-8?q?a=20percorso=20finale=20di=20lavorazione=20precedente=20se=20no?= =?UTF-8?q?n=20gi=C3=A0=20presente)=20-=20in=20Rise=20e=20Climb=20per=20ro?= =?UTF-8?q?bot=20setto=20Flag2=20a=20-1=20per=20i=20punti=20intermedi=20ag?= =?UTF-8?q?giunti=20per=20garantire=20la=20traiettoria=20-=20nelle=20funzi?= =?UTF-8?q?oni=20lua=20EmtAddRapidMove=20e=20EmtAddLinearMove=20aggiunto?= =?UTF-8?q?=20parametro=20opzionale=20Flag2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EgtMachKernel.rc | Bin 11774 -> 11774 bytes MachineLuaCL.cpp | 18 ++++++++++++++---- Operation.cpp | 21 ++++++++++++++++----- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index 3abe86ca040e5a43a82c3ca85b809b68f01d5ea6..1a618101f63c9aaef03d7050c0d90c6a144c8bf9 100644 GIT binary patch delta 97 zcmewt{V#gMFE&P#&A-`fnHfzcKa|wnoW?bQ1uSxrY4Qod0+^@}R1`^_2jk{d(jGv4 NK<#LXK~l;gTmUI`BbWdH delta 97 zcmewt{V#gMFE&Qw&A-`fnHh~IKa|wnoW?bQ1uSxrY4Qod0+^@}R1`^_2jk{d(jGv4 NK<#LXK~l;gTmUD-Bai?9 diff --git a/MachineLuaCL.cpp b/MachineLuaCL.cpp index 0173b72..a48c329 100644 --- a/MachineLuaCL.cpp +++ b/MachineLuaCL.cpp @@ -89,7 +89,7 @@ Machine::LuaEmtAddRapidStart( lua_State* L) int Machine::LuaEmtAddRapidMove( lua_State* L) { - // 7 o 8 parametri : nPathId, ptIni, ptFin, vtTool, vtCorr, vtAux, nFlag [, bToolShow] + // 7, 8 o 9 parametri : nPathId, ptIni, ptFin, vtTool, vtCorr, vtAux, nFlag [, nFlag2] [, bToolShow] int nPathId ; LuaCheckParam( L, 1, nPathId) Point3d ptIni ; @@ -104,8 +104,12 @@ Machine::LuaEmtAddRapidMove( lua_State* L) LuaCheckParam( L, 6, vtAux) int nFlag ; LuaCheckParam( L, 7, nFlag) + int nFlag2 = 0 ; bool bToolShow = false ; - LuaGetParam( L, 8, bToolShow) ; + if ( LuaGetParam( L, 8, nFlag2)) + LuaGetParam( L, 9, bToolShow) ; + else + LuaGetParam( L, 8, bToolShow) ; LuaClearStack( L) ; // verifico ci sia una macchina attiva valida if ( m_pMchLua == nullptr || @@ -131,6 +135,7 @@ Machine::LuaEmtAddRapidMove( lua_State* L) pCam->SetEndPoint( ptFin) ; pCam->SetFeed( 0) ; pCam->SetFlag( nFlag) ; + pCam->SetFlag2( nFlag2) ; pCam->SetToolShow( bToolShow) ; // associo questo oggetto a quello geometrico m_pMchLua->m_pGeomDB->SetUserObj( nId, Release( pCam)) ; @@ -147,7 +152,7 @@ Machine::LuaEmtAddRapidMove( lua_State* L) int Machine::LuaEmtAddLinearMove( lua_State* L) { - // 8 o 9 parametri : nPathId, ptIni, ptFin, vtTool, vtCorr, vtAux, dFeed, nFlag [, bToolShow] + // 8, 9 o 10 parametri : nPathId, ptIni, ptFin, vtTool, vtCorr, vtAux, dFeed, nFlag [, nFlag2] [, bToolShow] int nPathId ; LuaCheckParam( L, 1, nPathId) Point3d ptIni ; @@ -164,8 +169,12 @@ Machine::LuaEmtAddLinearMove( lua_State* L) LuaCheckParam( L, 7, dFeed) int nFlag ; LuaCheckParam( L, 8, nFlag) + int nFlag2 = 0 ; bool bToolShow = false ; - LuaGetParam( L, 9, bToolShow) ; + if ( LuaGetParam( L, 9, nFlag2)) + LuaGetParam( L, 10, bToolShow) ; + else + LuaGetParam( L, 9, bToolShow) ; LuaClearStack( L) ; // verifico ci sia una macchina attiva valida if ( m_pMchLua == nullptr || @@ -191,6 +200,7 @@ Machine::LuaEmtAddLinearMove( lua_State* L) pCam->SetEndPoint( ptFin) ; pCam->SetFeed( dFeed) ; pCam->SetFlag( nFlag) ; + pCam->SetFlag2( nFlag2) ; 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 8ac7150..a1dc95a 100644 --- a/Operation.cpp +++ b/Operation.cpp @@ -3399,9 +3399,20 @@ Operation::AdjustOneStartEndMovement( int nClPathId, int nPrevClPathId, Operatio // se Z corrente maggiore della precedente o viceversa se HomeZ sotto else if ( ( ! bZHomeDown && vAxCurr[2] > vAxPrev[2]) || ( bZHomeDown && vAxCurr[2] < vAxPrev[2]) ) { - // se vengo da precedente lavorazione non devo fare alcunché - if ( nPrevClPathId == GDB_ID_NULL) - ; + // se vengo da ultimo percorso di precedente lavorazione + if ( nPrevClPathId == GDB_ID_NULL) { + // deve esistere lavorazione precedente + if ( pPrevOp == nullptr) + return false ; + // se non presente risalita finale + if ( m_pGeomDB->GetFirstNameInGroup( pPrevOp->GetLastFullToolpath(), MCH_CL_RISE) == GDB_ID_NULL) { + // la aggiungo + DBLVECTOR vAxNew ; + double dDelta = ( ! bZHomeDown ? max( vAxCurr[2] - vAxPrev[2], 0.) : min( vAxCurr[2] - vAxPrev[2], 0.)) ; + if ( ! pPrevOp->AddRise( vAxNew, dDelta, GDB_ID_NULL)) + return false ; + } + } // altrimenti vengo da precedente percorso della stessa lavorazione else { // aggiungo risalita alla fine del precedente percorso @@ -3848,7 +3859,7 @@ Operation::AddRise( DBLVECTOR& vAxVal, double dDelta, int nClPathId, int nToMinM return false ; pCdNew->SetAxes( CamData::AS_OK, vAxNew) ; pCdNew->SetFlag( 0) ; - pCdNew->SetFlag2( 0) ; + pCdNew->SetFlag2( -1) ; } } @@ -4099,7 +4110,7 @@ Operation::AddRobotClimb( int nEntId, double dDeltaZ) return false ; pCdNew->SetAxes( CamData::AS_OK, vAxNew) ; pCdNew->SetFlag( 0) ; - pCdNew->SetFlag2( 0) ; + pCdNew->SetFlag2( -1) ; } return true ; }