...

четверг, 16 марта 2017 г.

[Из песочницы] Параметрическое моделирование в САПР SolveSpace

Многие из нас в школе или университете посещали уроки черчения, но не многим из нас это нравилось. Часами возиться с линейкой, циркулем и плохо заточенным карандашом, пытаясь ровно и без помарок выводить размерные линии, бесконечные штриховки и странные формы, мало кому могло показаться интересным. Тем более, что к тому времени уже существовали компьютерные программы, способные автоматизировать это скучное, бессмысленное и беспощадное занятие. А настоящий прорыв в области проектирования деталей и подготовки конструкторской документации произошел в 1989 вместе с дебютом параметрического моделирования в Системе Автоматизированного Проектирования (САПР) Pro/Engineer.


Это — вводная статья к циклу статей "Параметрическое моделирование". Из этого цикла вы узнаете о внутреннем устройстве настоящего решателя геометрических ограничений, проблемах и их решениях на примере open-source САПР "SolveSpace". Кому не чужд мир трехмерного моделирования, добро пожаловать под кат!


image alt text


Идея


В основе параметрического моделирования лежит простая идея: выразить сложные геометрические формы изделий с помощью простых примитивов (entities), форма которых задается с помощью параметров (parameters) и отношений между ними. Параметрами могут быть координаты точек, величины углов, длин, радиусов окружностей или эллипсов. Отношения между параметрами называют ограничениями (constraints). Для инженера-конструктора такие ограничения выглядят как размеры или как геометрические отношения инцидентности (совпадения), параллельности, перпендикулярности или касательности простейших геометрических форм: точек, линий, окружностей, эллипсов и т. д. При таком подходе процесс построения чертежа сводится к формированию грубого наброска контура объектов и наложению таких ограничений, которые однозначно определяют значения всех параметров чертежа. Преимуществом такого подхода является то, что инженеру не требуется точно определять координаты всех объектов, достаточно указать лишь геометрические взаимоотношения между объектами, а всю работу по вычислению результирующих координат объектов выполнит решатель геометрических ограничений (geometric constraint solver) — основа параметрического подхода к моделированию. Именно наличие такого решателя отличает параметрические САПР от остальных.


SolveSpace


Подробности реализации системы параметрического моделирования будем рассматривать на основе open-source проекта SolveSpace, созданного Джонатаном Вэстью (Jonathan Westhues) и поддерживаемого в настоящее время сообществом open-source — разработчиков, в числе которых состоит и автор данной статьи, то есть я.


Среди всех проектов с открытым исходным кодом, SolveSpace обладает самой адекватной реализацией решателя геометрических ограничений. Решатель SolveSpace имеет си-подобный интерфейс и доступен для лицензирования и использования в коммерческих проектах. Основным преимуществом решателя, созданного Джонатаном, является символьный подход к записи исходных уравнений, что позволяет очень быстро и просто создавать новые ограничения, а также предоставляет возможность вычислять выражения в полях ввода значений. Еще одним преимуществом решателя SolveSpace является возможность единообразно решать как двумерные, так и трехмерные ограничения.


В качестве контр-примера можно привести встроенный решатель FreeCAD, который построен на других принципах, что вызывает ряд проблем. Одной из проблем является сложность добавления новых ограничений ввиду того, что приходится вручную записывать все частные производные уравнений. Но основным минусом решателя FreeCAD является его ограниченность областью проектирования двумерных чертежей, что негативным образом сказалось на функциональности FreeCAD — в нем до сих пор нет нормальной возможности делать трехмерные сборки деталей.


Чертеж (Sketch)


Несмотря на то, что SolveSpace является параметрической системой трехмерного моделирования, объемные тела создаются на основе набора двумерных контуров. Контуры в SolveSpace могут состоять из отрезков прямых, окружностей и их дуг, а также кубических сплайнов. Иерархически вложенные контуры становятся "дырками", а контуры, вложенные в “дырки” — снова становятся частью тел.


image alt text
Пример чертежа


В SolveSpace возможно создание тел выдавливания (extrusion) и тел вращения (lathe), а все остальные тела можно получить объединением этих двух типов с использованием так называемых Булевых (Boolean) операций, которые являются основой Constructive Solid Geometry(CSG).


image alt text
Пример тела выдавливания (extrusion)


image alt text
Пример тела вращения (revolution, lathe)


Ограничения (Constraints)


Ограничения в параметрических САПР отличаются от размерных линий обыкновенных систем автоматизированного проектирования. Их основное отличие состоит в том, что изменение размерного значения меняет и сам чертеж, то есть ограничения предоставляют интерфейс двустороннего взаимодействия. Ограничения могут "измерять" размеры чертежа, то есть выполнять роль размеров “для справок” (reference). С другой стороны, ограничения могут изменять сам чертеж при изменении значения параметра ограничения. Это очень удобно, так как во множестве случаев инженеру-конструктору требуется создать документацию не единичного изделия, а целого семейства изделий, обладающих сходной формой, но различными значениями ряда размеров. К примеру, это могут быть обыкновенные гайки:


image alt text
Чертеж гаек различного размера


image alt text
Автоматическая перестройка чертежа при изменении некоторых параметров детали


В этом и состоит мощь параметрического моделирования: изменяя всего один или несколько параметров мы добиваемся полной перестройки всей модели, включая трехмерное представление и наборы видов на каждом из чертежей. Не нужно вносить тысячи правок, если необходимо изменить всего один размер — достаточно задать его новое значение и решатель геометрических ограничений рассчитает новые координаты объектов, а в случае ввода некорректных значений выдаст сообщение об ошибке.


Продолжение следует…

Комментарии (0)

    Let's block ads! (Why?)

    Комментариев нет:

    Отправить комментарий