Инспекция одной листовой модели
В первые новогодние дни мне выпало счастье реанимировать одно старое, но интересное приложение, связанное с проектированием стационарных нефтедобывающих судов (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-м желаю поменьше багов и побольше фич.