生成Gcode以雕刻光栅图像

rastercarve的Python项目详细描述


拉斯特卡夫

PyPI versionPyPI licensePyPI status

这是我编写的一个小Python脚本,用于生成G代码的工具路径 雕刻光栅图像。在

脚本的托管版本可在 https://rastercarve.liveGithub)。还有 一个独立的自定义G代码预览器可在 https://github.com/built1n/rastercarve-preview。在

它获取位图图像并为CNC生成命令(G代码) 把图像刻在一块材料上的机器。对于 没有经验的人,数控机床本质上是一台机器人雕刻机-- 想想robot drill:你放入一块木头/泡沫/铝 库存;2)对机器编程;3)出成品 正确的图案切入其中。在

这个程序在第2步中进入——它获取图像并输出 正确的命令顺序让你的机器雕刻它。这是 不是第一个可以做到这一点的程序,但是现有的解决方案 成本高,不合适。在

示例如下:

安装

$ pip install rastercarve

直接从源树运行也很好:

$ python -m rastercarve -h

使用

$ rastercarve --width 10 examples/test.png > out.nc
Generating G-code: 100%|██████████████████| 278/278 [00:04<00:00, 57.10 lines/s]
=== Statistics ===
Input resolution: 512x512 px
Output dimensions: 10.00" wide by 10.00" tall = 100.0 in^2
Max line depth: 0.080 in
Max line width: 0.043 in (30.0 deg V-bit)
Line spacing: 0.047 in (110% stepover)
Line angle: 22.5 deg
Number of lines: 277
Input resolution:  51.2 PPI
Output resolution: 100.0 PPI
Scaled image by f=3.91 (200.0 PPI)
Total toolpath length: 2202.6 in
 - Rapids:  34.6 in (8.6 s)
 - Plunges: 29.8 in (59.6 s)
 - Moves:   2138.2 in (1282.9 s)
Feed rate: 100.0 in/min
Plunge rate: 30.0 in/min
Estimated machining time: 1351.2 sec
1 suppressed debug message(s).

此命令生成G代码以将examples/test.png雕刻到 一块10英寸宽的材料。正好是--width--height参数必须在命令行上指定;另一个 将自动计算。在

不过,雕刻参数可以安全地保留在默认值 可根据材料和机器进行微调 特点。在

输出的G代码将通过管道传输到out.nc,任何一台数控机床 应接受为输入。在

加工工艺

生成刀轨后,该运行作业了。大概是你 你知道你的机器的具体情况,所以我只概述一下 这里的高级步骤:

  1. 加载正确的工具。刻字是最好的,虽然普通 V位给出了可接受的结果。确保刀具角度匹配 用于生成刀轨(默认为30度-- 如果需要,请更改此项)。在

  2. 装载材料。中密度纤维板似乎效果最好;胶合板和普通 木材太容易碎裂。塑料有熔化的倾向 坚持住。在

  3. 最终图像左上角的X轴和Y轴为零 位置。再次检查右下角是否在边界内。在

  4. 将Z轴归零到材质的上表面。在

  5. 加载并运行刀轨。雕刻将从顶部开始 在右下角,沿着一条蜿蜒的路线向下到右下角 时尚。在

该程序的输出已经在ShopBot Desktop MAX上进行了测试 产生了前面显示的结果。在

高级

^{pr2}$

相关

Vectric PhotoVCarve- 类似的商业解决方案。此程序不是从 摄影棚。在

My blog post- 写开发过程。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JavaFX SwingWorker等价物?   java如何检查一个字符串只包含数字和一个小数点?   java遇到了异常组织。阿帕奇。卡塔琳娜。LifecycleException:无法启动组件   java如何从日期格式获取最低计时单位?   java应用服务器与开发过程的集成   java我无法运行Junit测试   无法在java多线程处理中维护生产者任务的顺序   java如何在CLI应用程序中“拦截”Ctrl+C?   java如何使用JSch进行原子SFTP文件传输,以便在写入过程完成之前无法访问该文件?   java当用户摆弄html范围滑块时,如何更改内容(文本)?   如何在Java中向现有文件追加文本?   JUnit测试中的java模拟Apache驼峰位置   java Maven更新项目和依赖项