Перейти к публикации

STL, API C++


Рекомендованные сообщения

В API SW есть также такой интересный (для меня по-крайней мере) термин, как Tesselation.

Тесселяция - это аппроксимация криволинейной кривой или поверхности ломаной линией или набором плоских полигонов (facets). Очень нужна для визуализации, т.к. изображение всегда представляется набором векторов и закрашенных полигонов. Яркость полигонов обычно зависит от вектора нормали к плоскости полиглна, тогда получается более реалистичное изображение. А если еще и блики добавить, тогда будет совсем красиво!!!

А *.STL, как я понимаю, был сделан для стереолитографических машин.

Ссылка на сообщение
Поделиться на других сайтах


Тесселяция - это аппроксимация криволинейной кривой или поверхности ломаной линией или набором плоских полигонов (facets). Очень нужна для визуализации, т.к. изображение всегда представляется набором векторов и закрашенных полигонов. Яркость полигонов обычно зависит от вектора нормали к плоскости полиглна, тогда получается более реалистичное изображение. А если еще и блики добавить, тогда будет совсем красиво!!!

...

Это я понимаю - немного в OpenGl программировал...

...

А *.STL, как я понимаю, был сделан для стереолитографических машин.

Так вроде и в STL тоже треугольники...
Ссылка на сообщение
Поделиться на других сайтах

Так вроде и в STL тоже треугольники...

Судя по формату файла, в STL могут быть полигоны с произвольным числом вершин, кстати, как и в OpenGL.

Что мне в нем не понравилось - так это отсутствие топологии. Правда, может быть я не все знаю про формат, т.к. осваивал его по примеру, сгенерированному в SW. Отсутствие топологии означает, что фасетное твердое тело нужно еще сшивать из полигонов. Это хорошо, когда форма примитивная, а если посложнее, и вдруг там появятся щели (а это вполне возможно, т.к. для каждой фасеты координаты угловых точек повторяются), тогда что делать???

Изменено пользователем PeterShilnikov
Ссылка на сообщение
Поделиться на других сайтах

...означает, что фасетное твердое тело нужно еще сшивать из полигонов. Это хорошо, когда форма примитивная, а если посложнее, и вдруг там появятся щели (а это вполне возможно, т.к. для каждой фасеты координаты угловых точек повторяются), тогда что делать???

Тогда вот и появляются ошибки в процессе импортирования геометрии из другой САПР или вообще из другой программы...

Все никак времени не хватает изучить (в пошаговом режиме) пример, о котором я писал в моем посте #17 ... :-(

Ссылка на сообщение
Поделиться на других сайтах

Тогда вот и появляются ошибки в процессе импортирования геометрии из другой САПР или вообще из другой программы...

Вопрос не однозначный. Проверял: есть *.stp файл с твердым телом. В нем есть ошибки: некоторые из граней имеют неверную ориентацию нормалей. Так вот: NX4 и SW эту модель берут, после выгрузки из них обратно в *.stp ориентация нормалей уже та, которая должна быть. CATIA модель читает, но твердое тело сшить не может. Наверное, NX4 и SW на ориентацию нормалей внимания не обращают и сами рассчитывают такую, какая должна быть по соображениям замкнутости тела.

В базовом *.igs твердых тел нет, там есть только лоскуты поверхностей, и принимающая система сама сшивает лоскуты в замкнутую оболочку, в *.stp есть твердое тело с полной топологией, но, похоже, SW топологию из импортируемой модели игнорирует и строит ее заново. Наличие топологии упрощает процесс сшивки, т.к. уже известно, какие примитивы с какими нужно соединять. И, к тому же, в модели с топологией отсутствует дублирование примитивов. А когда мы имеем дело с дублированием - возможны проблемы, все-таки не стоит забывать, что работа идет с вещественными значениями, а не с целочисленными. А в вещественных значениях часто накапливается мусор.

посте #17 ... :-(

Так в том посте спрашивается про манифолд и не-манифолд геометрию, а не про сшивку твердых тел. Изменено пользователем PeterShilnikov
Ссылка на сообщение
Поделиться на других сайтах

Вопрос не однозначный. Проверял: есть *.stp файл с твердым телом. В нем есть ошибки: некоторые из граней имеют неверную ориентацию нормалей. Так вот: NX4 и SW эту модель берут, после выгрузки из них обратно в *.stp ориентация нормалей уже та, которая должна быть. CATIA модель читает, но твердое тело сшить не может. Наверное, NX4 и SW на ориентацию нормалей внимания не обращают и сами рассчитывают такую, какая должна быть по соображениям замкнутости тела.

В базовом *.igs твердых тел нет, там есть только лоскуты поверхностей, и принимающая система сама сшивает лоскуты в замкнутую оболочку, в *.stp есть твердое тело с полной топологией, но, похоже, SW топологию из импортируемой модели игнорирует и строит ее заново. Наличие топологии упрощает процесс сшивки, т.к. уже известно, какие примитивы с какими нужно соединять. И, к тому же, в модели с топологией отсутствует дублирование примитивов. А когда мы имеем дело с дублированием - возможны проблемы, все-таки не стоит забывать, что работа идет с вещественными значениями, а не с целочисленными. А в вещественных значениях часто накапливается мусор.

...

Очень может быть...

...

Так в том посте спрашивается про манифолд и не-манифолд геометрию, а не про сшивку твердых тел.

Это я потом спросил про манифолд, а чуть выше я называл пример:

Create and Convert Non-Manifold Bodies Example (VB)

This example shows how to create non-manifold bodies, which by default are not allowed in SolidWorks, and then convert the non-manifold bodies to manifold bodies.

'---------------------------------

' Preconditions: Model document containing tool and target bodies exists.

' Postconditions: Non-manifold bodies are created and tessellated, and then converted to manifold bodies.

ИМХО в этом примере есть извлечение и вершин граней и нормалей...

Ссылка на сообщение
Поделиться на других сайтах

Очень может быть...

Это я потом спросил про манифолд, а чуть выше я называл пример:

Create and Convert Non-Manifold Bodies Example (VB)

This example shows how to create non-manifold bodies, which by default are not allowed in SolidWorks, and then convert the non-manifold bodies to manifold bodies.

'---------------------------------

' Preconditions: Model document containing tool and target bodies exists.

' Postconditions: Non-manifold bodies are created and tessellated, and then converted to manifold bodies.

ИМХО в этом примере есть извлечение и вершин граней и нормалей...

То, что можно все извлекать через API - это замечательно, но лучше брать из символьного файла, тем более, что формат его примитивен, и сделать утилиту чтения очень даже легко. Но зато при этом Вы отвязываетесь от версии самого SW и его API. А кроме того, не один только SW создает STL-файлы.
Ссылка на сообщение
Поделиться на других сайтах

То, что можно все извлекать через API - это замечательно, но лучше брать из символьного файла, тем более, что формат его примитивен, и сделать утилиту чтения очень даже легко. Но зато при этом Вы отвязываетесь от версии самого SW и его API. А кроме того, не один только SW создает STL-файлы.

Я, собственно, ни в чем особенном и не хотел Вас убеждать, это просто были мои "мысли вслух", не более того... :g:
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.



×
×
  • Создать...