- db_diagram.svg - схема БД
- db_create_postgre.sql - скрипт для создания таблиц и начального заполнения таблиц в PostgreSQL
- db_populate_postgre.sql - скрипт для заполнения таблиц в PostgreSQL
- db_drop_postgre.sql - скрипт для удаления таблиц в PostgreSQL
Векторное каркасное трехмерное моделирование с ограничениями
Пользователи работают с трехмерными каркасными моделями.
Каждый пользователь может создавать модели, редактировать их, а также определять права доступа других пользователей к созданным им моделям на просмотр и редактирование
Каждая каркасная модель состоит из совокупности плоских чертежей, т.е. для чертежа обязательно задается некоторая плоскость.
Каждая плоскость определяется точкой и упорядоченнной парой ортонормированных векторов в трехмерном пространстве, задающих на данной плоскости декартову прямоугольную систему координат. При этом для идентификации плоскости могут быть использовано либо начало координат, либо точка, входящая в состав какого либо чертежа из состава модели.
На плоскости могут располагаться несколько чертежей.
Каждый чертеж содержит примитивы - точки, отрезки, окружности и др. Каждый нетривиальный (т.е. отличный от точки) примитив или объект определяется упорядоченным набором точек и, возможно, дополнительными параметрами (например, радиус для окружности). Для каждого из типов объектов известно количество степеней свободы - как общее количество параметров, с помощью которых можно однозначно задать данный примитив. Точки, входящие в состав чертежа, определяются своими двумерными декартовыми координатами в системе координат плоскости чертежа. Поддерживаются следующие типы примитивов:
- Точка
- Отрезок
- Окружность
- Дуга окружности
Относительно примитивов, составляющих чертеж, могут быть рассмотрены ограничения (например, отрезок доложен быть вертикальным, окружности могут быть концентрическими и т.д.).
Поддерживаются следующие базовые типы ограничений:
- Неподвижность
- Равенство
- Вертикальность
- Горизонтальность
- Параллельность
- Перпендикулярность
- Касание
- Принадлежность
- Середина
- Коллинеарность
- Симметричность
- Концентричность
- Равноудаленность от точки
Кроме простых ограничений, рассматриваются параметрические ограничения, т.е. такие, которые определяются с помощью дополнительного параметра (например, отрезок должен иметь указанную длину):
- Размер
- Расстояние
- Угол
-
Сущность Пользователь (user) идентифицируется целым числом и содержит информацию об имени пользователя.
-
Сущность Модель (model) идентифицируется целым числом и содержит информацию о пользователе, создавшем модель, пользователе, последним изменившем модель и времени последнего обновления.
-
Сущность Список доступа (access_list) определяет доступность для пользователя той или иной модели, учитывая возможность как чтения, так и модификации.
-
Сущность Плоскость (plane) в составе модели идентифицируется целым числом и содержит информацию о точке и базисе, определяющем данную плоскость.
-
Сущность Чертеж (sketch) в составе модели идентифицируется целым числом и содержит информацию о плоскости чертежа.
-
Сущность Параметр (param) в составе модели идентифицируется целым числом и содержит информацию о величине параметра, характеризующего (возможно частично) некоторый примитив.
-
Сущность Примитив (entity) в составе модели идентифицируется целым числом. Примитивами являются как объекты, так и ограничения.
-
Сущность Объект (object) в составе модели идентифицируется целым числом и содержит информацию о типе объекта. Для точек, с помощью которых задаются более сложные объекты, должен быть указан родительский объект. Точки могут быть и вполне обособленными.
-
Сущность Ограничение (constraint) в составе модели идентифицируется целым числом и содержит информацию о примитивах, связываемых данным ограничением, а также, в зависимости от типа ограничения, о значении параметра, его характеризующего.
При задании плоскостей, проходящих через начало координат внешний ключ на точку будет неопределенным. Каждый примитив должен располагаться на каком либо одном чертеже. Точки, определяющие объект, должны располагаться на том же чертеже, что и сам объект. Объекты могут быть связаны произвольным количеством ограничений. При этом ограничения могут связывать объекты, расположенные на чертежах, чья базовая плоскость совпадает. Каждое ограничение обязательно связано с каким либо объектом. Параметры ограничений могут быть только положительными вещественными значениями.