Please, pay attention that now you are in public part of FAQ-Area. Register and find more FAQ-articles in Personal Cabinet.

FAQ#7001415: Нумерация объектов с минимизацией изменений и использованием резервных позиций при изменении по извещению

Keywords: ВЕРТИКАЛЬ нумератор Created: 2022-10-13 10:40:57
Linked Articles: Changed: 2024-03-14 14:59:14
Attachment: GetObjectNumber.txt (2.5 KBytes) Screen_1.jpg (257.5 KBytes) Screen_2.jpg (106.7 KBytes) Screen_3.jpg (119.6 KBytes)

Problem:

После утверждения ТП и выпуска извещения об изменении система отключает все нумераторы технологического процесса, при включении нумераторов нумерация объектов в ТП выполняется без учета минимизации изменений.

Solution:

Решение, описываемое в данной статье, позволяет настроить нумерацию объектов с учетом минимизации изменений и использования резервных позиций по следующим правилам:

  1. Если нумеруемый объект последний в нумераторе, то ему присваивается номер предыдущего объекта + шаг.

    Примечание для перемещаемых объектов:
    Если перемещаемый объект предпоследний, то будет перенумерован предыдущий объект (номер равен среднему значению), а номер перемещаемого объекта останется без изменений.
     

  2. При наличии предыдущего, последующего объектов и резервной позиции нумеруемому объекту присваивается номер со средним значением между номером предыдущего и последующего объектов.

    Примечание для перемещаемых объектов:
    При перемещении объекта сверху вниз результат будет зависеть от положения перемещаемого объекта:

    - Если объект первый, то будет перенумерован перемещаемый объект и предыдущий объект (номер равен среднему значению).

    - Если объект не первый, то перемещаемый объект не будет перенумерован, а предыдущий - получит номер со средним значением.
     

  3. При наличии последующего объекта и резервной позиции нумеруемому объекту присваивается номер со средним значением между 0 и номером последующего объекта.
     

  4. При наличии последующего объекта и отсутствии резервной позиции нумеруемому объекту присваивается номер последующего объекта. Номеру последующего объекта присваивается новое значение по этому же алгоритму.

    Примечание для перемещаемых объектов:

    Для нумератора с заданным шагом и имеющимися резервными позициями, при перемещении последнего объекта, последнему объекту будет присвоен номер с шагом.


Для того, чтобы нумерация объектов выполнялась по описанным выше правилам, необходимо выполнить следующие действия:


1. В ВЕРТИКАЛЬ-Конфигуратор необходимо создать глобальную функцию со следующими параметрами (см. Screen_1.jpg):
 

Имя: GetObjectNumber

Экранное имя: Получить номер объекта

Тип возвращаемого значения: String

Аргументы: TechNumerator numerator, TechObject parentObj, TechObject obj, TechObject prevObj, String current, string prefix
 

Код функции GetObjectNumber во вложении (см. GetObjectNumber.txt).
 

2. Далее в ВЕРТИКАЛЬ-Конфигуратор перейти на вкладку Нумераторы и у каждого нумератора, который должен работать по описанным правилам, добавить тело скрипта (см. Screen_2.jpg):
 

return Globals.GetObjectNumber(numerator, parentObj, obj, prevObj, current, string.Empty);
 

- для нумератора установов (operationplacement) необходимо использовать следующий скрипт:
 

return Globals.GetObjectNumber(numerator, parentObj, obj, prevObj, current, "Установ ");
 

3. Для того, чтобы при выпуске ИИ автоматически включались нумераторы, необходимо в событии OnConstructed класса changing добавить следующий код (см. Screen_3.jpg):
 

foreach (var numerator in obj.Document.Model.Numerators)
    obj.Document.Extensions.NumerationService.EnableNumerator(numerator);