0

我正在使用 asp.NET MVC 5,我发现 ac# 代码可以在我的浏览器上显示一个 stl 文件,现在我想将它与另一个 stl 文件结合起来。我发现 VTK 允许您这样做:http ://www.vtk.org/Wiki/VTK/Examples/Cxx/Filtering/CombinePolyData 。但是代码在 .cxx 中,我想我不能在 Web 应用程序上使用它?

4

1 回答 1

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对包含模型。

现在您可以像以前一样将此文件传递给您的渲染器。

当两个物体不相交时,这肯定会起作用。如果发生交叉路口,它是否能满足您的需求,您需要提供更精确的“组合”定义。

于 2018-07-22T22:08:12.060 回答