Какое программное обеспечение/технику я могу использовать, чтобы выделить часть объемной 3D-сетки?

Для некоторых работ с использованием метода конечных элементов я вручную создал объемную трехмерную сетку с тетраэдрическими элементами из данных медицинских изображений. Объект имеет произвольную форму, почти цилиндрическую. У меня также есть отдельный файл сетки только для поверхности. Я пытаюсь вырезать срез/кусок со стороны моей сетки, чтобы в итоге я получил две новые сетки, которые можно выровнять по общему интерфейсу, и каждая сетка может функционировать независимо (с сохранением собственной связи и т. д.) . Мне нужен метод, который можно воспроизвести на других сетках того же типа (некоторые из них более мелкие или более грубые). Все программное обеспечение и вычислительные методы, которые я нашел, похоже, работают только с полыми/поверхностными сетками. Пожалуйста посоветуй.

P.S. Если это имеет значение, файл сетки находится в формате INRIA MEDIT .mesh, но мне также удалось преобразовать его в формат Paraview .vtk.

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


person Cogicero    schedule 26.02.2020    source источник
comment
Только немного связанный: вы можете использовать meshio для преобразования файлов medit во многие другие форматы. github.com/nschloe/meshio   -  person Nico Schlömer    schedule 27.02.2020
comment
Я не голосовал за закрытие, но причина, по которой вы однажды были отмечены, заключается в том, что обычно вопросы о моих вариантах не одобряются в stackoverflow. Причина в том, что тогда не может быть единственного лучшего ответа; прежде всего основанный на мнении. Хотя я думаю, что это правильный вопрос.   -  person Nico Schlömer    schedule 27.02.2020
comment
@NicoSchlömer Спасибо, я уже сделал это на самом деле. И в этом случае, кажется, нет диапазона вариантов. Мне сообщили, что этим занимаются 3D-моделлеры, но я не смог узнать.   -  person Cogicero    schedule 03.03.2020


Ответы (2)


Итак, если у вас уже есть сетка в виде тетраэдров и вы хотите вырезать из нее срез, вы можете просто выбрать подсетку, выбрав группу тетраэдров, например, на основе координат их углов. точки.

person Nico Schlömer    schedule 27.02.2020
comment
Спасибо. Я бы так и сделал, за исключением того, что в этом меше почти миллион элементов. Выбрать сотни тысяч предметов и получить их координаты таким способом совсем не просто. - person Cogicero; 03.03.2020
comment
Мне это кажется сверхтривиальным. В чем проблема? - person Nico Schlömer; 03.03.2020
comment
Кажется, я не в своей тарелке - попробую описать проблему. Я не знаю, как выбрать такую ​​подсетку (или, может быть, я использую не те инструменты?). У меня есть текстовый файл со всеми координатами, но нет возможности определить, какие координаты/какие строки текстового файла соответствуют элементы, которые я хочу выбрать. У меня также есть программа, которая может визуализировать сетку, но она не сообщает мне координаты. Если бы у меня был способ увидеть, что я выбираю, а также сообщить мне координаты, я думаю, это было бы тривиально. - person Cogicero; 03.03.2020
comment
Итак, как выбрать подсетку? Нажав на тетраэдры? Это не практично. Обычно есть условия на координаты точки. Также обратите внимание, что вы можете использовать meshio для преобразования кода во многие другие форматы. - person Nico Schlömer; 04.03.2020

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

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

Простым примером того, что я имею в виду, может быть двумерная прямоугольная область. Было бы естественно связать это с плотностью элементов m x n. Это еще более заметно, если отверстие не центрировано вокруг центра масс 2D-области.

Этого бы не произошло, если бы вы решили создать сетку той же 2D-области с отверстием в ней, независимо от выбранной исходной плотности m x n.

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

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

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

person duffymo    schedule 02.03.2020
comment
К сожалению, в этом случае создание сетки заново невозможно. Сетка создается из данных медицинского изображения, и я не могу сделать такую ​​модификацию напрямую. Кроме того, на создание меша уже ушла целая вечность. - person Cogicero; 03.03.2020
comment
Делать это с сеткой также сложно, подвержено ошибкам и неточно. Я не пытался дать вам простое решение. Я указал, как лучше всего это сделать. Кто дал тебе сетку? Какие инструменты/методы вы используете для создания сетки? Я хотел бы задаться вопросом о текущем состоянии автоматического создания сетки. Я уверен, что прошел долгий путь с тех пор, как я зарабатывал на жизнь МКЭ. - person duffymo; 03.03.2020
comment
Я создал сетку вручную, запустив скрипт, который собрал воедино все координаты и позиции элементов. Насколько я знаю, автоматическое создание сетки недоступно, но я поспрашиваю. Спасибо! - person Cogicero; 03.03.2020
comment
Лучший вопрос: откуда взялась исходная геометрия? Созданы на основе данных медицинских изображений с использованием какого программного обеспечения? У вас должно быть что-то, что могло бы брать серию изображений и преобразовывать их в трехмерное геометрическое представление. Вы передаете это представление своему сценарию? Это сложная проблема сама по себе. Я много занимался 3D-моделированием. Я знаю, что сценарии нежизнеспособны, если геометрия не является правильной и простой. - person duffymo; 03.03.2020