10 марта 2011 г.

Переезд сайта

Сайт переезжает и будет находиться по адресу http://pml.dabacon.ru/ . Помещайте новый сайт в закладки.
Вся информация будет располагаться там. Здесь сообщения дублироваться не будут

7 марта 2011 г.

Пример редактирования атрибутов

Задача: выгрузить в формат Excel (.csv) элементы типа EQUI для редактирования атрибута Descirpition. После редактирования (в Excel) загрузить информацию обратно, так чтобы соответствующему элементу рписвоилось соответствующее значение атрибута.

Решение: состоит из двух частей - коллекция и запись в файл и считывание файла и запись атрибута

Часть первая (код первого макроса): собираем все элементы типа EQUI внутри текущего элемента --> формируем массив для вывода во внешний файл --> выводим в файл, затем файл редактируется средствами Excel

--собираем коллекцию
VAR !allEqui COLLECT ALL EQUI FOR CE
--запускаем цикл для формирования массива данных на вывод
--разделитель - точка с запятой для того, чтобы Excel авоматически разбил по столбцам
do !x from 1 to !allEqui.Size()

 !outputArray[!x] = !allEqui[!x].Dbref().Name + ';' + !allEqui[!x].Dbref().Desc

enddo

--формируем файл
!fileName = 'c:\equips.csv'
!fileObj = OBJECT FILE(!fileName)
--записываем информацию
!fileObj.Writefile('OVERWRITE',!outputArray)

8 февраля 2011 г.

Пример использования коллекций. Обработка модели

Задача: были созданы несколько трубопроводов (PIPE), однако не задавался атрибут Bore (диаметр). В именовании трубопроводов присутствует обозначение диаметра, в качестве первого блока (до знака минус), например /100-B-1 (здесь 100 - основной диаметр линии). Необходимо найти диаметр по части имени и присвоить это значение атрибуту Bore элемента Pipe. Вторая часть задачи: добавить найденные элементы на экран и задать временный цвет согласно схеме
Диаметр-цвет: 40-BLUE,80-RED,100-GREEN,150-YELLOW,200-GREY,250-DARKBROWN

Решение: делаем запросы к базе на предмет нахождения элементов типа PIPE, далее запускаем
цикл, в цикле обрабатываем каждый элемент на предмет нахождения диаметр (функция .Before(), .After()), присвоения атрибута Bore в найденное значение, учитывая что это должно быть число, вывод на экран и раскраской согласно указанной фильтрации

7 февраля 2011 г.

Сообщения пользователю. Часть 1

Для того, чтобы сделать ваши интерфейсы более интерактивынми и дружелюбными к пользователю, необходимо предусматривать систему сообщений.
Возможно использовать несколько видов сообщений:
1.Так называемые Алерты - всплывающие окошки с сообщением, а также Алерты с предложением простого действия и диалога
2.Сообщение в нижней статусной строке
3.Сообщениея в верхней статусной строке

В данной статье рассмотрим работу с Алертами.
Их бывает несколько видов.
Первый тип: информационные сообщения:

!!Alert.Error('Это сообщение об ошибке!')









6 февраля 2011 г.

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

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

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

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

4 февраля 2011 г.

Работа с графикой. Часть 2

Методы указания характерных точек или линий элементов:

1. Указание P-точек.
В отличии от обычной команды указания элемента, команда указания точек используется только в виде запроса:
Q IDP @
после выполнения команды система переходит в режим ожидания указания P-Точки

3 февраля 2011 г.

Работа со строками. Часть 1

Некоторые приемы работы со строковыми переменными.

Исходная строковая переменная:
!stringVar = 'Задвижка клиновая с выдвижным шпинделем # 30c41нж/30нж41нж'

Пример 1. Отделение части до определенного символа или выражения

!resultVar = !stringVar.Before('#')
В результате в переменную !resultVar запишется значение 'Задвижка клиновая с выдвижным шпинделем ', то есть то, что находится до значения, указанного в качестве параметра метода.
Применяется метод .Before('СТРОКОВОЕ_ЗНАЧЕНИЕ')
NB: пробелы тоже считаются