Расчёты по семантике выделенных объектов |
Диалог предназначен для вычисления значений семантических характеристик выделенных объектов по формулам. Формула представляет собой символьную строку, содержащую числа, математические операции, ссылки на значения семантик объекта, его площадь и периметр и другие свойства.
Допустимые операции:
Пример: #1(0) - взять значение семантики 1, при отсутствии семантики взять значение 0. Для операций: +, -, *, /, MAX, MIN, ABS - количество операндов не более 10. Если в качестве операнда для операций MAX, MIN, ARM, SUM указан код повторяемой семантики, то операция выполняется над всеми значениями этой семантики - выбирается макимальное или минимальное значение, вычисляется среднее значение или сумма всех значений. Примеры формул: 1. Подсчет высоты люка. Предположим, что относительная глубина залегания технологического люка складывается из отметки высоты минимальной глубины прокладки и диаметра трубы. Семантика 213 (Глубина залегания) повторяемая (объект может иметь несколько записей семантик одного кода с разными значениями). Возьмем минимальное значение глубины (при отсутствии такой семантики, возьмем значение в скобках) и вычтем диаметр, вычисленный по семантике 60 (Радиус трубы). Окончательно получим: min(#213(2))-#60(0.5)*2 2. Вычисление примерного объема здания. Площадь S умножить на значение семантики 1 (Относительная высота) (при отсутствии 3): S*#1(3) 3. Подсчет площади полотна дороги. Семантику 46 (Ширину покрытия) умножим на Р – длину объекта: P * #46(4) 4. Приблизительный подсчет запаса древесины. Площадь леса S разделим на площадь, занимаемую одним деревом - семантика 61 (Расстояние между деревьями) в квадрате, и умножим на объем древесины дерева, полученный по семантикам 60 (Толщина) и 1 (Относительная высота): S/(PI*#61(3)*#61(3)/4)*PI*#60(0.5)*#60(0.5)/4*#1(4) 5. Формирование текста подписи в виде фрагмента идентификатора объекта. Например, объект имеет идентификатор вида «25701517290» в семантике 220. Нужно использовать последние 6 цифр для подписывания объекта. С помощью операции Деление по модулю можно выделить последние цифры, которые будут занесены во вспомогательную семантику (например, 221, которая будет отображаться в составе подписи или векторного знака из строки «#221»): #220%1000000
Список формул для вычисления запрашивается из ini- файла и классификатора. Пользователь может создавать свои формулы. Список допустимых операций предназначен для добавления операций в формулу. Операция вставляется в формулу в позицию курсора при двойном нажатии на выбранную строку. Код семантики, используемый в расчетах, вставляется в формулу в позицию курсора при двойном нажатии на выбранную строку в списке числовых семантик объекта (верхний список). В скобках пользователь должен указать значение используемое в вычислениях, при отсутствии в семантике объекта данной характеристики. Набранную формулу пользователь может записать в ini-файл. Если формула синтаксически неверна, ни запись, ни вычисления не проводятся. При этом выдается сообщение «Ошибочное задание формулы» с краткой расшифровкой возможной ошибки. Вычисленное значение, при нажатии кнопки Выполнить, записывается как числовое или символьное значение семантик, выделенных в нижнем списке во все выделенные объекты. Если «Журнал транзакций» включен, изменения в семантики объектов записаны в журнал транзакций. Список объектов, для которых вычисления по каким-то причинам не выполнились, заносится в протокол карты (log) в папке LOG. По окончанию вычислений выдается сообщение о количестве успешно или неуспешно обновленных объектов.
|