我有一个GLScene项目。在SceneViewer中,我将一些stl文件作为自由格式导入。用户可以与这些对象交互(用鼠标移动和旋转它们)。
现在我必须将整个Scene导出到一个stl文件中,所以在导出("merge")之后,freeforms的位置和旋转应该类似于Scene中的位置和旋转。
我发现了这个关于同样问题的线程:将“场景”导出到STL文件,但是这会创建一个坏的stl文件(尝试用meshlab打开)。
我希望有一些想法来创造一个解决方案。如果有人知道另一种3D文件格式的解决方案,它也将是伟大的。
发布于 2013-01-30 19:05:06
我已找到解决办法:)
答案中的链接几乎是正确的,但我必须以另一种方式计算标题信息(faceletts计数)。现在,我使用一个循环,一个计算头,然后再写这些。有时候解决方案太近了。
var j :integer ;
var i:integer;
var header: TSTLHeader;
var dataFace: TSTLFace;
var list: TaffineVectorlist;
//objects = list of steFreeform objects
//astream = created stream
for j := 0 to objects.count - 1 do
begin
list := TGLFREEForm(objects[j].MeshObjects.ExtractTriangles;
header.nbfaces :0 header.nbFaces + list.count div 3 ;
end;
aStream.write(header.SizeOf(header));
//rest see above link in the questionhttps://stackoverflow.com/questions/14318593
复制相似问题