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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM