STLtoSVG,and SVG to Bmp

先用这两个工具:

Slic3R或者Skeinforge:这个两个工具的作用就是把STL文件切片为叠加的矢量图(SVG格式)

因为SVG是分层的,一层一层的把每层都转换成一张Bmp文件

听说ImageMagick和Inkscape都可以转换

 

 Slic3r-console的命令行用这个:

 Slic3r-console --layer-height 0.25 --output D:\test.svg --export-svg "C:\test.stl"

第一个参数0.25是切片的厚度0.25mm(毫米)。后面的参数一目了然了,导出的格式的svg的。如果不指定,默认为G-code格式。

 

Slic3R源码当中的stl.h文件是STL文件相关数据的描述和对STL文件操作的接口(stl_open(),stl_close()等函数)。这接口的上层还封装了C++的类,以TriangleMesh类来封装ReadStlFile。ReadStlFile调用了stl_open()函数。ReadStlFile函数被更上层的Perl语言来调用。关于C/C++模块的SVG类是用来调试的时候产生作用的,不能运用到项目中。关于Slic3R中的SVG文件导出部分,是用Perl语言的Print模块的export_svg函数来完成全部写入的功能的。

B9Creator项目(项目工程源码在GitHub上)也可以把STL转换成SVG。B9是用Qt框架来开发的。Qt调用了底层的分析STL文件的算法。 B9ModelLoader类封装了STL文件解析的相关函数。B9通过AddModel来加载STL,然后保存为.b9l的文本文件,里面有相关stl文件路径和其他相关参数的描述,然后再根据b9l里面的信息进行slice,slice为slc文件,然后通过edit模块,导入slc文件,然后再导出一系列的bmp格式文件。

 

************************************************************************************************

 

注意:以上我倒腾来倒腾过去,其实最终目的是为了把stl文件切片成一系列的层,然后把每层转换成对应的位图(bmp)。所以我放弃了用Slic3R,因为它引入了Perl,引入了复杂。Perl代码以乱而闻名,所以我学习成本有点大了。 我最后还是用B9Creator来实现的,把B9的有用的类分离出来供自己调用,也折腾了好久,现在整个实现项目都传到了我的github上了,地址为:

 

https://github.com/CaltechFlame/stl2bmps

 

 

 

References:

http://stackoverflow.com/questions/9853325/how-to-convert-a-svg-to-a-png-with-image-magick
http://manual.slic3r.org/SVGOutput.html
http://manual.slic3r.org/CommandLineUsage.html
http://graphicdesign.stackexchange.com/questions/8021/how-to-batch-export-layers-of-inkscape-generated-svg-file-to-bitmap-for-sprites

http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine-Export.html

你可能感兴趣的:(svg)