将多个stl文件合并为一个

时间:2017-04-10 13:53:37

标签: c# c++ asp.net stl-format

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

1 个答案:

答案 0 :(得分: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对包含模型。

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

当两个物体不相交时,这当然可以完成工作。在相交的情况下,它是否满足您的要求,将要求您提供“组合”的更精确定义。