激光雕刻机的位图-GCode转换方法实践
Author:Gary Li
Date:2019-5-2
1. 简介
现在有一部分3D打印机带有激光雕刻功能,自己组装一台专用的激光雕刻机也并不复杂成本也很低。但是当我们使用激光雕刻机时,激光雕刻下位机只能接受路径指令,所以我们需要把位图——也就是我们平时最常见的jpg、png图片转换为控制板能理解的G-Code代码。根据需求以及复杂程度,转换有以下几种方法可以选择。下述方法所需的工具包均已打包上传,且均为绿色免安装版,下载地址。
https://download.csdn.net/download/m0_37340681/11156631
2. 位图->G-Code (使用JediMaster)
绝地大师(JediMaster)这个软件可以一键实现上述的目的,优点是使用简单,但是有一些致命的缺点,比如配置选项少导致最后效果不可控;只能支持简单的线条图形,复杂图形会转换失败等等。如果雕刻的原图片是一些logo之类的可以考虑使用此软件。
使用方法:解压后直接双击打开软件,左上角加号选择图片后等待转换完成就可以在主界面看到结果。双击主界面可以修改图片大小等等。使用方法很简单这里不详细说明了。解析完毕后图片就已经保存到了C:\Users<UserName>\.jedimaster中,将后缀为.nc的文件打开复制到上位机控制软件即可。
3. 位图->SVG->GCode (VectorMagic,JediMaster)
VectorMagic是一款位图转矢量图的小工具,具有很多功能比如去除背景,控制精细度等等功能并且支持较复杂的图形。弥补了JediMaster的缺点,将VectorMagic生成的SVG文件输入到JediMaster中即可。不过这个方法有个致命的缺点,那就是如下图所示,会生成很多移动路径,并且移动的时候激光头是打开状态的,所以会产生许多的杂线条。并且我观察了很久生成的GCode,并无法通过程序的方式将这些杂线条区分出来,所以这个致命问题导致了该方法不可用。
4. 位图 / 矢量图 -> GCode(InkScape) (推荐)
InkScape是个免费开源的矢量图作图软件,也支持大量的插件,功能选项很多,可以直接转换位图或者矢量图为GCode。这个软件还有个最大的优点是生成的路径是优化过的最短路径,效率很高;并且生成的路径原点在中间,方便定位。网上使用方法也很多,但是我折腾了大半天,原因是inkscape是个开源软件版本很多兼容性也控制得不是很好,下了很多版本要不就是功能残缺或者缺个库,或者就是运行时报很多错误。在我上传的资源包里有我测试完成的绿色版inkscape以及转换成GCode的插件。将资源包里的inkscape-unicorn-master的src文件夹里的内容解压到inkscape\share\extensions打开inkscape即可。使用方法参考这个视频:
https://www.bilibili.com/video/av10491675
不过转换出来的GCode不能直接使用,需要将里面的指令进行替换以及过滤。过滤脚本如下:
# AccLaser.py
# Usage:python3 AccLaser.py -f <gcode file> [-m <move speed> -c <crave speed>]import sys, getoptmove_speed = 3000
crave_speed = 300if __name__ == '__main__':opts, args = getopt.getopt(sys.argv[1:], "f:m:c:")input_file=""#获取参数for op, value in opts:if op == "-f":input_file = valueelif op == "-m":move_speed = valueelif op == "-c":crave_speed = valueprint(input_file,move_speed,crave_speed)if input_file == "":print("Please input file name")sys.exit()lines = []#设置初始参数lines.append('G21')lines.append('G90')lines.append('G92')lines.append('M05')# 记录激光状态,用于判断移动速度state = Falsewith open(input_file,'r') as ifd:for index,line in enumerate(ifd):#去除换行,避免换行混乱line = line.replace("\n", "")line = line.replace("\r", "")#跳过前面几行生成的测试语句if index <= 14:continueelif 'pen down' in line:lines.append('M03')state = Trueelif 'pen up' in line:lines.append('M05')state = False#如果读到了移动指令elif line.startswith('G1'):#判断激光状态,如果激光关了,则可以快速移动if state == False:lines.append(line.replace('F3500.00','F'+str(move_speed)))#如果激光是关着的else:lines.append(line.replace('F3500.00', 'F' + str(crave_speed)))#输出文件output_file = input_file + '.acc'with open(output_file,'w') as ofd:for line in lines[:-3]:#跳过最后三行回家的指令ofd.write(line+'\n')print("文件生成成功:",output_file)
激光雕刻机的位图-GCode转换方法实践相关推荐
- DIY激光雕刻机之位图雕刻
前段时间发布了一篇关于使用Arduino来DIY桌面激光雕刻机的文章: 基于Arduino的桌面激光雕刻机 介绍的雕刻机其实是使用矢量雕刻技术,激光雕刻机常用的技术有两种,一种是矢量雕刻.另一种是位图 ...
- Java转gcode,学用树莓派(8)-实战案例:基于树莓派JAVA的微型激光雕刻机
大学之前就希望做一个激光雕刻机,我对JAVA也非常感兴趣,正好呢树莓派有pi4j作为支持,那么刚好这次e络盟举行这个比赛,就打算用树莓派和java做一个激光雕刻机.我也希望通过这次比赛让更多的人知道p ...
- 小型数控雕刻机制作Arduino_基于Arduino DIY的激光雕刻机
很多人都梦想有一部专属的激光雕刻机,无论是给自己的作品制作实物,还是给木牌刻字.制作印章,都充满了Maker的DIY乐趣,今天出场的是以Arduino为控制核心所DIY的一部小型激光雕刻机. 使用材料 ...
- 小型数控雕刻机制作Arduino_自己动手DIY一部小型激光雕刻机
原标题:自己动手DIY一部小型激光雕刻机 很多人都梦想拥有一部专属的激光雕刻机,无论是给自己的作品制作实物,还是给木牌刻字.制作印章,都充满了Maker的DIY乐趣.今天出场的是以Arduino为控制 ...
- 树莓派java游戏机_学用树莓派(8)-实战案例:基于树莓派JAVA的微型激光雕刻机-控制器/处理器-与非网...
大学之前就希望做一个激光雕刻机,我对 JAVA 也非常感兴趣,正好呢树莓派有 pi4j 作为支持,那么刚好这次 e 络盟举行这个比赛,就打算用树莓派和 java 做一个激光雕刻机.我也希望通过这次比赛 ...
- 蓝牙激光雕刻机android,迷你型激光雕刻机!私人定制随你玩
原标题:迷你型激光雕刻机!私人定制随你玩 激光刻字已经成为了很多品牌商出售自己商品的时候附带的一项免费服务.比如之前大家还嚷嚷着贵啊贵的Apple Pencil,就因为能够刻字这项服务,导致很多人忍不 ...
- ARM嵌入式主板在激光雕刻机领域的应用
近年来随着激光加工技术的兴起,基于CNC的激光雕刻机作为一种机.光.电.算相结合的高科技产品在市场上得到了广泛应用.航大物联(www.lrist.com)激光雕刻机ARM嵌入式主板,采用DSP + A ...
- 激光计算机基本原理,技巧:三分钟了解激光雕刻机的工作原理
它的输出光路上包括一个激光器和一个气体喷嘴.气体喷嘴的一端是窗口,另一端是与激光和光路同轴的喷嘴.气嘴的侧面连接有气管,特别是气管和空气或氧气源.空气或氧气源的压力为0.1〜0.3MPa,所述喷嘴的内 ...
- 激光雕刻机图片解析C#上位机stm32f407控制板源码
激光雕刻机图片解析C#上位机stm32f407控制板源码 视频中机器运行慢是因为测试激光头功率小,跑快了光斑在像素点烧蚀时间短打不出痕迹,需要速度快把激光头功率加大即可 支持多种常用图片格式的转换例如 ...
- 寻求激光雕刻机软件开发合作。有意者请联系
寻求激光雕刻机上位机软件开发合作,有开发过类似软件的大侠请与我联系1572388110@qq.com
最新文章
- 阅读10、11、12章
- 四周第四次课 6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 x
- js的栈堆与浅拷贝、深拷贝的理解
- 设计模式——享元模式具体解释
- nginx负载两台服务器
- 既然有http 请求,为什么还要用rpc调用?
- LabVIEW_百度百科
- 微信支付服务器白名单,微信测试号白名单怎么回事?如何进行微信支付测试?
- 判断题 错与对的 t、f 是什么意思
- android 平板怎么截图,小米平板4怎么截图 小米平板4截屏的三种方法
- Android 地图跳转到百度、高德、腾讯地图导航
- Linux python 虚拟环境搭建与配置
- System32、SysWOW64与SysNative文件夹
- matlab求解积分总结
- 使用 Python 生成迷宫
- 一款简单易用的视频下载工具
- NGFF、M.2、mSATA、miniPCI-e基础知识入门
- Openmeetings开源视频部署
- 微信大改版,不止炸群、放烟花,这些有趣功能你也需要了解下
- DGP链游公会首发合作项目——D.G.Pals
热门文章
- Wireless基本概念
- 永久使用卡巴斯基的方法
- Android应用程序开发(第三版)-课后习题解答
- usb转232串口线驱动android,usb-rs232线驱动下载、Z-tek usb转串口驱动 usb转串口驱动...
- 【数据结构】3、模拟银行窗口排队叫号系统——C++
- ntko php,NTKO OFFICE文档控件
- foremost windows_windows上安装foremost - kalibb
- 基于SSM的Java图书管理系统
- 如何实现Miracast多个设备同时连接投屏
- 全网最好用的关键词的组合软件使用教程可排列组合随机生成