自2020年底第一次发布这个小工具以来,我从未完整的介绍过这个东西,但事实上我几乎每天在使用它,也一直有用户在询问它的使用方法、兼容情况,我很高兴这个工具因为使用价值被大家关注。
对于没有体验过的朋友,先开一张图看下:
是的这个工具运行在终端里,但你先别跑,水这个帖子就是想说说它到底能做什么、怎么玩。
朴素的命名说明了它只做一件事:向 Snapmaker 的设备上传文件,没有其它功能。
目前支持 Snapmaker A-Series / J1 / Artisan。
代码在 Github 上开放,欢迎任何方式的改进,使用 Golang 语言编写,通过跨平台编译,支持各种 CPU 架构的 Windows/macOS/Linux(当然也包括Raspberry Pi)
在 Release 页面中你会找到所有预编译好的程序文件,选择一个适合你操作系统的下载即可(如果没有也请留言告诉我)。
建议新手解压缩到一个方便在终端里执行的位置,例如:
- Windows:
d:\sm2uploader\sm2uploader.exe
- macOS & Linux:
~/bin/sm2uploader
sm2uploader 支持 2 种运行模式:直接上传,虚拟 OctoPrint 中转上传。
我打算先说说 虚拟 OctoPrint,因为它更便于使用。如前面的终端图片里下半部分展示的那样,我预先启动了 8844 和 8843 两个本地端口,分别对接到 J1 和 A350 两台打印机,这里是模拟了 OctoPrint 的 HTTP 服务,任何上传到这个端口的文件都会转发到对应的打印机去。
如何在切片软件中使用?3D打印社群里最流行的切片软件,都支持向 OctoPrint 发送文件的功能,包括 UltimakerCura/PrusaSlicer/Simplify3D/ideaMaker,下图是 PrusaSlicer 支持的类型:
你只需要在打印机设置中找到这个选项,填入端口号,就完成了配置。接下来就是正常的切片操作,在 “导出/保存 Gcode” 的步骤中,通常会出现 “上传/打印” 的按钮,不要犹豫,按它,然后就可以去打印机屏幕上找到这个切片文件了。
如果你对 Windows 的命令行操作不熟悉,跟着下面的步骤操作:
首先从文件管理器进入刚刚解压好的目录,然后在路径框输入 cmd
,打开命令行窗口
开始运行程序:
> sm2uploader-win64.exe -octoprint :8844
因为它开放了一个网络端口
...you can upload files to http://localhost:8844
,可能会弹出安全提示,在家里或者小型工作室网络下是不必担心的,甚至可以从另一台电脑连接过来发送文件到打印机(就像共享的照片打印机一样)。更安全的方式是
-octoprint 127.0.0.1:8844
只允许本机访问,因为这个 “虚拟” 的 OctoPrint 是没有 Key/Password 认证的,也许将来我会添加这个功能。
如果你使用 macOS / Linux ,我会认为你已经知道如何在 Terminal 中运行这些命令,就不水了。
现在可以打开切片软件配置,以 PrusaSlicer 为例:
点打印机右边的小齿轮,添加物理打印机,在弹出的窗口中填入一个名字,例如 “地下室的A350”,选择类型为 OctoPrint
,在 URL 中填入上面的地址 http://localhost:8844
,点击 Test 按钮看看是否正确,就配置完成了。
现在切片,打印机选择 “地下室的A350”,在导出按钮旁边就出现了一键上传 :
以上就是 OctoPrint 模式的全部了。对于资深玩家,如果你有 NAS 设备或者树莓派,运行一个常驻服务进程是更好的方法,忽略掉 sm2uploader 的存在
接下来是 直接上传 模式,继续水
- 我保存了一些切好的 gcode,需要的时候就翻出来打一个
- 对于激光和 CNC,很多 CAM 软件并不支持连接到 OctoPrint,需要导出后手动上传到设备
- 打印机固件更新的服务器有时候不稳定,我习惯先用电脑下载固件包,然后上传到打印机的屏幕去升级
这些场景下,直接上传模式是非常高效的。有了前面的经验,你已经清楚如何向 sm2uploader 添加其它命令参数,现在直接在程序后面添加需要上传的文件路径。如果地址太长不方便输入,从文件管理器里把文件拖到命令行窗口即可(如果路径有空格请使用半角引号把文件路径包起来),如果一次上传多个文件,每个文件使用空格分隔:
> sm2uploader-win64.exe "d:\3D Models\testmodel.gcode" "d:\3D Models\egg.gcode"
Discovering ...
Use the arrow keys to navigate: ↓ ↑ → ←
? Select a printer:
▸ A350@192.168.1.235 - Snapmaker 2 Model A350
J1@192.168.1.201 - Snapmaker J1
我拥有 A350 和 J1 两台设备,现在都出现在列表中,上下键选择后回车,文件就开始上传了。如果只有一台设备会自动选中它,或者指定参数 -host J1
,这个名字在打印机屏幕的 设置-关于
里面修改,现在我觉得应该给它们一些更有活力的名字。
有些时候打印机的网络断开了,或者其它原因无法通过 UDP 广播协议告诉 sm2uploader 它还活着(也许重启打印机又好了),如果你知道它的 IP 地址,可以试着直连它的 TCP 服务:
> sm2uploader-win64.exe -host 192.168.1.235 c:\testmodel.gcode
Printer IP: 192.168.1.235
Printer Model: Snapmaker 2 Model A350
Uploading file 'testmodel.gcode' [10.1 MB]...
Printer 192.168.1.235 is not available.
嗯。。。这么看起来它确实又又又掉线了,内置的天线容易被铝框架或者其它金属干扰信号。
直传模式就这么多了,扯了半天这个工具就是要敲各种命令,挺烦的不是?
更烦的来了,实现下面这些,你必须开始自己写亿点点代码
- 你还记得程序所在的路径:
d:\sm2uploader\sm2uploader-win64.exe
- 打开记事本,输入以下内容,注意修改其中的程序路径,且路径中尽量不要包含空格:
@COLOR 0A
@d:\sm2uploader\sm2uploader-win64.exe %*
@PAUSE
- 保存,在保存对话框的 “地址栏” 中输入
shell:sendto
回车,会跳转到 SendTo 目录,能在这里看到右键菜单里出现的其它那些程序,比如 Fax/Mail/Bluetooth 等等 - 选择保存的文件类型为 All Files,文件名为
Send to Snapmaker.bat
- 现在你可以像前面图片中那样右键选中文件进行发送,弹出的窗口会显示进度信息,完成后按任意键关闭即可。
- 通过 Spotlight 打开 Automator 程序,就是 Mac 引以为傲的小机器人
- Cmd+N 新建一个 Quick Action
- 从左侧 Library 中搜索
Run AppleScript
并将它拖到右侧 workflow 中,receives 选择 files or folders
- 在代码框中粘贴以下代码并替换程序路径
on run {input, parameters}
set uploader to "~/bin/sm2uploader-darwin-arm64"
set tfiles to ""
repeat with f in input
set p to POSIX path of f
set tfiles to (tfiles & " " & p)
end repeat
tell application "Terminal"
activate
do script uploader & " " & tfiles
end tell
return input
end run
- 保存为 Send to Snapmaker
- 从 Finder 选择需要上传的文件,右键 - Quick Actions - Send to Snapmaker,弹出的窗口中会显示进度信息,完成后按 Cmd+Q 关闭即可。
啊啊啊啊,终于水完了,感谢你看到这里,赶快动手试试,如果觉得不好用直接去修代码,修完再来吐槽😝
截止目前程序版本为 v1.5,有更新我会在这个帖子进行说明。