diff --git a/Libs/CMS_CORE_Library.dll b/Libs/CMS_CORE_Library.dll index 41a2d785..6576cdef 100644 Binary files a/Libs/CMS_CORE_Library.dll and b/Libs/CMS_CORE_Library.dll differ diff --git a/Step.Database/Controllers/NcToolManagerController.cs b/Step.Database/Controllers/NcToolManagerController.cs index e2e3457a..e5699f68 100644 --- a/Step.Database/Controllers/NcToolManagerController.cs +++ b/Step.Database/Controllers/NcToolManagerController.cs @@ -390,7 +390,7 @@ namespace Step.Database.Controllers return FindMagazinePosition(magazineId, positionId); } - public DTONcShankModel UnloadShankInMagazine(byte magazineId, byte positionId, DbNcShankModel shank) + public DbNcMagazinePositionModel UnloadShankInMagazine(byte magazineId, byte positionId, DbNcShankModel shank) { dbCtx.Shanks.Attach(shank); // set id to null @@ -399,7 +399,7 @@ namespace Step.Database.Controllers dbCtx.SaveChanges(); - return (DTONcShankModel)shank; + return FindMagazinePosition(magazineId, positionId); } public DTONcShankModel LoadToolIntoShank(DbNcToolModel tool, int shankId) diff --git a/Step.NC/NcHandler.cs b/Step.NC/NcHandler.cs index c216fe7c..7291a524 100644 --- a/Step.NC/NcHandler.cs +++ b/Step.NC/NcHandler.cs @@ -1440,7 +1440,7 @@ namespace Step.NC } } - public DTONcShankModel UnloadIntoShank(DbNcToolModel tool) + public DTONcShankModel UnloadFromShank(DbNcToolModel tool) { using (NcToolManagerController toolsManager = new NcToolManagerController()) { @@ -1587,6 +1587,11 @@ namespace Step.NC { List magazineMountedTools = toolsManager.GetMountedTools(); + // Check if there is a tool already mounted in magazineId and positionId + var toolAlreadyMounted = magazineMountedTools.Where(x => x.Shank.MagazineId == magazineId && x.Shank.PositionId == positionId).FirstOrDefault(); + if (toolAlreadyMounted != null) + return MAGAZINE_POSITION_OCCUPIED_ERROR; + List families = toolsManager.FindFamiliesByShankId(shankToBeLoaded.ShankId); int maxRight = families.Max(x => x.RightSize); @@ -1601,27 +1606,33 @@ namespace Step.NC int decPosition, incPosition; decPosition = incPosition = mountedTool.Shank.PositionId.Value; // if it is a circular magazine move position before ( for left case ) or after ( right case ) the location you want to mount the tool - if (magConfig.Type != MAGAZINE_TYPE.BOX_MAGAZINE) + if (magConfig.Type != NC_MAGAZINE_TYPE.BOX_MAGAZINE) { decPosition = decPosition < positionId ? decPosition + magConfig.MaxPositions : decPosition; incPosition = incPosition > positionId ? incPosition - magConfig.MaxPositions : incPosition; } - // Right check - // Calculate left space occupied (with mounted shank) - double leftMounted = decPosition - (mountedTool.Family.LeftSize / 2.0); - // Calculate right space needed (with shank to be loaded) - double rightToBeMount = positionId + (maxRight / 2.0); - if (leftMounted < rightToBeMount) - return MAGAZINE_POSITION_OCCUPIED_ERROR; + if (!(magConfig.Type == NC_MAGAZINE_TYPE.BOX_MAGAZINE && mountedTool.Shank.PositionId == 1)) + { + // Right check + // Calculate left space occupied (with mounted shank) + double leftMounted = decPosition - (mountedTool.Family.LeftSize / 2.0); + // Calculate right space needed (with shank to be loaded) + double rightToBeMount = positionId + (maxRight / 2.0); + if (leftMounted < rightToBeMount) + return MAGAZINE_POSITION_OCCUPIED_ERROR; + } - // Left check - // Calculate right space occupied (with mounted shank) - double rightMounted = incPosition + (mountedTool.Family.RightSize / 2.0); - // Calculate left space needed (with shank to be loaded) - double leftToBeMounted = positionId - (maxLeft / 2.0); - if (rightMounted > leftToBeMounted) - return MAGAZINE_POSITION_OCCUPIED_ERROR; + if (!(magConfig.Type == NC_MAGAZINE_TYPE.BOX_MAGAZINE && mountedTool.Shank.PositionId == magConfig.MaxPositions)) + { + // Left check + // Calculate right space occupied (with mounted shank) + double rightMounted = incPosition + (mountedTool.Family.RightSize / 2.0); + // Calculate left space needed (with shank to be loaded) + double leftToBeMounted = positionId - (maxLeft / 2.0); + if (rightMounted > leftToBeMounted) + return MAGAZINE_POSITION_OCCUPIED_ERROR; + } } } } diff --git a/Step/Controllers/WebApi/NcToolManagerController.cs b/Step/Controllers/WebApi/NcToolManagerController.cs index 3d4b5cf9..4ddfd1cc 100644 --- a/Step/Controllers/WebApi/NcToolManagerController.cs +++ b/Step/Controllers/WebApi/NcToolManagerController.cs @@ -473,14 +473,14 @@ namespace Step.Controllers.WebApi if (magPos.Disabled == true) return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS); - // Check if magazine position is occupied + // Check if magazine position is not occupied DbNcShankModel shankMounted = toolsManager.FindShanksByPositions(magazineId, positionId); - if (shankMounted != null) - return BadRequest(API_ERROR_KEYS.MAGAZINE_POSITION_OCCUPIED); + if (shankMounted == null) + return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS); - DTONcShankModel responseShank = toolsManager.UnloadShankInMagazine(magazineId, positionId, shank); + DTONcMagazinePositionModel magazinePos = (DTONcMagazinePositionModel)toolsManager.UnloadShankInMagazine(magazineId, positionId, shank); - return Ok(responseShank); + return Ok(magazinePos); } } @@ -513,35 +513,34 @@ namespace Step.Controllers.WebApi } } - //[Route("start_edit_data"), HttpPut] - //public IHttpActionResult StartEditData() - //{ - // using (NcHandler ncHandler = new NcHandler()) - // { - // ncHandler.Connect(); + [Route("shank/{shankId:int}/unload/tool/{toolId:int}"), HttpPut] + public IHttpActionResult UnloadToolIntoShank(int shankId, int toolId) + { + if (!ModelState.IsValid) + return BadRequest(ModelState); - // CmsError cmsError = ncHandler.StartEditData(); - // if (cmsError.IsError()) - // return BadRequest(cmsError.localizationKey); + DbNcToolModel tool; + using (NcToolManagerController toolsManager = new NcToolManagerController()) + { + // Check if shank exists + DbNcShankModel shank = toolsManager.FindShankWithTools(shankId); + if (shank == null) + return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS); - // return Ok(); - // } - //} + tool = toolsManager.FindTool(toolId); + if (tool == null) + return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS); + } - //[Route("stop_edit_data"), HttpPut] - //public IHttpActionResult StopEdit() - //{ - // using (NcHandler ncHandler = new NcHandler()) - // { - // ncHandler.Connect(); + using (NcHandler ncHandler = new NcHandler()) + { + ncHandler.Connect(); - // CmsError cmsError = ncHandler.StopEditData(); - // if (cmsError.IsError()) - // return BadRequest(cmsError.localizationKey); + DTONcShankModel shank = ncHandler.UnloadFromShank(tool); - // return Ok(); - // } - //} + return Ok(shank); + } + } [Route("start_edit_tooling/{magazineId:int}"), HttpPut] public IHttpActionResult StartEditTooling(int magazineId)