Металл2024 Реклама
Метобр2024 Реклама

Я STEP себе воздвиг нерукотворный!

kosta3ds
Идет загрузка
Загрузка
20.09.2022
7697
39
3D-моделирование

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

44
Статья относится к принтерам:
Ultimaker 2+

В последнее время вдруг резко увеличилось количество заказчиков, которые просят конвертировать модель из формата STL или OBJ в формат STEP. С чем это связано я не знаю, но создается такое впечатление, что появился какой-то «вирус» и все одновременно им заболели. И сколько я не пытался объяснить бессмысленность этой операции, заказчики все равно упорно просят выполнить такую работу, хотя для понимания бесполезности этой затеи достаточно курса геометрии средней школы. Поэтому я решил еще раз объяснить бессмысленность такого преобразования.

STEP – это параметрический формат. Это означает, что в файле хранятся параметры объектов примитивов. Например, для объекта типа «цилиндр» будут храниться координаты центра X,Y,Z, радиус R и высота цилиндра h, а также координаты вектора нормали k,m,n, позволяющие определить положение цилиндра в пространстве. Аналогично для параллелепипеда хранятся длина, ширина, высота L,W,H, координаты центра масс и координаты вектора нормали, позволяющие определить место и положение параллелепипеда в пространстве.Вот для примера я создал цилиндр R=19 mm и h=11 mm.

Я STEP себе воздвиг нерукотворный!

Если открыть STEP файл в обычном текстовом редакторе, то там мы увидим строки 7 и 25, в которых указаны тип примитива и его параметры.

    #7 = PRODUCT('Цилиндр','Цилиндр','',(#8));    #25 = CARTESIAN_POINT('',(19.,-4.65365783676E-15,11.));

И такие же блоки будут для каждого примитива. Если достаточно сложная деталь будет состоять, например, из 10 различных примитивов, то условно потребуется 10 таких блоков. Это, конечно, упрощенное условное представление только для наглядности и понимания сути вопроса. Параметрические форматы компактны и удобны для редактирования. Чтобы внести изменения в модель достаточно изменить нужный параметр и всё — быстро и просто.

STL – это формат сетки, описывающей поверхность. В этом формате нет никаких радиусов, длин, высот и т.п. Вся эта информация уже потеряна, в нем есть только набор треугольников с координатами вершин и восстановить параметрическую информацию не представляется возможным. Вот фрагмент STL файла, сохраненного в читаемом ASCII формате.

         facet normal 0.996195 0.087156 0.000000          outer loop           vertex 5.000000 -0.500000 -0.000004      \           vertex 4.924038 -5.500000 0.868240        --   координаты вершин треугольника           vertex 5.000000 -5.500000 -0.000004      /          endloop         endfacet

Вот так будет выглядеть STL сетка поверхности шара.

Я STEP себе воздвиг нерукотворный!

Редактировать модели в этом формате гораздо сложнее, нужны процедуры корректной обработки группы треугольников. Например, мы хотим изменить размер объекта или сдвинуть его на какое-то расстояние. Это означает, что мы должны пересчитать положение всех треугольников.

Почему сетка состоит из треугольников? Из школьного курса геометрии известно, что именно три точки однозначно определяют плоскость. Поэтому любая кривая поверхность есть набор треугольников-плоскостей, аппроксимирующих эту поверхность. Причем очевидно, что чем лучше, точнее мы хотим описать поверхность, тем мельче должны быть треугольники и, следовательно, их должно быть больше. Для наглядности приведу пример. Левый цилиндр имеет 36 граней (шаг 10°), а правый 180 граней (шаг 2°).Я STEP себе воздвиг нерукотворный!Легко понять, что в левом цилиндре боковая поверхность имеет 72 + верх и низ 36+36. Итого 144 треугольника. Правый цилиндр соответственно 360+180+180=720 треугольников. Видно, что на левом цилиндре сильно заметны грани, т.е. 144 треугольника явно не достаточно для получения гладкой поверхности.

Когда мы преобразовываем STL в STEP, например для правого цилиндра, программа создаст 720 примитивов треугольников, т.е. вместо 2-х параметров (R и h) мы получим 720! Поэтому файл получится гигантский, а толку от него никакого: мы получим те же самые треугольники в другой форме записи, которая значительно хуже, чем STL, т.к. формат STEP разрабатывался не для хранения сеток. В то же время в STL применяются алгоритмы специально предназначенные для хранения сеток. Для сравнения этот цилиндр в формате STL «весит» 36 Кб, а STEP – 1.6 Мб!

Легко понять, что для более сложных фигур разница будет еще больше. Вот я добавил всего лишь скругление острых ребер. В параметрической модели условно добавятся 4 записи: номера ребер 1 и 2 и радиусы скругления 1 мм и 1 мм.

Я STEP себе воздвиг нерукотворный!Левый рисунок — параметрическое представление, средний — тело STL, правый показывает крупно плотность сетки, которую строит программа для формирования скругления. Теперь для этой модели исходный STEP файл «весит» 11.4 кБ. STL файл имеет размер 6.4 Мб, а STEP, конвертированный из STL, получился 331 Мб (в 52 раза больше исходного STL)!!! А всего-то я добавил пару скруглений к простому цилиндру. Информация в обоих файлах одна и та же — те же треугольники и ничего больше!

Надеюсь теперь станет понятно, почему операция по преобразованию STL в STEP абсолютно бессмысленна и бесполезна, точнее даже вредна, если учесть время на обработку и размеры файлов. Вы по-прежнему хотите сконвертировать STL в STEP?

А.М. «Коста 3D»

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

44
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама