diff --git a/MachineLuaCL.cpp b/MachineLuaCL.cpp index 5e7c61e..77a9b7b 100644 --- a/MachineLuaCL.cpp +++ b/MachineLuaCL.cpp @@ -302,7 +302,7 @@ Machine::LuaEmtAddClimb( lua_State* L) // recupero l'operazione Operation* pOper = GetOperation( m_pMchLua->m_pGeomDB->GetUserObj( nMachId)) ; // imposto la discesa (primo movimento del primo percorso della lavorazione) - bool bOk = ( pOper != nullptr && pOper->AddSpecialClimb( vAxVal, ( nMask >= 0), GDB_ID_NULL, nFlag, nFlag2, nMask, sInfo)) ; + bool bOk = ( pOper != nullptr && pOper->AddSpecialClimb( vAxVal, ( nMask >= 0), GDB_ID_NULL, nFlag, nFlag2, nMask, sInfo, false)) ; LuaSetParam( L, bOk) ; return 1 ; diff --git a/Operation.cpp b/Operation.cpp index 6f667b4..edb1007 100644 --- a/Operation.cpp +++ b/Operation.cpp @@ -3572,10 +3572,10 @@ Operation::ToolChangeNeeded( const Operation& Op1, const Operation& Op2) const } //---------------------------------------------------------------------------- -// Inserisce sempre prima della prima entità del percorso +// Inserisce sempre prima della prima entità del percorso ( se bFirst falso dopo tutti i Climb già inseriti) bool Operation::AddSpecialClimb( const DBLVECTOR& vAxVal, bool bOk, int nClPathId, - int nFlag, int nFlag2, int nMask, const string& sInfo) + int nFlag, int nFlag2, int nMask, const string& sInfo, bool bFirst) { if ( m_pMchMgr == nullptr || m_pGeomDB == nullptr) return false ; @@ -3593,6 +3593,11 @@ Operation::AddSpecialClimb( const DBLVECTOR& vAxVal, bool bOk, int nClPathId, } // cerco la prima entità del percorso int nEntId = m_pGeomDB->GetFirstInGroup( nClPathId) ; + if ( ! bFirst) { + string sName ; + while ( nEntId != GDB_ID_NULL && m_pGeomDB->GetName( nEntId, sName) && EqualNoCase( sName, MCH_CL_CLIMB)) + nEntId = m_pGeomDB->GetNext( nEntId) ; + } if ( nEntId == GDB_ID_NULL) return false ; // ne recupero i dati Cam diff --git a/Operation.h b/Operation.h index 4b73b15..68f74ba 100644 --- a/Operation.h +++ b/Operation.h @@ -235,7 +235,7 @@ class Operation : public IUserObj bool AdjustOneStartEndMovement( int nClPathId, int nPrevClPathId, Operation* pPrevOp, const DBLVECTOR& vAxPrev, bool bMaxZ) ; bool ToolChangeNeeded( const Operation& Op1, const Operation& Op2) const ; bool AddSpecialClimb( const DBLVECTOR& vAxVal, bool bOk = true, int nClPathId = GDB_ID_NULL, - int nFlag = 0, int nFlag2 = 0, int nMask = -1, const std::string& sInfo = "") ; + int nFlag = 0, int nFlag2 = 0, int nMask = -1, const std::string& sInfo = "", bool bFirst = true) ; bool RemoveClimb( int nClPathId = GDB_ID_NULL) ; bool AddRise( DBLVECTOR& vAxVal, double dDelta = NAN, int nClPathId = GDB_ID_NULL, int nToMinMaxZ = 0) ; bool AddSpecialRise( const DBLVECTOR& vAxVal, bool bOk = true, int nClPathId = GDB_ID_NULL,