public CutParameters GetAverageCutParamsFromLeafNodes(List <BaseItem> leafNodes) { var cutParams = new CutParameters(); foreach (var leafNode in leafNodes) { var index = CPUBuffers.Get.NodeToIngredientLookup[leafNode.Id]; if (index < 0) { throw new Exception("Node to protein lookup error"); } foreach (var cutObject in CutObjectManager.Get.GetSelectedCutObjects()) { var cutParam = cutObject.GetCutParametersFor(index); cutParams.IsFocus |= cutParam.IsFocus; cutParams.value1 += cutParam.value1; cutParams.value2 += cutParam.value2; cutParams.fuzziness += cutParam.fuzziness; cutParams.fuzzinessDistance += cutParam.fuzzinessDistance; cutParams.fuzzinessCurve += cutParam.fuzzinessCurve; cutParams.Aperture += cutParam.Aperture; } } var averageTotalCount = (float)(leafNodes.Count * CutObjectManager.Get.GetSelectedCutObjects().Count); cutParams.value1 /= averageTotalCount; cutParams.value2 /= averageTotalCount; cutParams.fuzziness /= averageTotalCount; cutParams.fuzzinessDistance /= averageTotalCount; cutParams.fuzzinessCurve /= averageTotalCount; cutParams.Aperture /= averageTotalCount; return(cutParams); }
public CutResults Optimize(CutParameters parameters) { var stockItems = GetStockShapes(parameters.StockItems); var requiredItems = GetRequiredItems(parameters.RequiredItems); var results = new List <CuttingInstructions>(); foreach (var item in requiredItems) { var stock = stockItems[item.ShapeId]; var instructions = item.OptimizeFromStock(stock); results.AddRange(instructions); } return(new CutResults { Groups = results.Select(r => new CutGroupResult { Items = r.Items .Select(i => new CutItemResult { Quantity = i.Quantity, Length = i.Length }).ToArray(), Quantity = r.Quantity, StockLength = r.StockLength, ShapeId = r.ShapeId }).ToArray(), UncutItems = CalculateItemsNotCut(parameters.RequiredItems, results) }); }
public void SetCutParametersFor(int ingredientId, CutParameters cutParameters) { if (IngredientCutParameters.Count == 0 || IngredientCutParameters.Count <= ingredientId) { InitCutParameters(); } IngredientCutParameters[ingredientId] = cutParameters; }
public CutParameters GetAverageCutParamsFromLeafNodes(List<BaseItem> leafNodes) { var cutParams = new CutParameters(); foreach (var leafNode in leafNodes) { var index = SceneManager.Get.NodeToIngredientLookup[leafNode.Id]; if(index < 0) throw new Exception("Node to protein lookup error"); foreach (var cutObject in SceneManager.Get.GetSelectedCutObjects()) { var cutParam = cutObject.GetCutParametersFor(index); cutParams.IsFocus |= cutParam.IsFocus; cutParams.value1 += cutParam.value1; cutParams.value2 += cutParam.value2; cutParams.fuzziness += cutParam.fuzziness; cutParams.fuzzinessDistance += cutParam.fuzzinessDistance; cutParams.fuzzinessCurve += cutParam.fuzzinessCurve; cutParams.Aperture += cutParam.Aperture; } } var averageTotalCount = (float)(leafNodes.Count * SceneManager.Get.GetSelectedCutObjects().Count); cutParams.value1 /= averageTotalCount; cutParams.value2 /= averageTotalCount; cutParams.fuzziness /= averageTotalCount; cutParams.fuzzinessDistance /= averageTotalCount; cutParams.fuzzinessCurve /= averageTotalCount; cutParams.Aperture /= averageTotalCount; return cutParams; }