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