激光雕刻机的位图-GCode转换方法实践

article/2025/9/17 8:27:04

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)

http://chatgpt.dhexx.cn/article/jQGqtq1b.shtml

相关文章

3d打印实用小工具--GCode Viewer在线预览GCODE文件

使用solidworks2018绘制了一个零件 使用simplify3d进行切片 然后点击保存了这个文件。 没想到打印的时候&#xff0c;竟然打印成了这个零件。 原因是拷贝错了文件&#xff0c;而自己切片成功之后的GCode文件也无法预览&#xff0c;最后造成了时间和材料的浪费。 那么怎么需要打…

三轴XYZ平台生成gcode文件

1. 生成gcode坐标文件 gcode文件中保存的是需要绘制图形的路径信息&#xff0c;这里我们采用开源矢量图形编辑软件 Inkscape并通过Unicorn G-Code插件来生成 gcode坐标文件。 将软件资料包\Inkscape.rar 压缩文件解压到电脑上任意磁盘&#xff0c;软件内已安装 Unicorn G-Code插…

GRBL三:gcode代码解析

GRBL三&#xff1a;gcode代码解析 1.G00X_Y_Z_ :快速定位指令&#xff0c;_代表具体数值 可以同时针对X轴Y轴Z轴移动&#xff0c;只快速定位&#xff0c;不切削加工&#xff0c;相当于快速的移动到那个点上去 数值代表绝对位置 2.G01X_Y_Z_F_:直线差补 F指定进给速度mm/min…

3D打印gcode命令大全及解析

*G0&#xff1a;快速移动 *G1&#xff1a;控制移动 坐标轴XYZE移动控制&#xff08;G0和G1一样&#xff09; 例子&#xff1a;G0 F2000 X30 Y30 Z30 E3 *G2&#xff1a;顺时针画弧 *G3&#xff1a;逆时针画弧 此命令有两种形式&#xff1a;IJ-form和R-form。I指定了X偏移…

GCode软件使用说明书

欢迎使用GCode软件&#xff0c;本软件仅为辅助生成G代码软件...... 操作说明&#xff1a; 1、打开软件GCode.exe&#xff0c; &#xff08;1&#xff09;点击“文件”即可选择“新建”、“打开”、“保存”等功能&#xff0c;或者点击主界面快捷键&#xff1b; &#xff08;…

在 VS Code 中阅读 G-code 及 3D 打印机 gcode 常用指令介绍

1. 在 VS Code 中阅读 G-code 直接以文本格式在 VS Code 中打开 .gcode 文件&#xff0c;会发现没有语法高亮。 安装插件实现语法高亮和悬浮显示命令解释。 1.1 安装插件「G-Code」 1.2 配置 settings.json 文件 1.2.1 打开 VS Code 设置(快捷键&#xff1a; Ctrl 逗号) 1…

二分图最大匹配及匈牙利、HK算法

二分图最大匹配 在二分图中&#xff0c;最大匹配是指选出尽可能多的边使得任意两边没有公共端点。 增广路 设 M M M为二分图 G G G已匹配的边的集合&#xff0c;若 P P P是图 G G G中一条连接两个未匹配顶点的路径&#xff08;起点终点分别在两个集合&#xff09;&#xff0…

用最大流解决二分图最大匹配 Bipartite Matching

有A B C三个老师&#xff0c;D E F三门课&#xff0c;A能教E, B能教D和F&#xff0c;C能教D和E。要求每个老师只能教一门课&#xff0c;求分配方案。 这是一个典型的二分图最大匹配问题&#xff0c;二分图是只graph的顶点可以分为两部分&#xff0c;每部分内部顶点直接无连接&…

二分图最大匹配-匈牙利算法

今天介绍 匈牙利算法 &#xff1a; 匈牙利算法&#xff0c;是基于Hall定理中充分性证明的思想&#xff0c;它是部图匹配最常见的算法&#xff0c;该算法的核心就是寻找增广路径&#xff0c;由匈牙利数学家Edmonds于1965年提出&#xff0c;因而得名。 先介绍一下增广路径&#x…

求解分配问题(二) 二分图最大匹配算法

我的前一篇文章介绍了对于分配问题的Kuhn-Munkre算法&#xff0c;该算法其实可以看作是邻接矩阵形式的匈牙利算法&#xff0c;如果更抽象地看这个算法&#xff0c;它可以看成是一个二分图匹配算法的变体算法&#xff0c;具体的说&#xff0c;是二分图最大权重匹配算法。我打算也…

二分图最大匹配(匈牙利算法,Dinic网络流算法)

二分图最大匹配 二分图最大匹配问题: 有两个集合A,B,两个集合间有多条边连接集合中的点,且单个集合中的点各不相连,求两集合的点能两两配对的最大匹配数. (参考:)二分图最大匹配——匈牙利算法 匈牙利算法: A集合记录各点与B集合相连的点,B集合记录某点与A集合中匹配的点.遍历…

二分图最大匹配与最大独立集

一.概念部分 1.什么是二分图&#xff1f; 通俗的说法&#xff1a;就是可以把图分成两部分&#xff0c;每一部分任意两点之间没有关系&#xff08;同一部落&#xff09;&#xff0c;两部分之间点可能存在多种关系。 2.怎么判断二分图&#xff1f; &#xff08;1&#xff09;…

二分图最大匹配及最大权匹配

二分图最大匹配学习 一.二分图的基本知识二.二分图最大匹配什么是二分图最大匹配怎么求二分图最大匹配 三.二分图最大权匹配四.例题训练三.最小点覆盖数 一位大佬的神级解释 本以为有了网络流&#xff0c;就不用再学匈牙利了&#xff0c;但在做题的过程中&#xff0c;发现有些…

二分图最大匹配问题(匈牙利算法)

什么是二分图 如果一个无向图的的顶点可以分为两个互不相交的子集A和B&#xff0c;那么它就是二分图。也就是说&#xff0c;A、B内部不存在连边&#xff0c;所有连边都一头连着A中的顶点&#xff0c;另一头连着B中的顶点。 什么是二分图最大匹配&#xff1f; 二分图最大匹配…

二分图 二分图最大匹配

首先来说一下什么是二分图。 二分图 二分图又称作二部图&#xff0c;是图论中的一种特殊模型。 设G(V, E)是一个无向图。如果顶点集V可分割为两个互不相交的子集X和Y&#xff0c;并且图中每条边连接的两个顶点一个在X中&#xff0c;另一个在Y中&#xff0c;则称图G为二分图。…

二分图最大匹配(最大流)

先举个例子&#xff0c;有N台计算机和K个任务&#xff0c;每个计算机只能执行一个任务&#xff0c;但可以执行多种任务。现在给出N和K&#xff0c;和其关系&#xff0c;求出最多能处理的任务数。 这就是典型的二分图&#xff0c;整张图被分为两半&#xff0c;一半是电脑&#…

图论总结(一)二分图最大匹配

二分图最大匹配 (一)、二分图 1、定义2、性质3、判定(二)、二分图的匹配 1、二分图的最大匹配2、 Knig定理及其证明3、最小边覆盖与最大独立集(三)、增广路径 1、定义2、性质3、寻找增广路(四)、匈牙利算法 1、找增广路经的算法2、实践3、算法分析(五)、例题 1、最小…

二分图的最大匹配

一、概念&#xff1a; 二分图&#xff1a;简单来说&#xff0c;如果图中点可以被分为两组&#xff0c;并且使得所有边都跨越组的边界&#xff0c;则这就是一个二分图。准确地说&#xff1a;把一个图的顶点划分为两个不相交集 U 和V &#xff0c;使得每一条边都分别连接U、V中的…

二分图最大匹配问题

最近在做的打车项目中&#xff0c;涉及到了用户叫单后&#xff0c;将所有出单司机和所有订单匹配的问题&#xff0c;借此来学习一下二分图的匹配算法。 一、无权二分图最大匹配 首先要区分一下各个概念&#xff1a; 匹配&#xff1a;图G的一个匹配是由一组没有公共端点的不是…

二分图最大匹配——匈牙利算法

二分图最大匹配 &#xff08;一&#xff09;、二分图的介绍1、定义2、充要条件 &#xff08;二&#xff09;、二分图的匹配1、二分图的最大匹配2、增广路径3、匈牙利算法&#xff08;1&#xff09;、复杂度&#xff08;2&#xff09;、算法思路&#xff08;3&#xff09;、代码…