6 февраля 2011 г.

Пример работы с коллекцией

Пример именования элементов согласно определенным правилам.

Задача: необходимо найти все элементы типа VALV, у которых в наименовании есть слово 'Задвижка' и присвоить каждому уникальный идентификатор, базирующийся на атрибуте Styp из спецификации + номер суффикса.

Решение:
--сначала проверяем уровень иерархии для которого нужно вести поиск
--и если это не ZONE с атрибутом Purp=PIPE, тогда останавливаем выполнение
if (!!CE.Type NEQ 'ZONE' AND !!CE.Purp NEQ 'PIPE') then
  !!Alert.Message('Перейдите на зону с трубами')
   RETURN
endif


--если же уровень верный - запрашиваем элементы по критерию
VAR !valves COLL ALL VALV WITH (MATCHWILD(DTXR,'*Задвижка*')) FOR CE
--далее запускаем цикл, где по очереди переходим на элементы,
--убираем имя, и задаем новое, согласно правилу V-номер-styp
do !x from 1 to !valves.Size()
  $!valves[$!x]
  UNNAME
  !styp = !!CE.Styp
  !newname = '/V-$!x' + '-$!styp'
  NAME $!newname

     HANDLE (41,12)
     ENDHANDL:E
enddo
После команды задания имени следует оператор HANDLE для того, чтобы поймать ошибку, появляющуюся, если имя уже существует и тогда код не прервется, а элемент просто останется непоименованным


0 коммент.:

Отправить комментарий