Расчёты по семантике выделенных объектов

Печать Предыдущая страница Стартовая страница Следующая страница

ic_8391 Диалог предназначен для вычисления значений семантических характеристик выделенных объектов по формулам.

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

 

Допустимые операции:

 

+            

- сложить;

-    

- вычесть;

*  

- умножить;

/

- разделить;

ABS(...)

- абсолютное значение;

ARM(... ,..., )

- среднее арифметическое, разделитель - «,» (запятая);

LOG(...)

- натуральный логарифм;

LOG10(...)

- десятичный логарифм;

MAX(... ,..., )

- максимальное значение, разделитель - «,» (запятая);

MIN(... ,..., )

- минимальное значение, разделитель - «,» (запятая);

SIN(…)

- sin угла в градусах;

COS (…)

- cos угла в градусах;

TG (…)

- tg угла в градусах;

CTG(…)

- ctg угла в градусах;

SQRT2(...)

- корень кубический;

SQRT3(...)

- корень кубический,

POW2(...)

- возведение в квадрат;

POW3(...)

- возведение в куб;

D

- дирекционный угол от первой точки;

P

- периметр объекта;

S

- площадь объекта;

X1

- координата X первой точки в метрах;

Y1

- координата Y первой точки в метрах;

B1

- широта первой точки в градусах;

L1

- долгота первой точки в градусах;

- координата X центра объекта в метрах;

- координата Y центра объекта в метрах;

BC

- широта центра объекта в градусах;

LC

- долгота центра объекта в градусах;

ID

- уникальный номер объекта;

PI

- число пи;

#

- указывает, что дальше идет код семантики, в которой лежит значение, за ним в скобках может быть значение по умолчанию. Допустимо использовать цифры от 0 до 9, с разделителем «.» (точка) и скобки «( )».

 

 

Пример:  

#1(0) - взять значение семантики 1, при отсутствии семантики взять значение 0.

Для операций:   +, -, *, /, max, min, abs - количество операндов не более 10.

Примеры формул:

1.  Подсчет высоты люка. Высота люка складывается из отметки высоты самой глубокой прокладки и радиуса трубы. Семантика 213 (Высота прокладки) повторяемая. Возьмем минимальное значение (при отсутствии такой семантики, возьмем значение в скобках). По семантике 60(Диаметр трубы) – вычислим радиус. Окончательно получим.

                         min(#213(0))+#60(2)/2

2. Вычисление примерного объема здания. Площадь S умножить на значение   семантики 1(Относительная высота) (при отсутствии 3).

                           S*#1(3)

3.  Подсчет площади полотна дороги. Семантику 46(Ширину покрытия) умножим на Р – периметр.

                          P * #46(4)

4.  Приблизительный подсчет запаса древесины. Площадь леса P разделим на  площадь, занимаемую одним деревом семантика 61 (Расстояние между деревьями) в квадрате и умножим на объем древесины дерева, полученный по семантикам 60(Толщина)   и 1(Относительная высота).

                        P/(#61(1)* #61(1) ) * PI * #60(0.5) * #60(0.5)/4 * #1(4)  

P - периметр. Нужно указать S - площадь.

Список формул для вычисления запрашивается из ini- файла и классификатора. Пользователь может создавать свои формулы.

Список допустимых операций предназначен для добавления операций в формулу.

Операция вставляется в формулу в позицию курсора при двойном нажатии на выбранную строку. Код семантики, используемый в расчетах, вставляется в формулу в позицию курсора при двойном нажатии на выбранную строку в списке числовых семантик объекта (верхний список).

В скобках пользователь должен указать значение используемое в вычислениях, при отсутствии в семантике объекта данной  характеристики.        

Набранную формулу пользователь может записать в ini-файл. Если формула синтаксически неверна, ни запись, ни вычисления не проводятся. При этом выдается сообщение  "Ошибочное задание формулы" с краткой расшифровкой возможной ошибки.  

Вычисленное значение, при нажатии кнопки Выполнить, записывается как числовое или символьное значение семантик, выделенных в нижнем списке во все выделенные объекты.

Если "Журнал транзакций" включен, изменения в семантики объектов записаны в журнал транзакций.

Список объектов, для которых вычисления по каким-то причинам не выполнились,  заносится в LOG.

По окончанию вычислений выдается сообщение о количестве успешно или неуспешно обновленных объектов.