Измерение и вычисление геометрических характеристик

Материал из K3-Macro
(перенаправлено с «Вычисление длины кривой»)
Макро | Переменные и выражения | Вызов из ZIP | Типовые параметры | Создание геом. объектов | Буфер обмена | Сценарии | Параметрические библиотеки | Геометрические характеристики | Атрибуты | Структурные объекты | Текстовые файлы | Системные параметры | Работа с файлами | Редактирование объектов | Удаление объектов | Размеры | Штриховка | Объект «Текст» | Камера | Работа с видом | Наборы параметров | Запрос информации у пользователя | Фильтры | Слои | Графы | Универсальные плоские объекты | Функции работы с системой | Функции работы с объектами сцены | Работа с динамически подключаемыми библиотеками | Функции работы с массивами | Работа со строками | Математические функции | Работа с файлами DBF dBASE IV | Унифицированная работа с базами данных | Вычисление выражений | Присвоение имени объекту | Откатка и восстановление команд | Изменение режима трассировки макропрограмм | Вызов внешних приложений и задач | Проверка условия | Проверка типа переменной | Установкв статуса вывода сообщений | Выдача системного сообщения | Выбор объектов | Версия системы | Информация о системе | Проверка принадлежности к списку | Помещение строки в буфер команд | Получение метапути | Установка курсора ожидания | Мебельные команды и функции для макропрограммирования‎

Команды данного раздела вычисляют различные геометрические характеристики объектов.

Определение координат точки[править | править код]

Информация об измеренной точке

coordinate <Point> [info] done

Команда coordinate определяет координаты точки <Point> и выводит их в окно ввода команд. Необязательный ключ info позволяет отобразить параметры точки в диалоговом окне (см. рисунок).

Чтобы сохранить координаты в массиве, нужно перед ключевым словом ввести имя массива из трех и более элементов. Массив должен быть предварительно описан.

Пример:

defarr c[3];
#c coordinate 10,20,40 done;
=c[1];
10
=c[2];
20
=c[3];
30

Определение расстояния[править | править код]

Информация об измеренном расстоянии

distance point <Point1> | object <Object1> point <Point2> object <Object2> [info] [mark] done

Команда distance измеряет расстояние между точкой (point) <Point1> или объектом (object) <Object1> и другой точкой <Point2> или объектом <Object2>. Ключ info отображает данные о расстоянии в диалоговом окне (см. рисунок). Ключ mark создает две точки на концах отрезка, соединяющего точки или объекты, между которыми измерено расстояние.

Pluso.png Ключи point и object взаимоисключающие. По умолчанию измеряется расстояние между точками.

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

Пример:

#par distance 0,0,0 100,0,0 done;
=par
100

Вычисление длины кривой[править | править код]

clength <Object> done

Команда clength вычисляет длину кривой <Object>.

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

Определение угла[править | править код]

Информация об измеренном угле

Команда angle имеет несколько режимов работы, которые представлены ниже.

angle [acuteangle | normal <Point0>] <Point1> <Point2> <Point3> [info] done

Команда измеряет угол, определяемый точками <Point1>, <Point2> и <Point3>. Точка <Point1> является вершиной измеряемого угла, а точки <Point2> и <Point3> определяют его стороны. Стоит отметить, что измеряется угол, направленный против часовой стрелки между лучами из точки <Point1> в точки <Point2> и <Point3>.Этот угол может быть как больше, так и меньше 180 градусов. Если задан необязательный ключ acuteangle, то измеряется всегда угол меньше 180 градусов.

Если задан ключ normal, то угол измеряется не между точками, а между проекциями точек на плоскость, нормаль к которой задается вектором <Point0>.

Ключ info отображает данные об угле в диалоговом окне (см. рисунок).


angle 2segment <Object1> <Object2> [info] done

Команда определяет минимальный угол между прямыми, определяемыми отрезками <Object1> и <Object2>. Указанные прямые должны пересекаться.


angle 2plane [point <Point1>]<Object1>, ... [point <Point>] <Object2>, … [info] done

Команда определяет угол между двумя плоскостями. Плоскости могут задаваться либо одним объектом (дуга или окружность), либо двумя отрезками, лежащими в одной плоскости, либо отрезком и точкой, либо тремя точками.

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

Определение угла вектора[править | править код]

Информация об углах вектора

vangle axis | plane | xy | yz | zx <Object> [info] done

Команда vangle измеряет углы вектора (отрезка) <Object> с координатными осями (axis), либо с координатными плоскостями (plane), либо углы проекции вектора на соответствующую координатную плоскость с координатными осями (xy, yz, zx). Вместо объекта <Object> допускается указание координат ловушки (<^x,y,z>), в которую должен попасть выбранный объект. Принципиальное значение имеет тот конец отрезка, который оказался ближе к ловушке, поскольку он определяет направление вектора.

Ключ info отображает данные об угле в диалоговом окне (см. рисунок).

Чтобы сохранить координаты в массиве, нужно перед ключевым словом ввести имя массива из двенадцати элементов. Интерпретация информации в массиве представлена на рисунке. Массив должен быть предварительно описан.

Pluso.png Поскольку данная команда определяет направление вектора, то в макропрограммах обязательно использование координат ловушки. При этом следует помнить, что никакой другой объект в ловушку попасть не должен.

Определение масс-инерционных характеристик[править | править код]

Масс-инерционные характеристики твердого тела

mix [density <Dens>] [nodc] [Wholly|Partly|Tree|AllScene] <Objects> done

Команда mix определяет масс-инерционные характеристики объектов <Objects> типа «Тело». Результат работы команды представлен на рисунке.

Ключ density позволяет задать плотность тел <Dens>. Данный ключ используется, если у тел плотность не задана явно атрибутом $Density.

Ключ nodc запрещает вывод информации в диалоговое окно.

Начиная с версии от 19 декабря 2019 года доступны ключи Wholly, Partly, Tree и AllScene. Они позволяют выбрать объекты на любом уровне — соответственно, Целиком, Частично, По дереву и Дерево всей сцены. По умолчанию в макропрограммировании активизируется ключ Wholly. В более ранних версиях (до 19.12.2019) эти ключи недоступны, команда работает только в режиме Целиком.

Чтобы сохранить координаты в массиве, нужно перед ключевым словом ввести имя массива из девятнадцати элементов. Интерпретация информации в массиве представлена в таблице. Массив должен быть предварительно описан.

Масс-инерционные характеристики объекта
Номер элемента
Назначение
1

Площадь поверхности (S)

2

Объем тела (V)

3

Масса тела (m)

4

Вес тела (P)

5

Статический момент (Sxy)

6

Статический момент (Syz)

7

Статический момент (Szx)

8

Осевой момент инерции (Jox)

9

Осевой момент инерции (Joy)

10

Осевой момент инерции (Joz)

11

Плоскостной момент инерции (Jxy)

12

Плоскостной момент инерции (Jyz)

13

Плоскостной момент инерции (Jzx)

14

Центробежный момент инерции (Mxy)

15

Центробежный момент инерции (Myz)

16

Центробежный момент инерции (Mzx)

17

Координата X центра масс

18

Координата Y центра масс

19

Координата Z центра масс

Определение площади поверхности[править | править код]

square [partly|tree|wholly] <Objects>

Команда square вычисляет площадь поверхности объектов <Objects>. Если в качестве объектов <Objects> указана группа, то вычисляется площадь поверхности всех входящих в нее тел и поверхностей (Brep-ов).

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

Определение массы и центра масс[править | править код]

amass <Objects> yes | no

Команда amass определяет массу и координаты центра масс объектов <Objects> типа «Тело». Ключ yes указывает, что нужно создать точку в центре масс объектов <Objects>. Ключ no указывает, что точку создавать не нужно.

Чтобы сохранить массу и координаты центра масс в массиве, нужно перед ключевым словом ввести имя массива из четырех элементов. Интерпретация информации в массиве представлена в таблице. Массив должен быть предварительно описан.

Масса и центр масс объектов
Номер элемента
Назначение
1

Масса объектов

2

Координата X центра масс

3

Координата Y центра масс

4

Координата Z центра масс

Определение габаритов объекта[править | править код]

ObjGab, ObjGab1, ObjGab2, ObjGab3


VOID ObjGab(OBJECT <Obj>, VARNAME <X>, VARNAME <Y>, VARNAME <Z>)

VOID ObjGab(OBJECT <Obj>, VARNAME ARRAY <G[3]>)

Функция ObjGab присваивает переменным <X>, <Y>, <Z> или массиву <G> значения соответствующих габаритов объекта <Obj>.


DOUBLE ObjGab1(OBJECT <Obj>, INT <NCrd>)

Функция ObjGab1 возвращает габарит объекта <Obj> по координате с соответствующим номером <NCrd> (1 – X, 2 – Y, 3 – Z).


LOGICAL ObjGab2(OBJECT <Obj>, VARNAME ARRAY <G[6]>[, LOGICAL <IsLCS>])

Функция ObjGab2 заполняет массив <G> габаритными координатами объекта в <Obj> ГСК и возвращает 1 в случае, если объект имеет видимые габариты и 0 в случае, если объект погашен, это пустая группа и пр.

Если указан дополнительный параметр <IsLCS> и он не равен 0, то габариты объекта <Obj> вычисляются в локальной систем координат (ЛСК) этого объекта.


LOGICAL ObjGab3(OBJECT <Obj>, VARNAME ARRAY <G[6]>)

Функция ObjGab3 заполняет массив <G> габаритными координатами объекта <Obj> в ПСК и возвращает 1 в случае, если объект имеет видимые габариты и 0 в случае, если объект погашен, это пустая группа и пр.

Под габаритом понимается протяженность объекта по соответствующей координате. Например, отрезок из точки (10,20,30), в точку (100,100,100) будет иметь габариты 90,80,70.

Под габаритными координатами объекта в указанной системе координат понимаются три минимальные (X, Y, Z) и три максимальных значения координат объекта. Например, отрезок из точки (10,200,30), в точку (100,10,100) будет иметь габаритные координаты 10, 10, 30, 100, 200, 100 в ГСК.

Пример:

#l1 Line 10, 20, 30, 100, 100, 100;
=ObjGab1(l1,2);
80
ObjGab(l1,xl,yl,zl);
=xl
90
Defarrays g[3];
ObjGab(l1,g);
=g[3]
70
Defarrays gk[6];
ObjGab2(l1,gk);
=gk[6]
100
I.png При нахождении габаритных координат объекта предпочтение следует отдавать функции ObjGab3
I.png Все функции выдают информацию только об непогашенных объектах или о непогашенных частях объектов, если объекты — группы и имеют внутри погашенные составляющие.
I.png Если объект не погашен, но находится на погашенном слое, то функции ObjGab, ObjGab1, ObjGab2 считают этот объект погашенным и возвращают 0. Функция ObjGab3 в случае объекта на погашенном слое считает его видимым и выдает реальные габаритные координаты объекта.

Макро | Переменные и выражения | Вызов из ZIP | Типовые параметры | Создание геом. объектов | Буфер обмена | Сценарии | Параметрические библиотеки | Геометрические характеристики | Атрибуты | Структурные объекты | Текстовые файлы | Системные параметры | Работа с файлами | Редактирование объектов | Удаление объектов | Размеры | Штриховка | Объект «Текст» | Камера | Работа с видом | Наборы параметров | Запрос информации у пользователя | Фильтры | Слои | Графы | Универсальные плоские объекты | Функции работы с системой | Функции работы с объектами сцены | Работа с динамически подключаемыми библиотеками | Функции работы с массивами | Работа со строками | Математические функции | Работа с файлами DBF dBASE IV | Унифицированная работа с базами данных | Вычисление выражений | Присвоение имени объекту | Откатка и восстановление команд | Изменение режима трассировки макропрограмм | Вызов внешних приложений и задач | Проверка условия | Проверка типа переменной | Установкв статуса вывода сообщений | Выдача системного сообщения | Выбор объектов | Версия системы | Информация о системе | Проверка принадлежности к списку | Помещение строки в буфер команд | Получение метапути | Установка курсора ожидания | Мебельные команды и функции для макропрограммирования‎