Форум программистов, компьютерный форум CyberForum.ru

C++

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

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

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

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

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

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

Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2014, 14:45     Разбивка 3D модели "послойно"
Посмотрите здесь:

C4800 принудительно задано логическое значение "true" или "false" - C++
char* numalphabet = "0,1,2,3,4,5,6,7,8,9"; string InText(""); char character = Convert::ToChar(InText); if...

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

"Нарушение прав доступа при чтении "0x00000000"" - C++
Добрый вечер, товарищи! Возникает ошибка "Нарушение прав доступа при чтении "0x00000000"". Не понимаю в чем проблема. ...

Error C2440: =: невозможно преобразовать "void *" в "Node *" - C++
Почему ошибка? error C2440: =: невозможно преобразовать "void *" в "Node *" #include <stdio.h> #include <ctype.h> #include...

Двумерный массив: Добавить методы "ДайЗначениеЯчейки", "УстановиЗначениеЯчейки" - C++
Нужно добавить методы ДайЗначениеЯчейки(индексРяда, индексКолонки), УстановиЗначениеЯчейки(индексРяда, индексКолонки, значение). ...

Преобразовать параметр из "WCHAR [260]" в "const char *" - C++
Подскажите пожалуйста, как " преобразовать параметр из "WCHAR " в "const char *""? Вот,по коду я думаю понятно будет. Если поставить...

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

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

поскольку никогда этой темой не занимался, то рассуждать буду прямо тут
в форматах трехмерной графики, насколько я знаю, используется векторное представление
значит его нужно преобразовать в растровое
для этого нужно почитать про компьютерную графику
но растр должен быть не двумерный(x, y), а трехмерный (x, y, z)
а потом берешь из полученного массива выбираешь нужный слой
типа
C
1
img[1][x][y]
насчет готовых библиотек не уверен, скорее всего они есть,но судя по специфике должны быть очень платные
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2014, 20:13     Разбивка 3D модели "послойно"
Еще ссылки по теме:

Каждую последовательность символов"АBC" заменить на"ALPHABET" - C++
ввести строку.Создать другую строку из символов введенной, где каждую последовательность символов"АBC" заменить на"ALPHABET" пример...

Существуют ли в данной строке s две непересекающиеся подстроки "AB" и "BA" - C++
Здравствуйте, есть задача: Дана строка s. Требуется определить, существуют ли в данной строке s две непересекающиеся подстроки "AB" и...

Что происходит когда например "char* g="fdgag";"? - C++
Сабж. Я понял создается динамический массив с помощью malloc() и поэтому к нему не обратится таким образом: g. Я прав?

Массив "hotel", в который пользователь добавляет "жильцов" - C++
Дорогие форумчане, помогите мне решить проблему в данной программе! Суть программы: Есть массив "hotel", в который пользователь...

возвращаемый тип "main" должен быть "int", а не - C++
код: // формирование списка фамилия, имя struct FIO { char *familiya; char *imya; } void main() {

Синтаксическая ошибка: отсутствие ";" перед "<class-head>" - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int _tmain(int argc, _TCHAR* argv) class Densum { public: ...


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

Или воспользуйтесь поиском по форуму:
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,931
Завершенные тесты: 1
21.08.2014, 20:13     Разбивка 3D модели "послойно" #5
Если модель "удобная", то есть представляет собой замкнутую поверхность без самопересечений, то математика надёжная и достаточно простая, но вычислений понадобится достаточно много. Если в ней помечена внешняя поверхность, то ещё проще. А вот для более трудных моделей придётся хитрить, возможно, выдумывать какие-то эвристики. Можно ещё попробовать подключить к этому делу видеокарту.
Yandex
Объявления
21.08.2014, 20:13     Разбивка 3D модели "послойно"
Ответ Создать тему
Опции темы

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