1. Цель работы и актуальность темы 5
1.1. Цель и задачи бакалаврской работы 5
1.2. Причины возникновения проблемы и ее актуальность 5
1.3. Исследование текущего состояния изучаемой проблемы 7
1.3.1. Параметрическое моделирование 7
1.3.2. Обзор существующих систем графического проектирования 9
1.3.3. Решатель геометрических ограничений 14
1.4. Выбор инструментов разработки 16
1.4.1. Direct3D 16
1.4.2. OpenGL 17
1.4.3. Qt и Visual C++ 17
2. Проектирование системы 19
2.1. Геометрические объекты 19
2.2. Функциональные возможности редактора 20
2.3. Связи между объектами 20
2.4. Параметрические возможности системы 21
3. Реализация прототипа графического редактора 23
3.1. Главное окно. Начало работы 24
3.2. Добавление объекта 24
3.3. Поворот камеры и изменение масштаба 24
3.4. Изменение размера и местоположения объекта 25
3.5. Копирование объекта 26
3.6. Поворот простого объекта 26
3.7. Запрет и разрешение изменения размера объекта 28
3.8. Задание размеров простого объекта 28
3.9. Сложные объекты 28
3.9.1. Соединение объектов 28
3.9.2. Отсоединение частей сложного объекта 30
3.10. Группы объектов 30
3.10.1. Объединение объектов в группу 31
3.10.2. Работа с группой объектов 31
3.10.3. Задание размеров группы 32
3.10.4. Удаление объекта из группы 32
3.11. Объекты на линии 33
3.11.1. Закрепление объектов на линии 33
3.11.2. Отмена закрепление объекта на линии 34
3.12. Удаление объекта 34
3.13. Сохранение объекта в отдельный файл 34
3.14. Загрузка объекта из файла 34
3.15. Выход из программы 35
Заключение 36
Список литературы 37
1.1. Цель и задачи бакалаврской работы
Целью данной бакалаврской работы является разработка прототипа трехмерного параметрического редактора для системы инженерного моделирования ELCUT [3]. Для достижения этой цели были поставлены следующие задачи:
• изучение существующих параметрических редакторов и отбор возможностей, которые будут реализованы в прототипе редактора;
• выбор средств для реализации прототипа;
• проектирование прототипа системы;
• реализация прототипа;
• тестирование системы и анализ удобства ее использования.
1.2. Причины возникновения проблемы и ее актуальность
Система инженерного моделирования ELCUT - это программный продукт, созданный для инженерного моделирования механических, тепловых и других физических задач. Этот продукт широко используется в науке, промышленности и образовании для изучения различных физических процессов и разработки приборов и устройств.
Пример работы в системе ELCUT представлен на рис. 1.
ELCUT является мощным инструментом двухмерного моделирования, тогда как возможности трехмерного моделирования ограничены: существует возможность загрузки моделей из других систем моделирования, но редактора на данный момент нет.
В связи с этим была поставлена задача разработки прототипа трехмерного редактора с простыми возможностями параметризации.
Рис. 1: Пример работы в системе ELCUT
Целью разработки прототипа является:
• исследование удобства различных функциональных возможностей редактора;
• отработка возможностей параметрического проектирования моделей.
Рассмотрим кратко требования к параметризации в системе ELCUT и актуальность задачи поддержки параметризации. При параметрическом проектировании [12] модель строится с использованием параметров частей модели и соотношений между этими параметрами. Параметризация позволяет быстро изменять модель, получая таким образом различные версии построения и позволяя избежать возможных ошибок.
В прототипе геометрического редактора системы ELCUT должны присутствовать наиболее используемые и простые функциональные возможности параметрического проектирования, так как данная система инженерного проектирования ориентирована на простоту использования. Более подробно о параметрическом проектировании будет сказано в п. 1.3.1.
1.3. Исследование текущего состояния изучаемой проблемы
1.3.1. Параметрическое моделирование
Параметрическое моделирование [12] - это одна из разновидностей двухмерного или трехмерного инженерного моделирования. Рассмотрим кратко его основные принципы и понятия.
Его идея состоит в том, что сложный геометрический объект строится с помощью простых элементов и параметров, которые задают их форму и соотношения между ними. Параметрами могут быть, например:
• координаты точек;
• соотношения между какими-либо величинами;
• радиусы окружностей;
• величины углов.
Таким образом, создается математическая модель объекта, которую можно модифицировать путем изменения параметров, связывающих части объекта. Под модификацией понимается, например, взаимное перемещение деталей объекта, изменение размеров и прочее.
Рассмотрим преимущества параметрического моделирования. Основным преимуществом является простота модификации объектов. Другое важное преимущество параметрического моделирования состоит в том, что при построении объекта не нужно точно определять координаты всех его составных частей, достаточно лишь указать геометрические отношения между ними. В этом случае результирующие координаты определит решатель геометрических ограничений, который будет рассмотрен в п. 1.3.3.
Существует несколько типов параметризации [12]. Рассмотрим их.
1) Табличная параметризация
Этот тип параметризации подразумевает наличие таблицы параметров типовых деталей. Для создания нового объекта нужно выбрать его размеры в таблице. При данном типе параметризации нельзя задавать произвольные параметры объекта, что весьма ограничивает возможности системы.
Тем не менее, табличная параметризация широко применяется во всех параметрических системах автоматизированного проектирования, так как благодаря ей существенно упрощается создание библиотек стандартных и типовых деталей, а также их применение при проектировании.
2) Иерархическая параметризация
Другой термин, который применяют, говоря о данном типе параметризации - параметризация на основе истории построений. Суть иерархической параметризации заключается в наличии “дерева построений”, в котором в ходе работы отображается вся последовательность построения объекта. Также в нем перечислены все существующие в объекте вспомогательные эскизы и все операции в порядке их выполнения. Помимо этого, система запоминает иерархию между элементами объекта.
Иерархическая параметризация применяется во всех системах автоматизированного проектирования, использующих твердотельное параметрическое моделирование. Обычно этот тип параметризации бывает реализован совместно с вариационной, геометрической или обоими этими типами параметризации, о которых будет сказано далее.
3) Вариационная параметризация
Данный тип еще называют размерной параметризацией. При работе с системой, в которой присутствует данный тип параметризации, на первом этапе создается эскиз объекта, который необходимо построить. Далее уточняются отдельные размеры эскиза, которые можно обозначить в виде переменных и с помощью формул задать зависимости от них других размеров. Затем с помощью какой-либо операции, например, выдавливания либо перемещения плоской фигуры с сохранением ее следа, производится построение трехмерного объекта. После этого, если необходимо, объект добавляется в сборку путем указания взаимного положения ее компонентов (например, какие-то из их ребер могут быть параллельны).
Размерная параметризация дает возможность легко изменять форму объекта путем изменения формы эскиза, что очень удобно в работе.
4) Геометрическая параметризация
При данном типе моделирования геометрия каждого параметрического объекта пересчитывается при изменении положения его родительских объектов.
Параметрическая модель в данном случае состоит из элементов построения и элементов изображения. Элементы построения, к которым относятся линии изображения, а также элементы оформления, такие как размеры, надписи и прочее, задают параметрические связи в объекте. Они могут зависеть от других элементов построения и содержать параметры (например, угол наклона прямой). При изменении одного из элементов все остальные перестраиваются согласно заданным между ними зависимостям.
На первом этапе создания модели конструктор задает геометрию профиля, проставляет размеры и зависимости с помощью линий построения. После этого линии построения обводятся линиями изображения, образующими профиль, с которым впоследствии можно работать в трехмерном пространстве. Далее с объектом работают в целом аналогично работе с ним при вариационном типе параметризации.
Преимущество геометрической параметризации состоит в возможности более гибкого редактирования модели. В случае необходимости изменить модель достаточно провести новую линию построения и перенести на нее линию изображения, не потеряв таким образом связей между элементами модели, что могло бы произойти в случае удаления исходной линии построения.
1.3.2. Обзор существующих систем графического проектирования
Рассмотрим наиболее распространенные системы графического проектирования. Первые известные графические редакторы с возможностью параметрического моделирования появились в конце 80-х годов: фирма Parametric Technology Corporation выпустила программный комплекс Pro/Engineer [6], специализирующийся на твердотельном трехмерном моделировании, а Топ Системы создали свой редактор T-FLEX CAD [8], о котором еще будет сказано ниже.
На сегодняшний день существует множество программных продуктов, позволяющих строить трехмерные модели с использованием параметрического моделирования. Рассмотрим некоторые из них.
1) Компас-3D
Дадим краткий обзор возможностей системы.
Компас-3D [11] - это система трехмерного проектирования, используемая в промышленности. Данный программный комплекс позволяет строить трехмерные модели деталей и сборочных единиц как стандартных, так и уникальных форм. Полученные модели можно импортировать в различные расчетные пакеты или пакеты управляющих программ. Кроме того, в системе есть возможность создания документации на разработанную модель.
Рассмотрим, как в системе можно создавать объемные объекты.
Объемные детали в программе образуются путем перемещения плоской фигуры в пространстве так, что след образует объемный объект.
Сложные трехмерные модели создаются путем соединения отдельных деталей и подмоделей. Каждая новая деталь моделируется на основе существующих с использованием параметрических взаимосвязей. Детали и подмодели могут как создаваться непосредственно в редакторе, так и импортироваться из файла. Присутствует библиотека стандартных объектов, наиболее часто используемых при построении моделей.
Остановимся подробнее на возможностях параметризации.
Взаимное положение деталей в модели задается путем указания связи между ними. В системе присутствуют различные возможности, например:
• параллельное или перпендикулярное расположение ребер и граней;
• совпадение граней;
• расположение объектов под углом друг к другу;
• расположение объектов на заданном расстоянии;
• расположение объектов так, чтобы объекты касались поверхностями.
Пример работы в системе Компас-3D представлен на рис. 2.
Рис. 2: Пример работы в системе Компас-3D
2) T-FLEX
Система T-FLEX [8] разработана в России для параметрического проектирования и различных расчетов на основе построенных моделей, а также создания документации для деталей.
Опишем интересующую нас функциональность данной системы.
Трехмерные детали могут строиться как на основе чертежа на плоскости, так и в редакторе трехмерных моделей. При проектировании система хранит иерархическую структуру модели, а также всю историю ее создания, что позволяет упростить редактирование.
С помощью трехмерных элементов построения возможно создание трехмерных контуров, определение направлений, задание ориентации и прочих особенностей модели. Проектирование осуществляется с помощью рабочих плоскостей и рабочих поверхностей, которые служат для построения вспомогательных объектов - профилей, путей, узлов. Узлы служат точками привязки и помогают задавать векторы и оси. Профили и пути используются для проектирования сложных трехмерных объектов и работы с ними, а также для создания траекторий. С помощью сечений есть возможность получить проекцию детали на плоскость.
В системе T-FLEX телами называются постоянные элементы структуры трехмерной модели, с которыми пользователь имеет возможность работать на протяжении всего процесса проектирования. Тело присутствует в структуре модели, пока существует его трехмерный объект - фигура или поверхность, и хранит в себе такие параметры, как имя, цвет, материал, способ представления, а также полную историю создания трехмерного объекта.
Для построения трехмерных моделей в системе присутствует множество операций, таких как вращение, “выдавливание” с различными опциями, построение поверхности по сечениям.
Рассмотрим возможности параметризации.
При изменении местоположения или размеров базового объекта изменения распространяются на все остальные части модели. Есть возможность задать связь между любыми объектами в системе с помощью параметров. Параметры моделей можно задавать численными, текстовыми значениями либо переменными, которые могут быть связаны математическими или логическими выражениями. Основные возможности изменения чертежа:
• непосредственное изменение его в редакторе;
• задание значений переменных в редакторе переменных;
• считывание значений переменных из внешних источников данных.
На рис. 3 представлен пример разработки детали в T-FLEX.
Рис. 3: Пример работы в системе T-FLEX
Кроме многочисленных возможностей построения моделей, система T-FLEX предлагает возможность целого ряда различных математических вычислений по построенным моделям, что используется на производстве при моделировании всевозможных прототипов деталей.
3) SolidWorks
Система SolidWorks [14] разработана компанией SolidWorks (США) и представляет собой приложение для автоматизированного конструирования, использующее при работе принципы параметрического проектирования. С помощью данной программы можно строить трехмерные модели на основе плоскостных эскизов, а также создавать поверхностные параметрические модели.
Рассмотрим кратко возможности данного программного комплекса.
Создание трехмерной модели начинается с создания эскиза и нанесения на него размеров. Между элементами эскиза автоматически, либо вручную устанавливаются геометрические взаимосвязи (например, параллельность или касание). После установки достаточного количества непротиворечивых взаимосвязей происходит построение трехмерной модели.
Для задания математических отношений между размерами эскиза или элемента детали можно использовать уравнения, что позволяет создавать параметрически заданные детали с возможностью их быстрого изменения и ускоряет проектирование однотипных деталей.
Рис. 4: Пример работы в программе SolidWorks
Объект, состоящий из нескольких деталей, в приложении SolidWorks называется сборка. Внутри сборки детали связаны между собой с помощью параметрических соотношений. При проектировании сборки может как происходить создание отдельных деталей и соединение их зависимостями после этого, так и создание деталей одновременно с созданием сборки. При изменении местоположения и размера сборки параметры всех входящих в нее деталей также меняются в соответствии с заданными соотношениями между ними.
Кроме прочего, в системе имеется возможность формирования технической документации в виде чертежей деталей. Пример работы в программе SolidWorks представлен на рис. 4.
1.3.3. Решатель геометрических ограничений
Геометрическое ядро, или решатель геометрических ограничений [15] - это набор библиотек с программным интерфейсом, часто используемый в системах автоматизированного проектирования. Данный комплекс решает задачу определения расположения объекта и связанных с ним деталей на основе наложенных геометрических ограничений. Геометрическое ядро значительно упрощает разработку систем автоматического проектирования.
При разработке геометрических редакторов многие компании использовали готовые геометрические ядра, встраивая их в свои продукты и используя реализованную в них функциональность. В настоящий момент на рынке в этой области доминируют компании ACIS [1] и Parasolid [5]. Геометрическое ядро последней, в частности, встроено в программный комплекс T-FLEX российской компании Top Systems. Рассмотрим некоторые распространенные ядра. Мы рассматривали в основном отечественные решатели геометрических ограничений, поскольку использование зарубежных геометрических ядер требует значительных материальных затрат.
1) Ядро G3D
Программный комплекс КОМПАС-3D был разработан на основе геометрического ядра C3D [10], разработанного компанией АСКОН. В настоящее время С3D является конкурентоспособным программным модулем и может использоваться при разработке систем, в которых требуется обработка трехмерных и двумерных моделей. Главная особенность ядра АСКОН заключается в том, что в нем объединены все компоненты, необходимые для разработки прикладных решений: модуль геометрического моделирования, модуль параметризации и модуль трансляции данных. Таким образом, с помощью ядра C3D можно:
• создавать твердотельные и гибридные модели;
• решать параметрические двумерные и трехмерные ограничения;
• считывать и записывать геометрические модели в основные используемые в этой сфере форматы данных.
2) Russian Geometric Kernel
В 2013 году российские компании Топ Системы и LEDAS под руководством МГТУ «СТАНКИН» выпустили собственный решатель геометрических ограничений [13]. Разработка данного продукта была произведена в рамках программы по развитию национальной технической базы и в связи с необходимостью создания конкурентоспособных на мировом рынке изделий. Архитектура ядра позволяет использовать многоядерные платформы, а также обеспечивает возможность прикладной разработки на основе данного ядра для различных платформ и систем.
При проектировании редактора ELCUT рассматривался вопрос об использовании геометрического ядра. Однако покупка лицензии для использования решателя геометрических ограничений требует ощутимых материальных затрат. Некоторые компании, занимающиеся разработкой систем с возможностью графического проектирования, используют собственные программные ядра, но в компании ELCUT оно на данный момент отсутствует.
1.4. Выбор инструментов разработки
Для реализации прототипа редактора необходимо было выбрать API для работы с трехмерной графикой. Наиболее часто используемые для данной цели продукты - Direct3D [2] и OpenGL [4]. Рассмотрим немного подробнее каждый из них.
1.4.1. Direct3D
Direct3D [2] - часть программного продукта DirectX, позволяющая работать с трехмерной графикой. Direct3D был создан компанией Microsoft специально для работы на операционной системе Windows, а позже стал использоваться на некоторых других продуктах фирмы. При разработке данного API использовались различные технологии, специфичные именно для операционной системы Windows.
В приложении, созданном на Direct3D, используются указатели на интерфейсы объектов. Создание и работа с объектом осуществляется через вызов методов его интерфейса.
Direct3D в настоящее время активно совершенствуется и развивается, периодически выпускаются новые версии данного продукта.
1.4.2. OpenGL
OpenGL [4] - открытый стандарт, разработку которого ведет некоммерческая организация Khronos Group при участии IT-сообщества. Существует множество библиотек, реализующих данный стандарт для различных платформ и являющихся основным API для работы с графикой на Linux и Mac OS.
OpenGL в процессе работы представляет собой конечный автомат. Вызов функций изменяет внутреннее состояние программы. Чтобы получить доступ к конкретному объекту, нужно вызовом функции выбрать его в качестве текущего, а потом уже влиять на него также вызовом функций.
В OpenGL значительную часть функционала представляют расширения к основной спецификации. Как только расширение появляется, приложения имеют возможность использовать его, не дожидаясь выхода новой версии спецификации. После интегрирования расширений в стандарт новые функции продолжают быть доступными как расширения, что дает возможность не модифицировать программы, которые их используют.
Сейчас OpenGL также развивается и совершенствуется, что позволяет ему в полной мере отвечать требованиям, предъявляемым к API для работы с графикой.
Нужно добавить, что оба рассмотренных программных продукта специализируются на работе с графикой, а функции создания окон и работы с вводом с клавиатуры или мыши в них отсутствуют.
Исходя из рассмотренных выше преимуществ и недостатков продуктов, для работы в данном проекте был выбран OpenGL, в частности, как открытый и кроссплатформенный стандарт.
1.4.3. Qt и Visual C++
Для работы с OpenGL в свободном доступе имеются библиотеки, которые позволяют вести разработку в различных средах. В частности, в начале работы над проектом разработка велась в интегрированной среде Visual C++ [9].
Однако в OpenGL, как было сказано выше, отсутствуют средства для работы с окнами, поэтому было принято решение вести разработку в среде Qt [7]. Данный инструментарий содержит дизайнер оконных интерфейсов. Кроме того, Qt имеет поддержку OpenGL, то есть уже содержит все необходимые библиотеки и облегчает их подключение к проекту, а также содержит удобный интерфейс для интеграции окон OpenGL и окон, созданных средствами Qt.
В рамках данной работы были получены следующие результаты:
1) Реализован прототип трехмерного редактора для программного комплекса ELCUT с возможностями добавлять, изменять, удалять трехмерные объекты.
2) Разработан формат хранения объектов, спроектированных в прототипе, реализовано сохранение проектов и отдельных объектов в файл и загрузка из файла.
3) Выбран и реализован набор функциональности, который позволяет отработать основные элементы пользовательского взаимодействия.
4) Проанализирован интерфейс программы. Сделан вывод, что интерфейс удобен, но в случае расширения функциональности требует дальнейшей доработки.
5) Проведен анализ реализованной функциональности, в результате которого были выделены возможности приложения, которые может быть полезно реализовать в следующей версии програмы. Среди них такие возможности, как:
• задание явных параметров объектов;
• поддержка более сложных связей и отношений между объектами (например, касание объектов).