c # — объединить несколько файлов STL в один

Я работаю с asp.NET MVC 5, я нашел код c # для отображения файла stl в моем браузере, теперь я хотел бы объединить его с другим файлом stl.
Я обнаружил, что VTK позволяет вам сделать это: http://www.vtk.org/Wiki/VTK/Examples/Cxx/Filtering/CombinePolyData. Но код в .cxx, я полагаю, что я не могу использовать его в веб-приложении?

0

Решение

STL-формат — это просто суп из треугольников, то есть набор треугольников без какой-либо информации о подключении. Аналогично смешиванию двух супов в одной кастрюле в реальной жизни, ничто не мешает вам сложить все треугольники из обоих ваших файлов в один перед их отображением.

Точнее, предположим, что file1.stl похоже

solid model1
facet normal 0.0 0.0 -1.0
outer loop
vertex 20.0 0.0 0.0
vertex 0.0 -20.0 0.0
vertex 0.0 0.0 0.0
endloop
endfacet
.
.
.
facet normal 0.0 0.0 -1.0
outer loop
vertex 0.0 -20.0 0.0
vertex 20.0 0.0 0.0
vertex 20.0 -20.0 0.0
endloop
endfacet
endsolid

(точки указывают на дополнительные треугольники и не будут присутствовать в реальном файле) и file2.stl как

solid model2
facet normal -0.0 1.0 0.0
outer loop
vertex 0.0 0.0 20.0
vertex 20.0 0.0 0.0
vertex 0.0 0.0 0.0
endloop
endfacet
.
.
.
facet normal -0.0 1.0 0.0
outer loop
vertex 20.0 0.0 0.0
vertex 0.0 0.0 20.0
vertex 20.0 0.0 20.0
endloop
endfacet
endsolid

Я не эксперт в C #, но это должно быть довольно легкое упражнение на манипуляции со строками, чтобы поместить обе эти модели в один файл result.stl:

solid bothModelsInOne
facet normal 0.0 0.0 -1.0
outer loop
vertex 20.0 0.0 0.0
vertex 0.0 -20.0 0.0
vertex 0.0 0.0 0.0
endloop
endfacet
.
.
.
facet normal 0.0 0.0 -1.0
outer loop
vertex 0.0 -20.0 0.0
vertex 20.0 0.0 0.0
vertex 20.0 -20.0 0.0
endloop
endfacet
facet normal -0.0 1.0 0.0
outer loop
vertex 0.0 0.0 20.0
vertex 20.0 0.0 0.0
vertex 0.0 0.0 0.0
endloop
endfacet
.
.
.
facet normal -0.0 1.0 0.0
outer loop
vertex 20.0 0.0 0.0
vertex 0.0 0.0 20.0
vertex 20.0 0.0 20.0
endloop
endfacet
endsolid

Обратите внимание, что все грани (треугольники) находятся в одном файле, но есть только один solid/endsolid пара, вмещающая модель.

Теперь вы можете передать этот файл вашему рендереру, как и раньше.

Это, безусловно, делает работу, когда два тела не пересекаются. Делает ли он то, что вы хотите в случае пересечения, потребует от вас более точного определения «объединить».

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]