¬аше окно в мир —јѕ–
Ќовости —татьи јвторы —обыти€ ¬акансии –екламодател€м
—татьи

20 декабр€ 2023

C3D Solver: принципы параметрического черчени€ 2D-паттернов и улучшени€ дл€ 3D-моделировани€ сборок

јлександр јлахверд€нц, ведущий математик-программист C3D Labs

јлександр јлахверд€нц


ќригинал в блоге компании C3D Labs


јвтор знакомит с новинками в двухмерных и трехмерных решател€х Ч продуктах, которые разрабатываютс€ в группе C3D Solver.


„то такое решатели? –ешатели Ч это библиотеки, которые позвол€ют накладывать св€зи на геометрические объекты. Ёти св€зи мы называем ограничени€ми. ќни бывают двух видов: логические (касани€, симметрии, совпадени€) и размерные (угловой и линейный размеры, паттерны).  роме того, мы предоставл€ем функционал анализа степеней свободы, минималистичного драггинга и логировани€ вызовов API. Ћогирование вызовов API значительно помогает при составлении баг-репортов.

ѕерва€ и главна€ новинка группы C3D Solver в этом году Ч это по€вление нового типа объектов, а именно двумерных паттернов.

Ќовое: поддержка паттернов в 2D Solver

–ис. 1

ѕод двумерными паттернами мы понимаем множество объектов, которые рождены как копии от некоторого образца и расположены на плоскости относительно этого образца согласно заданному закону. Ётот закон может быть как простым, например в случае с линейным сдвигом, так и очень сложным.

ƒл€ начала мы проанализировали широкий набор запросов от наших пользователей. ¬ чем была проблема?

ѕо запросам пользователей —јѕ–

–ис. 2

“ак как ранее мы не предоставл€ли такой функционал, то разработчикам —јѕ– и непосредственно инженерам приходилось самосто€тельно создавать копии большого числа одинаковых объектов при моделировании эскизов, самосто€тельно накладывать на них ограничени€, поддерживать св€зи. Ёто было крайне сложно. Ѕолее того, когда объектов становилось слишком много, выполн€ть эти задачи было практически невозможно.

ѕоэтому мы реализовали в нашей библиотеке паттерны.

ѕаттерны в параметрическом черчении

–ис. 3

 огда мы их реализовывали, то заботились об интересах двух сторон. ѕерва€ Ч это инженеры. ¬ажно было предусмотреть, чтобы им было легко работать с массивами компонентов. ¬тора€ Ч это сторона разработчиков, как —јѕ–, так и математического €дра.

„то важно дл€ инженеров?

“ребовани€ инженеров к паттернам

–ис. 4

 ак уже было обозначено, в паттернах есть некотора€ не€вна€ односторонн€€ св€зь между образцом и копи€ми.  огда инженер моделирует что-то в эскизе, ему не требуетс€ информаци€ об этой св€зи. ≈му необходимо, чтобы все объекты были равноправными, а на копии можно было бы накладывать точно такие же ограничени€, как на образец. ћы достигли этой цели. ѕомимо этого, когда инженер моделирует паттерны, ему нужна возможность в произвольном пор€дке добавл€ть копии, удал€ть их, редактировать. Ёту возможность мы тоже реализовали.

„то важно дл€ разработчиков —јѕ–?

“ребовани€ разработчиков к паттернам

–ис. 5

— учетом многообрази€ паттернов и стремлени€ удовлетворить все потребности пользователей конечного приложени€ разработчикам —јѕ– важно предоставл€ть услови€ дл€ создани€ большого разнообрази€ паттернов. Ёто составл€ет сложность дл€ нас, математиков, так как от нас требуетс€ поддерживать всЄ это разнообразие паттернов. ѕоэтому мы задумались, как оптимизировать этот процесс, и преуспели.

 ак у нас это получилось? ћатематически паттерны Ч это симметрии, или, как говор€т математики, группы симметрий. »сход€ из теории, в нашем случае есть две важные элементарные симметрии Ч вращательна€ и трансл€ционна€, через композицию которых можно создать большое количество разных симметрий, которые в основном и примен€ютс€ в инженерном моделировании.

—оответственно, в решателе мы добавили два новых паттерна. ѕервый паттерн Ч это паттерн вращени€.

—имметричные паттерны: ѕоворотна€ симметри€

–ис. 6

—оздаетс€ он просто. «адаетс€ центр вращени€, образец и какой-то угловой шаг. ѕропорционально этому шагу будут располагатьс€ копии относительно образца. “о есть угол, на который копи€ отклон€етс€ от образца, должен быть кратным шагу.

јналогичным образом мы создали второй вид паттернов Ч линейные паттерны.

—имметричные паттерны: ѕереносна€ симметри€

–ис. 7

¬ этом случае перемещение от образца происходит вдоль некоторой пр€мой на рассто€ние, кратное заданному шагу. Ўаг при этом может быть как варьируемым, так и фиксированным Ч в зависимости от того, что требуетс€. Ёти паттерны позвол€ют создавать практически все множество паттернов, необходимых инженерам.

Ќа иллюстрации приведен пример такого составного паттерна Ч паттерн Ђкарусельї, где есть и вращени€, и сдвиг вдоль пр€мой.

 омпозици€ паттернов

–ис. 8

¬ API мы предусмотрели два способа работы с паттернами. ѕервый способ представлен на этом слайде на примере создани€ линейного паттерна. «десь создаЄтс€ отрезок, потом определ€етс€ линейный паттерн с помощью функции GCE_AddLinearPattern, и после этого рождаютс€ новые геометрические объекты-копии по заданному образцу, уже принадлежащие линейному паттерну.

C3D Solver API: экземпл€ры паттерна

–ис. 9

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

C3D Solver API: добавление в паттерн

–ис. 10

—ледующей новинкой двумерного решател€ €вл€етс€ управление длиной сплайна.

Ќовое: ограничение ƒлина сплайна

–ис. 11

“еперь можно использовать длину сплайна как управл€ющий, информационный и интервальный размеры, то есть задавать некоторые границы, в которых длина сплайна может измен€тьс€. “акже можно приравнивать длины сплайнов друг к другу и накладывать на сплайн ограничение Ђточка по метрическому процентуї.

 роме того, мы значительно улучшили производительность сплайнов.

”лучшение: оптимизаци€ сплайна от большого числа точек

–ис. 12

  нам поступила сери€ запросов от заказчиков, в которых описывалась похожа€ ситуаци€: если в эскизе присутствует множество сплайнов с большим количеством контрольных точек Ч от 100 и больше Ч и эти сплайны св€заны небольшим количеством ограничений, то в результате получаетс€ малосв€зный граф, при работе с которым проседала производительность. ќтвеча€ на требовани€ пользователей, мы почти на два пор€дка повысили производительность в таких сценари€х.

—тоит добавить, что дл€ сплайнов был добавлен новый случай касаний Ч касание с эллипсом.

≈ще одна новинка стала следствием двух доработок. ѕо€вилась возможность ограничивать положение точки внутри некоторого параметрического участка кривой. Ёто стало возможным благодар€ тому, что теперь в ограничении Ђточка по проценту на кривойї процент можно задавать как переменную. ј также за счет по€влени€ нового ограничени€ GCE_AddBound, которое позвол€ет ограничить область допустимых значений переменной некоторым интервалом.

”лучшение: »нтервальна€ переменна€

–ис. 13

ћы много работаем над анализом степеней свободы. Ћюбому ограничению в решателе присваиваетс€ один из четырех статусов, приведенных в таблице.

”лучшение: запрос о статусе ограничений

–ис. 14

Ёти статусы дают возможность разработчикам —јѕ– показать инженерам, что в эскизе что-то идет не так. ¬ этом году мы научились правильно диагностировать большой набор ситуаций, когда инженер формально создал удовлетворенную систему ограничений, но в ней имеютс€ противоречи€. Ќапример, вы можете видеть пр€моугольный треугольник, в котором инженер задал в качестве управл€ющих размеров оба катета и гипотенузу.

ƒиагностика избыточных

–ис. 15

¬ итоге он не может изменить ни катет, ни гипотенузу. –анее мы не могли корректно показать, что это избыточные ограничени€. “еперь в целом классе ситуаций мы можем это продемонстрировать.  роме того, мы повысили локализованность показа избыточности, чтобы инженер увидел непосредственно проблемное место.

Ќебольшие доработки коснулись размерных ограничений.

”лучшение: –ассто€ние, Ѕиссектриса

–ис. 16

Ѕыла решена проблема дл€ линейного размера между двум€ окружност€ми, когда они переходили от положительного к отрицательному значению или наоборот. ѕомимо этого, устранена проблема с вырожденностью биссектрисы, например если угол еЄ раствора равен 180∞. ѕо€вились две новые функции Ч ReleaseGeom и ReleaseVariable. ќни позвол€ют разработчику —јѕ– указать решателю, что геометрический объект или переменна€ ему больше не нужны, и далее не заботитьс€ о пор€дке их удалени€ и их времени жизни.


ƒалее рассмотрим новинки трехмерного решател€, реализаци€ которых потребовала большого труда.

ѕерва€ новинка св€зана с угловыми размерами. –анее, если пользователь создавал в трехмерном решателе угловой размер, не указыва€ ось вращени€, область значений такого размера находилась в диапазоне от 0∞ до 180∞. Ёто корректно математически, но неудобно дл€ инженеров, так как углы, допустим, в 160∞ или 200∞, либо 90∞ и 270∞, были не отличимы. ћы почти полностью переписали формулировки трехмерных углов, и теперь все трехмерные углы мен€ютс€ в диапазоне от 0∞ до 360∞. ѕосле чего мы добавили новый вид угловых размеров Ч Ђинтервальные размерыї. “ак что теперь трЄхмерный решатель поддерживает не только управл€ющие угловые размеры, но и интервальные. “аким образом, все размеры в решателе, как линейные, так и угловые, могут быть интервальными.

Ќовое: »нтервальный угловой размер и формулировка планарного угла

–ис. 17

”лучшение: ¬ывод о полной определЄнности

–ис. 18

¬тора€ проблема, с которой мы справились, касалась конструировани€ сборок трехмерных тел. ¬ ходе этого процесса бывает очень важно знать, что геометрический объект фиксирован, то есть полностью определен. ¬ прошлом функци€ IsWellDefined достаточно часто давала неправильный результат. ћы провели работу в этом направлении, и теперь практически в 100 % случаев функци€ дает корректные результаты о фиксированности элемента сборки.

–ешатель Ч это сложный продукт, и часто нас спрашивают о том, как внедрить его в свое приложение. ƒл€ того чтобы упростить нашим заказчикам работу, мы подготовили пример внедрени€ трехмерного решател€ в приложение с помощью библиотек C3D Vision и Qt. Ётот пример доступен теперь в библиотеке примеров C3D Vision.  од примера открытый и может быть использован вами на свое усмотрение.


Ќашими стратегическими планами на будущее €вл€ютс€: развитие продвинутого анализа степеней свободы в трехмерном решателе, поддержка сплайнов в трехмерном решателе и автоограничений в двумерном решателе, а также дальнейшее развитие примеров внедрени€ решател€ в пользовательские приложени€.

ќ наших ближайших планах вы можете узнать из нашей дорожной карты, котора€ доступна на официальном сайте C3D, где вы всегда можете изучить актуальную информацию о наших флагманских продуктах и ходе работ.


–еклама. ќќќ Ђ—3ƒ Ћабсї. erid: 2SDnjcvwURe



¬акансии:

јктуальное обсуждение

RSS-лента комментариев

ƒавид Ћевин
ƒавид Ћевин
ќт редактора: BIM? ¬ерю!
ѕроект ЂЌародное —јѕ–-интервьюї

—лучайна€ стать€:

BIM и “еатр: искусство возможного. „асть 2 — ћари€ «олотова, —офь€ ћинина, ¬ладимир “алапов (25 марта 2024)
isicad Top 10

—амые попул€рные материалы

   ‘орумы isicad:

isicad-2010 isicad-2008
isicad-2006 isicad-2004

ќ проекте

ѕриглашаем публиковать на сайте isicad.ru новости и пресс-релизы о новых решени€х и продуктах, о проводимых меропри€ти€х и другую информацию. јдрес дл€ корреспонденции - info@isicad.ru

ѕроект isicad нацелен на

  • укрепление контактов между разработчиками, поставщиками и потребител€ми промышленных решений в област€х PLM и ERP...
ѕодробнее

»нформаци€ дл€ рекламодателей


¬се права защищены. © 2004-2024 √руппа компаний «Ћ≈ƒј—»

ѕерепечатка материалов сайта допускаетс€ с согласи€ редакции, ссылка на isicad.ru об€зательна.
¬ы можете обратитьс€ к нам по адресу info@isicad.ru.