Рендер OpenSCAD (F6) завершается ошибкой "ERROR: CGAL error in CGAL_Nef_polyhedron3()"

Я построил модель, и она правильно просмотрела. При рендеринге для экспорта STL (F6) я получил ошибку утверждения:

ОШИБКА: ошибка CGAL в CGAL_Nef_polyhedron3(): ОШИБКА CGAL: нарушение утверждения! Expr: e->incident_sface() != SFace_const_handle() Файл: /mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_S2/SM_const_decorator.h Линия: 329

Большая часть модели отрисована правильно, но один компонент исчез.

Перемещение объекта не изменило проблему, но изоляция только исчезающей части дала мне правильную визуализацию этой части.

, 👍1

Обсуждение

Вчера у меня была точно такая же ошибка! Я предположил, что это ошибка в библиотеке, которой я пользовался, но, может быть, в этом есть что-то еще?, @Opifex


1 ответ


2

Читая между строк на других форумах, я обнаружил, что рендерер GCAL будет рендерить искаженный объект, но он потерпит неудачу, когда к этому объекту будет применен двоичный оператор, такой как объединение или пересечение.

Была дискуссия о вырожденных точках (две точки в списке полигонов, которые были (почти) одинаковыми значениями. У меня была такая ситуация, но ее исправление не решило проблему.

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

Переупорядочение вершин для одной грани устранило проблему. Не было никакой возможности увидеть проблему из предварительного просмотра.

Более полезное диагностическое сообщение было бы полезно, или инструмент для проверки многогранников на наличие многообразий мог бы сэкономить мне часы экспериментов и неудач.


,