Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
KokosSPb
81 / 84 / 3
Регистрация: 03.02.2011
Сообщений: 468
#1

Разбивка 3D модели "послойно" - C++

21.08.2014, 14:45. Просмотров 922. Ответов 4
Метки нет (Все метки)

1. Спасибо, что хотя бы посмотрели тему
2. Достаточно будет сказать где посмотреть или как правильно составить запрос для поиска (потратил 6 часов, а ничего так и не нашел). Может у моей задачи есть какое-то специфическое название (например "Слайсер") и поиск станет легче. Поиск сильно усложняется запретом на поиск слов состоящих из двух букв (3D).
3. Формат ещё не определен, думаю, скорее всего IGS, он поддерживается большим количеством CAD систем.

Суть:
Мне необходимо получить координаты точек (вообще, скорее всего только внешних, это если форма сложная) 3D модели, созданной, например, в Компас-3D или SolidWorks. Допустим, у меня есть куб 10Х10Х10, он сохранен в файл (к примеру в IGS), как мне его прочитать программно?

4. Пытался смотреть написание программ для работы, например с 3D принтером или Роботом, но толкового ничего не нашел, нашел лишь "Возьми эту программу, запусти, пересохрани открытый файл, отрой новый файл в этой программе" и так далее.
5. Меня устроит ответ - возьми библиотеку или изучи [DirectX | OpenGL]
6. Если есть варианты с другим форматом или я не прав в слове "Послойно" то я пойму, только, прошу, с разъяснениями.

Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2014, 14:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Разбивка 3D модели "послойно" (C++):

Необработанное исключение в "0x77913ab3" в "x": 0xC0000005: Нарушение прав доступа при чтении "0xdddddddd" - C++
вот код, нужно найти 3 минимальных положительных числа в массиве. При размере массива больше 950 в конце заполнения рандомным способом...

Найти в строке последовательность символов ("abcd") и заменить ее другой ("xyz") - C++
Найти в строке последовательность символов ("abcd") и заменить ее другой ("xyz").

О "нестабильности" или "переполнении" цикла foreach - C++
Здравствуйте, коллеги. Недавно коллега-программист сообщил мне страшную вещь: оказывается, что цикл foreach может переполниться при...

Ошибка: invalid conversion from "int" to "SDL_RendererFlip" - C++
Скриншот приложен, Вот страница, откуда я брал этот код Подскажите что делать

CString buff = "aaa" + "bbb" - C++
Хочется одним оператором конкатенировать несколько подстрок CString buff = "aaa" + "bbb" компилятор выдает error C2110: cannot add two...

Qt Creator. Все "за" и "против" - C++
Доброго времени суток, форумчане! Сегодня задался вопросом использования такой IDE, как Qt Creator. Суть темы заключается в том, что я...

4
ValeryS
Модератор
6961 / 5298 / 522
Регистрация: 14.02.2011
Сообщений: 17,866
21.08.2014, 14:53 #2
Цитата Сообщение от KokosSPb Посмотреть сообщение
н сохранен в файл (к примеру в IGS),
для начала понять что за формат IGS и как он хранит данные
вот например
https://ru.wikipedia.org/wiki/IGES
потом когда разберешься считывать файл и заносить данные в свои структуры
Цитата Сообщение от KokosSPb Посмотреть сообщение
или я не прав в слове "Послойно"
вот это не понял, что значит послойно?
1
KokosSPb
81 / 84 / 3
Регистрация: 03.02.2011
Сообщений: 468
21.08.2014, 16:41  [ТС] #3
Цитата Сообщение от ValeryS Посмотреть сообщение
вот это не понял, что значит послойно?
Ну, как работает Слайсер, он "режет" 3D модель на горизонтальные пластинки (шлифы, слои) и потом формирует код для отдачи команд 3D принтеру. Или MasterCam для токарки берет 3D деталь, потом бьет её на контур (по сути центральный слой, содержащий ось детали) и формирует набор команд для ЧПУ.
Цитата Сообщение от ValeryS Посмотреть сообщение
для начала понять что за формат IGS и как он хранит данные
Да, логично, просто я ещё с форматом не разобрался, принтеры используют STL, станки с ЧПУ вообще много форматов поддерживают, я сравнивал разные CAD системы, ну, общий IGS, поэтому про него и написал, а так, может будут ещё варианты?

На счет "послойно", я понимаю, если например держать координаты вершин, то возможно, на много проще просчитать точки в "слое" самому, зная вершины. Просто вдруг мне скажут - используй другой формат.
0
ValeryS
Модератор
6961 / 5298 / 522
Регистрация: 14.02.2011
Сообщений: 17,866
21.08.2014, 17:58 #4
Цитата Сообщение от KokosSPb Посмотреть сообщение
Ну, как работает Слайсер,
а я не знаю
думаю здесь подойдет то что в черчении называют "Разрезы"
https://ru.wikipedia.org/wiki/Разрез

поскольку никогда этой темой не занимался, то рассуждать буду прямо тут
в форматах трехмерной графики, насколько я знаю, используется векторное представление
значит его нужно преобразовать в растровое
для этого нужно почитать про компьютерную графику
но растр должен быть не двумерный(x, y), а трехмерный (x, y, z)
а потом берешь из полученного массива выбираешь нужный слой
типа
C
1
img[1][x][y]
насчет готовых библиотек не уверен, скорее всего они есть,но судя по специфике должны быть очень платные
1
Nick Alte
Эксперт С++
1646 / 1018 / 120
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
21.08.2014, 20:13 #5
Если модель "удобная", то есть представляет собой замкнутую поверхность без самопересечений, то математика надёжная и достаточно простая, но вычислений понадобится достаточно много. Если в ней помечена внешняя поверхность, то ещё проще. А вот для более трудных моделей придётся хитрить, возможно, выдумывать какие-то эвристики. Можно ещё попробовать подключить к этому делу видеокарту.
1
21.08.2014, 20:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2014, 20:13
Привет! Вот еще темы с ответами:

Ответы к упражнениям из книги Сэджвика "Фундаментальные алгоритмы на С++" части 1-4 - C++
Привет! Читаю данную книгу, в конце каждой главы имеются упражнения, но нет ответов на них. На решение некоторых задач просто нехватает...

Ординарная Сеть Петри для задачи об "обедающих философах" - C++
Помогите с сетью Петри. дуб в этом Задача об обедающих философах. Пять философов отдыхают в пансионате. Каждый из философов может...

Ошибка "неопределенная ссылка" при работе с std::thread - C++
При попытке сделать что-либо с std::thread, выдает ошибку компиляции, "неопределенная ссылка " . К примеру: #include...

Warning LNK4248: неразрешенная лексема TypeRef для "GLUquadric" - C++
Добрый день господа эксперты! Помогите с таким вопросом компилятор выдает: frmMain.obj : warning LNK4248: неразрешенная лексема...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru