激光雕刻机的位图

您所在的位置:网站首页 激光雕刻机怎么画图 激光雕刻机的位图

激光雕刻机的位图

2024-01-13 10:09| 来源: 网络整理| 查看: 265

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\.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 [-m -c ] import sys, getopt move_speed = 3000 crave_speed = 300 if __name__ == '__main__': opts, args = getopt.getopt(sys.argv[1:], "f:m:c:") input_file="" #获取参数 for op, value in opts: if op == "-f": input_file = value elif op == "-m": move_speed = value elif op == "-c": crave_speed = value print(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 = False with open(input_file,'r') as ifd: for index,line in enumerate(ifd): #去除换行,避免换行混乱 line = line.replace("\n", "") line = line.replace("\r", "") #跳过前面几行生成的测试语句 if index


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3