diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index 2892464..d266acd 100644 Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ diff --git a/Machine.cpp b/Machine.cpp index 061e13a..da2d70a 100644 --- a/Machine.cpp +++ b/Machine.cpp @@ -1097,6 +1097,13 @@ Machine::IsLinkedRawPart( int nRawId) const return ( find( m_vLinkedRawParts.begin(), m_vLinkedRawParts.end(), nRawId) != m_vLinkedRawParts.end()) ; } +//---------------------------------------------------------------------------- +const INTVECTOR& +Machine:: GetAllLinkedRawParts( void) const +{ + return m_vLinkedRawParts ; +} + //---------------------------------------------------------------------------- bool Machine::UnlinkRawPartFromGroup( int nRawPartId) diff --git a/Machine.h b/Machine.h index bde783f..ececbb0 100644 --- a/Machine.h +++ b/Machine.h @@ -151,6 +151,7 @@ class Machine { return m_nMachineLook ; } bool LinkRawPartToGroup( int nRawPartId, const std::string& sGroupName) ; bool IsLinkedRawPart( int nRawId) const ; + const INTVECTOR& GetAllLinkedRawParts( void) const ; bool UnlinkRawPartFromGroup( int nRawPartId) ; bool UnlinkAllRawPartsFromGroups( void) ; bool LinkFixtureToGroup( int nFxtId, const std::string& sGroupName) ; @@ -321,6 +322,7 @@ class Machine static int LuaEmtGetAxesPos( lua_State* L) ; static int LuaEmtGetBackAuxDir( lua_State* L) ; static int LuaEmtLinkRawPartToGroup( lua_State* L) ; + static int LuaEmtGetAllLinkedRawParts( lua_State* L) ; static int LuaEmtUnlinkRawPartFromGroup( lua_State* L) ; static int LuaEmtUnlinkAllRawPartsFromGroups( lua_State* L) ; static int LuaEmtLinkFixtureToGroup( lua_State* L) ; diff --git a/MachineLua.cpp b/MachineLua.cpp index 4e930d5..b63d858 100644 --- a/MachineLua.cpp +++ b/MachineLua.cpp @@ -96,6 +96,7 @@ Machine::LuaInit( const string& sMachineName) m_LuaMgr.RegisterFunction( "EmtModifyHeadAuxDirection", Machine::LuaEmtModifyHeadAuxDirection) ; m_LuaMgr.RegisterFunction( "EmtModifyExitPosition", Machine::LuaEmtModifyExitPosition) ; m_LuaMgr.RegisterFunction( "EmtLinkRawPartToGroup", Machine::LuaEmtLinkRawPartToGroup) ; + m_LuaMgr.RegisterFunction( "EmtGetAllLinkedRawParts", Machine::LuaEmtGetAllLinkedRawParts) ; m_LuaMgr.RegisterFunction( "EmtUnlinkRawPartFromGroup", Machine::LuaEmtUnlinkRawPartFromGroup) ; m_LuaMgr.RegisterFunction( "EmtUnlinkAllRawPartsFromGroups", Machine::LuaEmtUnlinkAllRawPartsFromGroups) ; m_LuaMgr.RegisterFunction( "EmtLinkFixtureToGroup", Machine::LuaEmtLinkFixtureToGroup) ; @@ -984,6 +985,22 @@ Machine::LuaEmtUnlinkRawPartFromGroup( lua_State* L) return 1 ; } +//---------------------------------------------------------------------------- +int +Machine::LuaEmtGetAllLinkedRawParts( lua_State* L) +{ + // nessun parametro + LuaClearStack( L) ; + // verifico ci sia una macchina attiva + if ( m_pMchLua == nullptr) + return luaL_error( L, " Unknown Machine") ; + // recupero l'elenco dei grezzi agganciati ad un gruppo macchina + const INTVECTOR& vLinkedRawParts = m_pMchLua->GetAllLinkedRawParts() ; + // assegno risultato + LuaSetParam( L, vLinkedRawParts) ; + return 1 ; +} + //---------------------------------------------------------------------------- int Machine::LuaEmtUnlinkAllRawPartsFromGroups( lua_State* L) diff --git a/Operation.cpp b/Operation.cpp index d99ea44..646112f 100644 --- a/Operation.cpp +++ b/Operation.cpp @@ -372,7 +372,7 @@ Operation::GetPointUnderRaw( const Point3d& ptP, const Vector3d& vtTool, double int nStmId = m_pGeomDB->GetFirstNameInGroup( nRawId, MACH_RAW_SOLID) ; BBox3d b3Raw ; m_pGeomDB->GetGlobalBBox( nStmId, b3Raw) ; - b3Raw.Expand( 0.5 * dSafeZ) ; + b3Raw.Expand( 0.5 * dSafeZ, 0.5 * dSafeZ, 0) ; if ( ! b3Raw.IsEmpty() && b3Raw.OverlapsXY( b3Tool) && ptP.z + dExtraZ < b3Raw.GetMin().z - 10 * EPS_SMALL) { double dRawCentZ = ( b3Raw.GetMin().z + b3Raw.GetMax().z) / 2 ; double dRawDimZ = b3Raw.GetMax().z - b3Raw.GetMin().z ;