Analysis Situs

Подписаться на эту рубрику по RSS

Приложение для инспекции CAD-моделей и прототипирования алгоритмов геометрического моделирования.

Инспекция одной листовой модели

В первые новогодние дни мне выпало счастье реанимировать одно старое, но интересное приложение, связанное с проектированием стационарных нефтедобывающих судов (FPSO). Работа связана с многочасовым компилированием, конфигурированием и портированием старого кода на новую SDK (Visual Studio 2017) и обновленные версии таких библиотек, как Qt, Qwt, VTK, etc. В общем, в ожидании новогоднего чуда (иной раз кажется, что данный Франкенштейн, если и оживет, то только чудом) и фоном пролистывая форум Фрикада, обнаружил вот такую интересную тему: Нужна помощь с листовой деталью. Оказывается, во Фрикаде есть модуль проектирования листовых изделий, важной частью которого является процедура развертки. Вы знали? Вот и я тоже -) Давайте в порядке новогоднего веселья проанализируем, что не так с проблемной деталью, а именно, почему она не разворачивается?

Пример «хорошего» листового изделия и его развертки в CAD Processor-е.

При моделировании изделий из листового металла функция развертки играет ключевую роль. Во-первых, развертка нужна для изготовления, поскольку она дает чертеж. Во-вторых, ее наличие позволяет оценить габариты исходного листа, что имеет прямое отношение к стоимости производства. Кроме того, разворачивание детали выявляет в ней такие возможные дефекты, как отсутствие скруглений в местах гибки или, например, самоналожение плоского шаблона. Алгоритм развертки, сам по себе, достаточно прост, и потому его можно реализовать для деталей без истории построения. Ясное и конструктивное изложение алгоритма можно найти, например, в работе [See Toh, K.H., Loh, H.T., Nee, A.Y.C., and Lee, K.S. 1995. A feature-based flat pattern development system for sheet metal parts. Journal of Materials Processing Technology 48, 1–4, 89–95].

Попытка развернуть фрикадовскую деталь.

Попытка развернуть фрикадовскую деталь оказалась частично безуспешной. Алгоритм, реализованный в кадпроцессоре, не смог идентифицировать некоторые грани модели, показанные красным цветом на анимационной картинке выше. В развертке также присутствуют аномальные сгибы, покрашенные алым цветом («хорошие» сгибы покрашены желтым).

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

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

Понятно, что в процессе гибки работает вообще-то один радиус. Второй радиус, упоминание о котором, возможно, несколько возмутит технолога, будет отличаться на толщину листа.
Радиус внешней грани сгиба должен превосходить внутренний радиус.

Такая аномалия, в принципе, не отменяет саму возможность развертки, которая и была частично построена выше. Впрочем, эту деталь все равно не удастся развернуть полностью. Взять хотя бы боковой фланг, который попросту «приварен» к соседнему лепестку модели, о чем свидетельствует импринт на контуре соответствующей грани. Листовая деталь может иметь складки и даже небольшие самопересечения, но она должна быть топологически безупречной, иначе ее не развернуть. Представьте, что вы пытаетесь развернуть «оригами», в котором не обошлось без клея. Такие штуки, в принципе, лечатся системами прямого редактирования, скажем, SpaceClaim.

Фальшивое оригами.

Что ж, Qt собралась, VTK на подходе. За сим покидаю вас, а в наступившем 2019-м желаю поменьше багов и побольше фич.