/// <summary> /// Удалить нить производства /// </summary> /// <param name="name">Наименование нити</param> /// <param name="cascade">Удалить также все элементы нити</param> /// <returns></returns> public void DeleteProductionThreadByNumber(int threadNumber) { foreach (ThreadUnit thread in ListThreadUnits) { if (thread.ThreadNumber == threadNumber) { // Обходим список объектов, которые могут находиться на нити. // и удаляем объекты, принадлежащие удаляемой нити // Обходим список объектов Рольганг for (int i = 0; i < ListRollgangUnits.GetItemsCount(); i++) { RollgangUnit rollgang = ListRollgangUnits[i]; if (rollgang.ThreadNumber == threadNumber) { ListRollgangUnits.RemoveItem(i); } } // Обходим список объектов Метка for (int i = 0; i < ListLabelUnits.GetItemsCount(); i++) { LabelUnit label = ListLabelUnits[i]; if (label.ThreadNumber == threadNumber) { ListLabelUnits.RemoveItem(i); } } // Обходим список объектов Датчик for (int i = 0; i < ListSensorUnits.GetItemsCount(); i++) { SensorUnit sensor = ListSensorUnits[i]; if (sensor.ThreadNumber == threadNumber) { ListSensorUnits.RemoveItem(i); } } // Обходим список объектов Упор for (int i = 0; i < ListStopperUnits.GetItemsCount(); i++) { StopperUnit stopper = ListStopperUnits[i]; if (stopper.ThreadNumber == threadNumber) { ListStopperUnits.RemoveItem(i); } } // Обходим список объектов АгрегатЛинейногоПеремещения for (int i = 0; i < ListLinearDisplacementUnits.GetItemsCount(); i++) { LinearDisplacementUnit linear = ListLinearDisplacementUnits[i]; if (linear.ThreadNumber == threadNumber) { ListLinearDisplacementUnits.RemoveItem(i); } } // Обходим список объектов УдалениеЗастрявших for (int i = 0; i < ListDeleterUnits.GetItemsCount(); i++) { DeleterUnit deleter = ListDeleterUnits[i]; if (deleter.ThreadNumber == threadNumber) { ListDeleterUnits.RemoveItem(i); } } // Обходим список объектов Клеть for (int i = 0; i < ListCagesUnits.GetItemsCount(); i++) { CageUnit cage = ListCagesUnits[i]; if (cage.ThreadNumber == threadNumber) { ListCagesUnits.RemoveItem(i); } } // Обходим список объектов ТехУзел for (int i = 0; i < ListTechnicalUnits.GetItemsCount(); i++) { TechnicalUnit tech = ListTechnicalUnits[i]; if (tech.ThreadNumber == threadNumber) { ListTechnicalUnits.RemoveItem(i); } } } } }
/// <summary> /// Удалить линию производства по имени /// </summary> /// <param name="name">Имя линии производства</param> /// <returns></returns> public void DeleteProductionThreadByName(string name) { int threadNumber = 0; FillProductionThreads(); // Находим номер удаляемой нити foreach (ThreadUnit thread in ListThreadUnits) { if (thread.Name == name) { threadNumber = thread.ThreadNumber; break; } } foreach (ProductionThread productionThread in _listProductionThreads) { if (productionThread.Name == name) { // Обходим список объектов, которые могут находиться на нити. // и удаляем объекты, принадлежащие удаляемой нити // Обходим список объектов Рольганг for (int i = 0; i < ListRollgangUnits.GetItemsCount(); i++) { if (ListRollgangUnits[i].ThreadNumber == threadNumber) { ListRollgangUnits.RemoveItem(i); } } // Обходим список объектов Метка for (int i = 0; i < ListLabelUnits.GetItemsCount(); i++) { if (ListLabelUnits[i].ThreadNumber == threadNumber) { ListLabelUnits.RemoveItem(i); } } // Обходим список объектов Датчик for (int i = 0; i < ListSensorUnits.GetItemsCount(); i++) { if (ListSensorUnits[i].ThreadNumber == threadNumber) { ListSensorUnits.RemoveItem(i); } } // Обходим список объектов Упор for (int i = 0; i < ListStopperUnits.GetItemsCount(); i++) { if (ListStopperUnits[i].ThreadNumber == threadNumber) { ListStopperUnits.RemoveItem(i); } } // Обходим список объектов АгрегатЛинейногоПеремещения for (int i = 0; i < ListLinearDisplacementUnits.GetItemsCount(); i++) { if (ListLinearDisplacementUnits[i].ThreadNumber == threadNumber) { ListLinearDisplacementUnits.RemoveItem(i); } } // Обходим список объектов УдалениеЗастрявших for (int i = 0; i < ListDeleterUnits.GetItemsCount(); i++) { if (ListDeleterUnits[i].ThreadNumber == threadNumber) { ListDeleterUnits.RemoveItem(i); } } // Обходим список объектов Клеть for (int i = 0; i < ListCagesUnits.GetItemsCount(); i++) { if (ListCagesUnits[i].ThreadNumber == threadNumber) { ListCagesUnits.RemoveItem(i); } } // Обходим список объектов ТехУзел for (int i = 0; i < ListTechnicalUnits.GetItemsCount(); i++) { if (ListTechnicalUnits[i].ThreadNumber == threadNumber) { ListTechnicalUnits.RemoveItem(i); } } // Обходим список объектов Производственная линия for (int i = 0; i < ListThreadUnits.GetItemsCount(); i++) { if (ListThreadUnits[i].ThreadNumber == threadNumber) { ListThreadUnits.RemoveItem(i); } } FillProductionThreads(); } } }