И еще раз про изменение формата BREP
Итак, давайте разбираться с отломанным. Вот реалистичный пример проблемы совместимости:
- Пользовательское приложение использует Python-обертку FreeCAD (на версии OpenCascade 7.4) для чтения файлов BREP и работы с геометрией.
- Исходные данные в формате BREP подготавливает другое приложение на версии OpenCascade 7.6.
Изменения формата BREP. |
Приложения стали несовместимы, т.к. BREP-файлы версии 7.6 не читаются версией 7.4 (см. баг #31136). В формат были внесены изменения для хранения нормалей на сетках, поскольку оные не могут быть вычислены по аналитической геометрии в силу отсутствия последней.
Портирование первого приложения недопустимо (по любым причинам, начиная от требований заказчика и заканчивая примитивным отсутствием тестов или возможными регрессиями в новых версиях FreeCAD). Решение проблемы состоит в том, чтобы заставить OpenCascade 7.6 создавать файлы в старом формате. Благо, такая возможность предусмотрена в BRepTools::Write():
BRepTools::Write(shape, filename, false, false, TopTools_FormatVersion_VERSION_2);
В релиз-нотах версии 7.6 об изменении формата BREP ничего не сказано (sic!), поэтому вдумчивому читателю можно смело рекомендовать заметку Кирилла, проливающую свет на некоторые аспекты совместимости. Отсутствие каких-либо сведений об этой проблеме в официальных релиз-нотах говорит о том, что фокус внимания разработчиков был явно смещен в сторону бинарного формата XCAF, куда BREP входит на правах геометрических вставок и не более того (изначальная задача состояла в передаче нормалей через формат XCAF, чтобы сделать гладкое затенение на чисто сеточных данных в визуализации AIS). К сожалению, разработчики избавились от практики формирования полноценных релиз-нот с перечислением всех решенных проблем, и мы можем узнать только о тех изменениях, которые вендор посчитал наиболее значимыми.
Want to discuss this? Jump in to our forum.