先用这两个工具:

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

STLtoSVG,and SVG to Bmp的更多相关文章

  1. JQUERY PLUGIN:BARCODE条形码插件

    1)query.barcode.js安装 同其他jquery插件一样,只需要将jquery框架和jquery.barcode.js导入页面即可. <script type="text/ ...

  2. 快速加载DXF、DWG格式文件控件ABViewer

    ABViewer是一种高品质,低成本,高效率的多功能设计及工程文档管理应用程序. ABViewer为您提供专业的cad文件浏览和编辑工具. 支持多种格式,如:DWG格式, DXF, DWF, Hewl ...

  3. GoAccess日志分析工具

    1.1 GoAccess简介 GoAccess是一个非常良心的开源软件,它的良心之处体现在如下方面: 1)安装简单: 2)操作容易: 3)界面酷炫: GoAccess 官网 https://goacc ...

  4. Barcode.js功能强大的条码生成jQuery插件

    本文转载自http://www.uedsc.com/barcode-js.html Barcode.js是一个基于jQuery库的插件,用于绘制条形码或者二维码,能够生成基于DIV+CSS或者Canv ...

  5. 网页截图工具CutyCapt

    网页截图工具CutyCapt   CuteCapt是Kali Linux提供的一款网页截图工具.该工具运行在命令行中,可以将WebKit引擎解析的网页保存为图片.它保存的文件支持矢量图和位图两大类型, ...

  6. react技术栈实践(1)

    本文来自网易云社区 作者:汪洋 背景 最近开发一个全新AB测试平台,思考了下正好可以使用react技术开发. 实践前技术准备 首先遇到一个概念,redux.这货还真不好理解,大体的理解:Store包含 ...

  7. (转)OL记载Arcgis Server切片

    http://blog.csdn.net/gisshixisheng/article/details/47955787 概述: 本文讲述如何在OpenLayers中调用Arcgis Server切片并 ...

  8. PIE加载自定义服务数据详细介绍

    这段时间我一直在研究如何用PIE加载在线地图服务,遇到了许多问题,多亏了技术员小姐姐的帮助,才让我能正确加载ArcGIS Online在线服务.天地图在线地图和谷歌在线地图.我是根据博客园PIE官方博 ...

  9. 鲜为人知的 Windows 技能

    IE/Edge 竟然可以转换图片格式 SVG 转 PNG.SVG 转 BMP 在图片上点击右键,选择"图片另存为" Windows/Office 屏幕录制 office 竟然带有屏 ...

随机推荐

  1. C#中判断字符串是否中文的方法

    public bool IsChinaString(string CString) { bool BoolValue = false; ; i < CString.Length; i++) { ...

  2. makefile工程管理

    个人理解吧,makefile就是写一个指定格式的文件,将一系列的编译.链接.转换等操作打包在一起,方便以后一键生成可执行的二进制文件而产生的.下面记录一下这种文件的写法,方便以后忘了来查询. make ...

  3. SQL-Employees Earning More Than Their Managers

    思路: 今天复习数据库突然想起来leetcode上数据库的题目,就找来做了 (1)给表取别名 格式见code,这在自身连接的时候是很有必要的 (2)自身连接 from语句后面相当于接了“一张表”,如果 ...

  4. javascript中闭包的真正作用

    参考阮一峰的文章:http://javascript.ruanyifeng.com/grammar/function.html#toc23 1. 读取函数内部变量,封装一些私有属性 function ...

  5. 根据请求头跳转判断Android&iOS

    if(navigator.userAgent.match(/Android/i)) { window.location = 'http://apk.hiapk.com/m/downloads?id=c ...

  6. Javascript:sort()方法快速实现对数组排序

    定义和用法: sort() 方法用于对数组的元素进行排序. 语法: arrayObject.sort(sortby) 注释:sortby,可选,规定排序顺序,必须是函数. 说明: 如果调用该方法时没有 ...

  7. J2EE基础总结(4)——JSP

    什么是JSP       JSP全名为Java Server Pages,中文名叫javaserver页面,其根本是一个简化的Servlet设计,它是由Sun  Microsystems公司倡导.很多 ...

  8. HDU2841 Visible Trees (容斥原理)

    主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2841 题意: 一个人在(0,0)点,然后前面有一个m*n的格子 ,每一个格子的节点上有一棵树.问这个人 ...

  9. Windows Bridge for iOS: Let’s open this up

    (原文翻译过来的,原文链接http://blogs.windows.com/buildingapps/2015/08/06/windows-bridge-for-ios-lets-open-this- ...

  10. C# List 泛型用法

    List 类是 ArrayList 类的泛型等效类,某些情况下,用它比用数组和 ArrayList 都方便. 我们假设有一组数据,其中每一项数据都是一个结构. public struct Item{  ...