跳到正文
Hacker News· simpsoka·· 6 小时前AI 评分38

因 $300 绣花机被订阅制锁死,开发者用 Rust 自建 ZigZag 编辑器并内置 MCP

Show HN: My $300 embroidery machine needed a subscription, so I built my own app

AI 导读

开发者因 $300 绣花机需要订阅才能使用,用 Rust 自建了可视化刺绣编辑器 ZigZag,内置 MCP 支持让 AI 智能体协同创作和编辑设计。它可将 SVG 转为针迹,导出 PES、DST、EXP、JEF、VP3 格式,或通过蓝牙直传 Brother Skitch(PP1),并提供 Mac 与 Windows 版本下载。

正文 · AI 翻译

ZigZag dark mode app icon

访问 zigzag.diy

ZigZag 是一款用 Rust 构建的视觉化刺绣编辑器,以性能为核心,内置 MCP(模型上下文协议)支持,让 AI 智能体能够与你一同创建和编辑设计。将 SVG 图稿转换为针迹,在编辑器中精细调整,并导出 PES、DST、EXP、JEF 或 VP3 格式,以广泛兼容各类刺绣机——或通过蓝牙直接将设计发送到 Brother Skitch(PP1)。

在 Illustrator 中绘制、在 ZigZag 中绘制,或让智能体来绘制。Rust 引擎和 zigzag 命令行工具在编辑器之外驱动同一套工作流程。

观看 ZigZag 实际演示

zigzag-demo.mp4

在 Brother Skitch(PP1)上刺绣

Download the video of ZigZag stitching a design on a Brother Skitch PP1

下载视频(MP4,1080p) · X 上的原帖。

下载 Mac 版

下载 ZigZag.dmg

适用于 Apple Silicon 和 Intel Mac,macOS 11 或更高版本。打开 DMG,然后将 ZigZag 拖入“应用程序”。该版本已由 Apple 签名并公证。无需安装 Rust。

下载 Windows 版

下载 Windows 版 ZigZag —— 最新版本中的 ZigZag-<version>-x86_64-windows.zip 资源。

适用于 64 位 Windows 10(版本 1709 或更高)和 Windows 11。解压后双击 ZigZag.exe。对于没有 Microsoft 受信任签名的应用,Windows SmartScreen 会在首次运行时发出警告;点击更多信息 → 仍要运行。无需安装 Rust。

发行说明和校验和 · 发布版本

zigzag/
  src/svg.rs              SVG import (usvg): fill and stroke parts, transforms, text
  src/document/           editable document; settings saved back into SVG ids,
                          layout edits as SVG transforms, lettering
  src/params.rs           stitch settings tokens + fabric presets
  src/stitch/fill.rs      tatami fill (scanline sections, staggered rows)
  src/stitch/satin.rs     satin columns: two rails, auto-satin, underlays, short stitches
  src/stitch/stroke.rs    running / triple-run stitch
  src/boolean.rs          polygon booleans and offsets (i_overlay)
  src/design.rs           planner: overlap removal, cap order, routing, trims
  src/checks.rs           digitizing checks (sizes, widths, lettering, hoop)
  src/formats/            PES (+PEC), DST, EXP, JEF, VP3, Skitch PEN writers;
                          PES/PEC/DST/EXP/JEF readers; preview; worksheet
  src/machine/            Skitch Bluetooth protocol (+ btleplug client, `ble` feature)
  src/studio/             editor (egui on OpenGL via glow) + MCP server (`gui` feature)
  src/mcp_bridge.rs       stdio ↔ HTTP bridge for MCP clients that launch a command

构建

cargo build --release                        # CLI + MCP bridge, no system deps
cargo build --release --features gui,ble     # + the studio editor and Skitch upload

Linux 需要 gui 所需的常规 X11/Wayland 和 OpenGL 开发库。libdbus 已为 ble 内置。

针迹类型

类型 功能 适用于
填充(榻榻米) 交错排列的行,任意角度,带底衬(边缘走线 + 行)和拉伸补偿 填充形状
缎面 两条轨道之间的锯齿列,带中心/轮廓/锯齿底衬、拉伸补偿和紧弯处的短针迹;平针、S 形针迹或锯齿面线;横跨该列的多根线(多色缎面) 描边(任意宽度);Ink/Stitch 风格的双轨路径带横档;填充形状:环形使用内/外轮廓,条形/字母/月牙在其尖端分割(自动缎面),或 border 沿轮廓走线
走线 平针走线,单线或三线(豆形) 描边和轮廓
轮廓 向内沿轮廓排列的行,或从中心向外的一条螺旋(Ink/Stitch 的圆形填充) 填充形状
毯边 E 形针迹:一条线带伸入形状的齿 边缘、贴布绣
贴布绣 定位线 → 停止 → 固定 → 停止 → 缎面覆盖 填充形状
手动 每个路径点都是针点 导入的机器文件、钢笔工具
蜿蜒 一条穿过形状的蜿蜒线,绗缝风格:轻盈柔软 填充形状
波纹 沿轮廓的开放平针行,或一条螺旋 填充形状
十字绣 X 形网格,以半十字行去回缝制 填充形状
格纹 多根线的编织条纹(在面板中编辑的镜像色序),每根线有自己的色块 填充形状

宽度超过 7 mm 的缎面会自动分割(更短、交错的针迹),并使用自动间距(窄列更疏,宽列更密)。

规划器功能:

  • 移除重叠:被后续对象遮住的填充不会被缝制(保留 0.5 mm 的重叠)。
  • 盖线顺序:由中心向外、自下而上,按颜色分组,同时遵循分层。
  • 走线:行进针迹保持在形状内部:直线能留在内部时就直穿过去,否则沿轮廓内侧绕行(Ink/Stitch 的 underpath),因此带挖空的填充在缝制时几乎不需要剪线。只有在两者都不可行时才剪线(最多 50 mm 的行进距离)。
  • 按对象控制缝制:起点和终点(线从哪里进、从哪里出,以便下一个对象靠近),之后剪线,之后停止(用于铺泡沫或修剪贴布)。文档还可以用平针连接相距最多 N mm 的对象,而不是剪线。
  • 面料预设:标准、薄棉帽、结构帽、针织。
  • 检查:过窄填充、过宽/过窄缎面、小字、微小间隙、完全覆盖的对象、绣框适配。
  • 分组颜色:重新排序以减少换线,同时不破坏分层。

Mac 应用

在装有 Rust 和 Xcode 命令行工具的 Mac 上 (xcode-select --install):

packaging/macos/make-app.sh --install    # builds ZigZag.app and copies it to /Applications
packaging/macos/make-app.sh --dmg        # also makes dist/ZigZag-<version>.dmg to share
packaging/macos/make-app.sh --universal  # one app for Apple Silicon and Intel Macs
packaging/macos/make-app.sh --release    # the DMG to publish: universal, signed, notarized

--release 使用你的 Developer ID 签名,并让 Apple 对应用和 DMG 进行公证,因此它可以在任何 Mac 上打开而不会出现警告。事先需要做一次:添加 Developer ID Application 证书(Xcode › 设置 › 账户 › 管理 证书 › +),在 account.apple.com 创建应用专用密码,并将 公证凭据保存到你的钥匙串中:

xcrun notarytool store-credentials zigzag-notary --apple-id YOUR_APPLE_ID --team-id YOUR_TEAM_ID

该应用捆绑了 studio、zigzag 命令行工具和 MCP 桥接。要在任何位置使用命令行: ln -s /Applications/ZigZag.app/Contents/MacOS/zigzag /usr/local/bin/zigzag。 对于 Claude Desktop,将 MCP 配置指向 /Applications/ZigZag.app/Contents/MacOS/zigzag-mcp。

没有 --release 时,应用采用临时签名,未公证。它可以在构建它的 Mac 上 正常打开。在另一台 Mac 上,macOS 首次会阻止它:打开系统 设置 › 隐私与安全性,然后点击仍要打开(在 macOS 14 及更早版本中, 右键点击应用并选择打开)。首次向 Skitch 发送时,macOS 会请求蓝牙 权限。

Studio

已批准的刺绣图标位于 packaging/macos/AppIcon.png(浅色) 和 packaging/macos/AppIcon-dark.png(深色)中。Mac 构建会重新生成这两个 多分辨率 .icns 文件;运行 bash packaging/macos/make-icons.sh 可 分别重新生成它们。Finder 和未打开的应用使用浅色图标。 studio 运行期间,其 Dock 图标会跟随应用的浅色/深色主题, 包括 ZIGZAG_THEME=light|dark 覆盖设置。

ZigZag

zigzag-studio [design.svg|logo.png] [--mcp-port 7878 | --no-mcp | --mcp-stdio]

布局像 Illustrator,风格像 Mac 应用:

  • 工具位于左边缘:选择(V)、直接选择(A)、抓手(H)、钢笔(P):单击创建角点,拖动创建曲线(按住 Option 打断手柄,按住 Shift 保持 45°,按住空格移动正在放置的点);绘制时,按住 Option 会临时切换到锚点工具(拖动线段使其弯曲,拖动手柄单独移动手柄,单击平滑点将其变为角点),按住 ⌘ 会临时切换到直接选择工具(拖动点或手柄,然后继续绘制),在选中的路径上按住 Option 拖动也能弯曲线段。Illustrator 的钢笔组功能就在它后面:添加锚点(+)在不改变轮廓形状的情况下单击添加一个点,删除锚点(-)单击删除一个点(按住 Option 时两者互换),锚点工具(Shift+C)在平滑点和角点之间转换,并可单独拖动手柄。按住钢笔(或右键单击它)可打开该组的弹出菜单,按住 Option 单击可循环切换组内工具,或通过弹出菜单边缘的条带将该组拖出为独立工具栏;形状工具的工作方式相同。画笔(B),其组内包含 VectorCraft 的路径清理工具:平滑(沿路径拖动以消除抖动:更少的点、更平滑的曲线;平滑度在上方栏中设置)、路径橡皮擦(在路径上拖动以擦除该部分)和连接(在两个开放端点之间涂抹以连接它们,或在开放路径的两个端点之间涂抹以闭合路径)。形状(M 矩形,L 椭圆,\ 直线;按住或右键单击可切换多边形和星形)、填充角度(G)、测量(I)、文本(T)。在它们下方是所选对象的线迹色板:单击它可打开线迹颜色选择器。

  • 曲线,Illustrator 方式:钢笔单击创建角点,单击拖动创建曲线(拖动时按住 Option 打断手柄以实现急转弯;按住 Shift 使点和手柄保持 45°;按住空格移动正在放置的点)。单击最后一个点使其成为角点,或从该点拖动以新方向开始下一条曲线。单击第一个点闭合形状;按 Enter、Esc、⌘-单击或切换到其他工具可结束线条并保留它。选中路径后,钢笔从开放端点继续绘制,在轮廓上添加点,删除单击的点,按住 Option 单击可在角点 ↔ 平滑点之间切换(按住 Option 拖动可拉出新手柄)。绘制时,单击另一条开放路径的端点可将两者连接为一条。光标会显示单击将执行的操作。直接选择工具可拖动来自 SVG 的任何形状的点和手柄(圆形和矩形会变为路径);拖动曲线会在指针下弯曲它(按住 Option 拖动可弯曲直线;普通拖动会移动它);Delete 删除点,方向键微调它们。

  • 绘制时的智能参考线(视图 › 智能参考线,⌘U):钢笔点、形状角点和拖动的点会吸附到其他对象的锚点和中心、两条轮廓的交叉点、轮廓上、从最后一点出发的 45° 射线上(水平和垂直手柄也如此),或与其中任一目标对齐,并显示洋红色标签说明对齐类型(“锚点”、“交叉”、“路径”、“对齐”……)。按住 Shift 时,点保持其 45° 角度并滑入与最近目标对齐的位置。

  • 圆角:在直接选择工具下,每个尖角内部都有一个小圆圈;向内拖动它可使角变圆(所选点的角,或所有角),每个角仅在其边允许的范围内变圆。对象 › 路径 › 圆角… 可通过半径和圆角、反向圆角或倒角实现相同效果,并实时预览。

  • 画笔(B),沿用 Illustrator 的画笔:自由手绘一条线,它会变得平滑,并以你设定的宽度缝成缎纹柱(或作为平针缝)。平滑处理会消除手的抖动;急转弯保持尖锐;在起点处结束以闭合线条。光标是一个与缎纹宽度相同的圆。

  • 形状,Illustrator 方式:矩形(M)、椭圆(L)、多边形、星形和直线(\)。从角点拖动;按住 Option 从中心绘制,按住 Shift 绘制正方形或圆形、保持多边形或星形正立、将直线限制在 45°。拖动多边形或星形时,↑/↓ 增加或减少边数或角数。不拖动直接单击可输入精确尺寸。画布顶部的栏可切换形状并设置圆角半径、边数、角数和星形的内半径。闭合形状以填充形式、线条以走线形式进入当前线迹。

  • 路径工具:对象 › 路径查找器(联集、减去顶层、交集、排除;选中两个或更多对象时,变换面板中也有对应按钮)以及对象 › 路径(偏移路径…、轮廓化描边、简化…、圆角…、清理…)。简化… 是 VectorCraft 的滑块,从最少锚点到最接近原始形状,实时预览,自动简化会根据选区大小选择级别。清理… 会移除游离点、太小而无法缝制的对象(默认小于 1 mm)和多余锚点(彼此重叠的锚点、直线中间的锚点),并先显示各类找到的数量。结果以带真实拐角的平滑曲线返回(最小二乘曲线拟合),而不是多边多边形。

  • 从图像生成徽标(图像描摹):打开、拖入或置入 PNG、JPEG、WebP、GIF、BMP 或 TIFF,描摹图像窗口会将其描摹为平涂色形状,并在你的帽子颜色上预览。选择颜色数量(或自动)、宽度、细节和要保留的最小色块;移除白色背景;将每种颜色吸附到 Brother、Janome 或你自己的线色板中的线色;并将细线缝为单线。扁平徽标可精确描摹(边缘定位到像素的几分之一,拐角恢复,圆和直线精确);照片则进行色调分离。命令行也可描摹:zigzag convert logo.png -o logo.pes。

  • 上下文任务栏:位于选区下方,显示你接下来要做的事:其线迹类型、其线色、编辑锚点、圆角、简化、联集(两个或更多)、复制。视图 › 上下文任务栏(或其 ••• 菜单)可将其隐藏。

  • 询问智能体:Agent 面板(在左侧停靠栏中占满整个高度;点击工具栏底部的闪光图标可打开和关闭它,⌘K 或“窗口 › 询问 Agent…”可打开它并准备好提示词)在后台运行 Claude Code 或 Codex,并连接到本工作室的 MCP 服务器,因此你可以观看它构建设计。它只能使用设计工具(不能使用 shell,不能编辑文件)。对话记录显示它说了什么以及每一步,正在运行的那一步会显示一个旋转指示器(这是唯一显示它的地方;折叠面板后,其标题栏会改为显示步骤和时间)。在画布上,它正在处理的对象会显示移动的轮廓、微光和标签,说明它正在做什么(绘制、放置、重新设计样式……),适用于任何通过 MCP 连接的智能体,而不仅是面板中的这个。面板以智能体命名(Claude Code 或 Codex;在其 ≡ 菜单中切换);标题栏中的 + 可开始新对话,Stop 可结束运行。使用你已登录的 claude 或 codex 命令。像任何面板一样,它可以浮动、作为标签页加入其他面板或停靠在右侧;共享停靠栏时它位于底部,在一个分隔条下方,拖动分隔条可给它更多空间。

  • 线色和调色板:选择器会显示最接近的 Brother/Janome 线色、可点击的调色板(Brother、Janome 或你自己的),以及一个小型自定义颜色字段。可以从头创建调色板、从设计创建,或从你拥有的线色套装创建(调色板的 ≡ 菜单 › 从线色套装新建调色板:Brother 的 12、40 和 22 色套装,或 40 + 22 得到全部 61 色;然后“全部匹配”会将设计限制在你线盒中的线色上),用 + 添加所选对象的线色,右键单击可移除;它们会在多次启动之间保留。

  • 线色面板:按缝纫顺序显示设计的线色(每个色块都有编号,并显示其针数,同一线色连续出现两次时显示“stop”),或按颜色显示(每种线色只出现一次,并显示有多少对象使用它)。单击一行可选择它缝制的对象;单击色块可更改该色块的线色,或在“按颜色”中更改该线色在所有位置的使用。列表下方有“分组颜色”以及换色和剪线次数的计数。面板的 ≡ 菜单中有“全部匹配”到所选调色板,以及“显示调色板”在列表下方放置一个可点击的调色板(默认关闭,因为线色选择器已有相同的调色板)。

  • 面板,Illustrator 风格:Agent 独占左侧停靠栏;对象、针迹、变换、文字、线色和文档在右侧。设计的问题显示在状态栏(右下角):一个带计数的警告标志,或一切正常时的对勾;单击它(或“窗口 › 问题”)可查看列表,每一项都链接到其对象。拖动面板的标题栏可重新排序、将其移到另一个停靠栏,或将其放到画布上使其浮动(每个面板的 ≡ 菜单中也有“停靠左侧 / 停靠右侧 / 浮动”)。将面板放到另一个面板的标题栏上,它们会作为标签页共享该位置;拖出标签页(或使用 ≡ 菜单中的“分离”)可将它们分开,拖动标题栏可移动整个组。停靠栏顶部的 » 可将其折叠为一条图标条,以获得更大的画布:单击图标,面板会从图标条旁边飞出(拖动图标可移动该面板)。单击标题栏可折叠面板;“窗口 › 重置面板”可将一切恢复原状。布局会被记住。

  • 每个文档一个标签页(如同 VectorCraft 和 Illustrator):打开、拖入或新建会在画布上方以独立标签页打开文件(启动时的空白文档会让位给第一个文件);已打开的文件只会切到前台。每个标签页保留自己的撤销历史、选区、缩放和针迹。点击标签页切换,⌃Tab / ⌃⇧Tab(或“窗口 › 下一个/上一个文档”)逐个切换,拖动可重新排序,中键点击或其 ×(或“文件 › 关闭”,⌘W)可关闭;+ 新建文档,» 在标签页放不下时列出全部标签页。× 位置显示圆点表示有未保存的更改,关闭此类标签页会先询问是否保存。右键点击标签页可“关闭其他标签页”和“复制路径”。退出时不会询问:下次每个标签页都会恢复,包括其未保存的更改。

  • 菜单栏(文件、编辑、对象、视图、窗口)带有常用的 ⌘ 快捷键。在 Mac 上是真正的 macOS 菜单栏,在其他平台上绘制在窗口内。

  • 为每个工具绘制的光标:钢笔的笔尖(并提示点击将执行的操作)、形状、测量和填充角度工具的十字准线、直接选择工具的空心箭头,以及旋转角上的弧形箭头。

  • 右键菜单位于画布和对象列表上,样式类似工具弹出菜单:带图标的针迹类型,然后是带快捷键的常用命令。

  • 大型设计依然流畅:针迹每次更改只规划一次,复用所有未更改的对象(重叠移除也是如此:移动一个对象只会重做与其重叠的对象);规划耗时超过 12 毫秒的设计会在后台规划(状态栏显示“正在更新针迹……”,期间屏幕上保留上一次规划;当你放下移动的对象时,其针迹会随之移动,直到新规划完成)。拖动点或对象以及输入时,预览不会重新规划,直到你松开。针迹驻留在 GPU 上:每个色块的线段只上传一次,由着色器绘制(包括线迹阴影和针点),因此平移、缩放、拖动和针迹播放器在 CPU 上不产生每针迹开销,无论设计有一千针还是五十万针。对象列表只布局视图内的行。针迹遇到内部错误的对象会被排除,并在“问题”中给出警告,而不会导致整个规划失败。开发用:TL_PROFILE=1 将每帧的各部分打印到 stderr,TL_NO_GPU=1 改用 painter 绘制针迹,cargo test --release --features gui --bin zigzag-studio perf_bench -- --ignored --nocapture --test-threads=1 对描摹的徽标计时输入和拖动(examples/bench-grid.svg 是工作室自用的 213,000 针设计)。

  • 跟随系统的浅色或深色外观(ZIGZAG_THEME=light|dark 可覆盖),在 Mac 上使用 San Francisco 系统字体。

  • 为每个对象选择针迹类型:大按钮、任务栏、右键,或 F/S/R/C/X(Blanket 和 Manual 来自针迹面板)。预览会实时重新规划。

  • 布局,Illustrator 方式:拖动以移动(Shift:45° 步进;Option:拖动复制)。控制柄可自由调整大小(Shift 保持比例,Option 从中心调整大小,拖过对侧可翻转);在角点外侧拖动可旋转(Shift:45°)。智能参考线将边缘和中心吸附到其他对象和绣框上(View › Smart Guides,⌘U)。⌘D 是再次变换:Option 拖动复制一份,然后按 ⌘D 以相同间距复制更多。按住 Space 可用任意工具平移(轻按可播放绣出过程)。变换面板有 Illustrator 的参考点:X/Y 显示所选点,W/H 围绕它调整大小。还有旋转、翻转、在绣框中居中、适应绣框(打开或放置时,大于绣框的图稿会缩小以适应;撤销可恢复完整大小)、⌘C/⌘V、方向键微移 0.5 mm(Shift 5 mm)。编辑会保存为 SVG 变换。

  • 组的工作方式与 Illustrator 相同:单击或拖动会选中整个组;双击进入组内(其余部分变暗,面包屑显示你所在位置),再次双击可进入更深层级;按 Esc 或在空白画布上双击可退出。⌘-单击可选中单个对象而不进入组内。图层(Illustrator 的“Layer 1”、Inkscape 图层、Figma 框架)不是组。复制、粘贴和再制会保留组。

  • 文字(T),与 VectorCraft 和 Illustrator 中一样:在文字应出现的位置单击,直接在画布上输入(Enter 换行,完成后按 Esc 或在别处单击);单击文字或其字母之间可编辑,光标位于单击处(或用选择工具双击,这会选中其框内任意位置的文字,并将其显示为框而非字母的锚点;删除所有字母并完成,文字即被移除)(←/→、↑/↓、Home/End 和 ⌘←/→ 可移动它;Backspace 和 Delete 删除两侧字符;按住 Shift 配合上述任一操作、拖动、双击选词、三击或 ⌘A 全选可选中文字,输入会替换选中内容,⌘C/⌘X/⌘V 可复制、剪切和粘贴);单击选中的路径可将文字放到其上。Lettering 面板是一个紧凑的 Character 面板(帽绣文字不是长文本):字体(带搜索)、粗体/斜体、字母高度、字距、字偶间距(选中字对,或在输入时按 Option+←/→ 调整光标处的字对)、水平和垂直缩放、大小写(按输入、UPPER、lower、Title)、两行文字的对齐和行距、基线(直线、上弧、下弧,或在路径上带偏移和翻转),以及针迹类型。Type 菜单有 Type on a Path、Change Case、Align 和 Create Outlines(⇧⌘O)。文字和其他形状一样:直接选择、圆角、简化、路径查找器和清理都可用于它(在第一次点级编辑时它会静默变为普通路径,一步撤销),在此之前保存为真正的 SVG 文字。

  • 钢笔(P):绘制带角点和曲线的填充形状或线条,或逐个放置手动针迹。显示网格时吸附到网格,否则吸附到智能参考线。

  • 形状(M、L、\):矩形(带圆角)、椭圆、多边形、星形和线条。

  • 测量、mm 网格、针点、First/Last、组颜色。

  • 打开机器文件(PES、PEC、DST、EXP、JEF)以查看、调整大小并重新导出,以及图像以进行描摹。

  • 按类型设置:填充角度(可用拖动设置的角度工具,A)、间距、长度、拉力、底衬。缎面选项:列与边框、针迹(缎面、S 针迹、锯齿)、横跨列的线数、宽度、底衬道数、短针迹。轮廓与波纹:环或螺旋。十字绣:单元格大小。苏格兰格:条纹(各自颜色与宽度,镜像)、角度、行间距。走针选项:单次或三次。

  • Stitch 面板中的缝纫行:起点与终点(点击轮廓;绿色和红色标记可拖动)、对象后的修剪与停止。编辑 › 复制/粘贴针迹设置可将一个对象的类型和设置带到其他对象(每个对象保留自己的线和起点/终点);编辑 › 选择相同针迹类型;对象 › 路径 › 反向方向可从路径另一端开始缝制。

  • 测试色卡(对象 › 测试色卡…):将所选内容复制成网格,每项设置(间距、长度、拉力补偿、缎面宽度、填充角度)从一个值逐步变到另一个值,每个都标注其数值,以便缝制出来在真实面料上比较。

  • 视图 › 密度图为针迹堆积处着色(从每平方毫米 2.5 起为黄色,4 为红色),视图 › 缝纫顺序在画布上为对象编号。

  • 文档面板中的面料预设、绣花框、移除重叠和封顶顺序。在你的帽子颜色上预览。

  • 问题列表(状态栏):问题会链接到对象。缎面在画布上显示其轨道。

  • 缝纫顺序:更早/更晚。针迹播放器(空格)。撤销/重做一切。

  • 保存(Ctrl/⌘ S)将设置写入 SVG;导出 PES/DST/EXP/JEF/VP3/PEC/PEN 或工作表(HTML:图片、尺寸、时间、每个换色点及最接近的 Brother 和 Janome 线);发送到 Skitch。

  • 测量与单位。测量(I)的工作方式与 VectorCraft 相同:在两点之间拖动以读取距离、角度、宽度和高度。端点会吸附到点、边缘和绣花框(或开启时的网格),按住 Shift 可将线保持为 45°,读数会保留到下一次拖动(按 Escape 清除)。视图 › 单位,或状态栏中的单位菜单,以毫米、厘米、英寸、点或像素(SVG 像素,1/96 英寸,按文件读取方式)显示尺寸、位置、距离和网格;该设置在多次启动之间会记住。任何长度字段也接受输入的单位或求和(1/4 in、25.4mm、10+5)。网格(⌘')跟随单位,英寸以半英寸为单位细分到 1/32,并沿画布顶部和左侧边缘从绣花框中心标注其主线。针迹设置(间距、密度、拉力补偿)保持为毫米。

  • 从上次中断处继续。退出(或崩溃)后重新打开:相同的文件会回来,每个有未保存更改的标签页、缩放和选区,以及同一个标签页在前台。更改会在你工作时保留(session.json,每个标签页一个恢复文件,recovery.svg、recovery-2.svg…,位于 ZigZag 的设置文件夹(~/Library/Application Support/ZigZag)中,每个文件要么完整写入要么完全不写),在你保存之前绝不会写入你的文件。通过文件打开应用会跳过此过程。如果应用在恢复文档时崩溃,下次启动会将其保留为 recovery-crashed.svg 而不是再次尝试(无法读取的保留为 recovery-unreadable.svg),并在状态栏中说明。Skitch 上的任务也会恢复:最后发送的设计会被保留(sent.json),如果 Skitch 窗口之前是打开的,它会重新打开并重新连接,一旦机器报告该设计,其进度会再次显示在机器上(机器保留设计和针的位置;Stop 会在两端结束任务)。

代理(MCP)

工作室在 http://127.0.0.1:7878/mcp 上运行一个 MCP 服务器(Streamable HTTP,仅限 localhost,已检查 Origin)。代理编辑你正在查看的实时文档(前台标签页),每次调用都是一个撤销步骤。

状态栏中的 MCP(右下角,Skitch 旁边)显示代理是否可以访问工作室:等待时为灰点,客户端连接后为绿色,调用进来时蓝色并脉动,服务器无法启动时为红色。点击它可查看地址、连接 Claude Code 和 Claude Desktop 的命令(带复制按钮)、已连接的客户端、最近的工具调用(失败的为红色,悬停时显示错误)以及提供的工具。

Claude Code:

claude mcp add --transport http zigzag http://127.0.0.1:7878/mcp

Claude Desktop / stdio 客户端(claude_desktop_config.json):

{ "mcpServers": { "zigzag": { "command": "/path/to/zigzag-mcp" } } }

zigzag-mcp 转发到正在运行的工作室。如果你更改了它,请使用 --port N。使用 "args": ["--headless"] 时,无需打开应用即可工作:在无人查看的文档上使用相同的工具(zigzag-studio --mcp-stdio),仅在代理保存或导出时保留。

工具:

  • get_design、add_svg(以毫米放置/缩放图稿)、set_object、delete_object、move_object
  • transform_objects(大小、缩放、旋转、镜像、移动)、duplicate_objects
  • add_text、edit_text、list_fonts
  • set_document(面料、绣花框、重叠、帽序、预览颜色)、group_colors
  • render_preview(返回针脚的 PNG)、check_design、get_svg、select
  • open_file(SVG、机器文件或图像,在单独的标签页中)、list_documents、switch_document、new_document、undo、save、export(机器格式或 html 工作表)、send_to_skitch、machine_status
  • trace_image(PNG/JPEG 徽标 → 形状,颜色对齐到线色卡)、round_corners、simplify(VectorCraft 的 0–100 级别,或自动)、clean_up
  • batch:一次调用多个,全有或全无且一个撤销步骤;后续步骤可以使用先前的结果("$0.added.0.name")

工具不接受的参数会被拒绝,并列出它接受的参数(拼错的 widht_mm 不会被静默忽略),每个工具都会说明它是否只读。

试着问:“为我的薄棉帽画一个 50 毫米的圆形徽章,上面有山和太阳,检查一下,并给我看预览。”

CLI

zigzag convert logo.svg -o logo.pes -o logo.jef -o preview.png -o sheet.html [--fabric thin-cap] [--hat]
zigzag convert old.dst -o old.pes             # machine files convert too
zigzag convert logo.png -o logo.pes           # PNG/JPEG logos are traced first
zigzag info logo.svg                     # stats + checks
zigzag fabrics                           # list presets
zigzag skitch info | status              # needs --features ble
zigzag skitch send logo.svg --trace

Illustrator 工作流程

使用 文件 → 导出 → 导出为 → SVG 导出(样式:呈现属性,对象 ID:图层名称)。将文本转为轮廓,否则会回退到系统字体。在 Illustrator 中重新打开 ZigZag 保存的 SVG 会保留图层名称中的设置。

命名图层或对象以设置其针迹。Illustrator 的 _x3D_ 风格转义会被解码,组设置应用于组内的所有内容。

标记 含义
fill satin run skip 针迹类型
a=45 填充角度(度)
s=0.3 行/锯齿间距(毫米)
l=3 最大针迹长度(毫米)
pc=0.2 拉布补偿(每侧毫米)
w=3 缎面宽度(毫米)
border 缎面沿填充形状的轮廓而非横跨
u=0 关闭底衬
ul=center+contour+zigzag 缎面底衬道数(ul=none)
ss=0 关闭短针迹
r=3 走针道数(3 = 豆形)
contour blanket applique manual 其他针迹类型
split=7 satin 自动分割长度 (mm);split=0 关闭
t=e8a33c 线色覆盖
o=2 缝纫顺序
stroke.… 仅适用于同时具有填充的对象描边,例如 stroke.run

图层名称示例:logo fill a=45 s=0.35、title satin、outline stroke.satin stroke.w=1.5。

通过蓝牙使用 Skitch

Skitch 窗口(工具栏的发送按钮或 文件 › 发送到 Skitch…) 运行整个任务,就像切片器的设备页面跟随打印一样:左侧是设计, 右侧是要执行的操作,顶部是各个步骤 (连接 · 归位 · 发送 · 试运行 · 缝纫 · 完成)。

  • 连接并配对。它会扫描 Skitch。首次使用时,按住 Skitch 的蓝牙按钮直到它发出蜂鸣声,然后点击连接(或重试); 如果电脑要求配对,请接受。在 Mac 上,Skitch 从不会出现在 系统设置 › 蓝牙中(它是蓝牙 LE 设备):当 ZigZag 连接时它才会配对。 如果 macOS 询问,请允许 ZigZag 使用蓝牙 (隐私与安全性 › 蓝牙)。请先关闭 Artspira:Skitch 一次只与 一个应用通信。
  • 归位。刚开机的机器会要求归位(关闭框架、接受、 重新打开框架);窗口会显示步骤,完成后继续。
  • 发送:带有设计图案的绣花框,按它将缝纫的位置:按放置位置(在 工作室绣花框中的位置,这样你可以把它放在帽子的高处)或 居中;按缝纫顺序列出需要准备好的线,使用 Brother 刺绣名称和编号;一份“缝纫前”检查清单;发送设计。
  • 试运行(Brother 的叫法;发送后默认开启):在机器上按 接受,针会沿设计轮廓走一圈而不缝纫,这样你可以检查它是否 避开框架的磁铁、接缝和帽檐。每次重新上框后都可再次试运行。
  • 缝纫:开始,然后在机器上按开始。图片显示已缝纫的部分, 未缝纫的部分变淡,并显示当前针位和当前线;下方是 线的时序线,标有针的位置。侧边显示进度、剩余时间、当前线和 下一根线,并在每次换线时准确显示该换哪根线。画布和 状态栏也会同步更新。
  • 开始 / 暂停 / 停止。开始(或继续,或再次缝纫)使机器 就绪;暂停是 Skitch 自己的开始/停止按钮(无法通过蓝牙 暂停);停止结束任务,将设计从机器上移除。 暂停时,可沿时序线拖动,或将针按 1、10 或 100 针步进,或回到该线的起点,然后继续。
  • 错误会说明错误是什么以及该怎么做(断线、梭芯、针板、 框架)。断线后,针会回到缺口处 (面线 6 针,底线 2 针,与 Artspira 相同)。
  • 最小化它(–)以便在缝纫时继续工作:画布恢复为你的 设计,状态栏右侧的机器图标显示 它正在做什么以及进度,并带有一个小进度条(点击它可恢复 窗口)。当机器需要你时,窗口会自动恢复: 换线、错误或结束时。
  • ••• 菜单还链接到 Brother 的 Skitch 操作视频(穿线、 梭芯、框架、断线、张力、清洁)。
  • 窗口的 ••• 菜单可以连接到模拟机器,它会自行 在机器上执行每个步骤,让你在没有 Skitch 的情况下尝试全部功能。

代理可以 send_to_skitch 并跟随 machine_status。该 协议是逆向工程得出的(见 NOTICE),因此请避免固件更新。

研究未记录的命令

在 Skitch 上,线张力不是蓝牙设置:它是机器上的张力旋钮。速度是固定的(约每分钟 400 针)。机器确实会报告一组设置,Artspira 也有设置界面,所以这里有两个工具可以用来弄清它还能做什么:

  • 设置字节(在 Skitch 窗口中,机器详情下方):读取机器报告的设置块。读取、断开连接、在 Artspira 中更改一项设置、关闭 Artspira、重新连接并再次读取:发生变化的字节会被标记。每次读取都保存在面板布局旁的 skitch-settings.log 中。在命令行上:zigzag skitch settings --label "what changed" --log settings.log。
  • zigzag capture FILE lists the Skitch conversation in a Bluetooth recording of Artspira, by command name, with changed settings bytes in [brackets] (--all for the upload and polling too, --raw for every ATT operation). It reads both:
    • iPhone:在手机上安装 Apple 的 Bluetooth 日志描述文件(developer.apple.com › Bug Reporting › Profiles and Logs),重启手机,将其连接到 Mac,然后在 PacketLogger(Apple 的 Additional Tools for Xcode)中选择 File › New iOS Trace;保存跟踪记录(.pklg)。
    • Android:开发者选项 › 启用蓝牙 HCI 监听日志,然后 adb bugreport 并从中获取 btsnoop_hci.log。

在已知布局并且对机器自身设置的原样写入能读回相同结果之前,写入设置不会进入 ZigZag。

Ink/Stitch 对等性

对照 Ink/Stitch 的功能和工具文档进行了检查:

Ink/Stitch ZigZag
走针、豆针、手动针迹;缎面柱(带横档的两条轨道)、E 针迹;榻榻米、轮廓、圆形(螺旋)填充 ✓
波纹、蜿蜒、十字绣和格子填充;S 针迹、锯齿和多色缎面 ✓
按对象设置参数,带面料感知默认值;起始/结束命令;修剪和停止命令 ✓(Stitch 面板的 Sewing 行)
自动布线(在填充内部穿行,沿轮廓下方走线)、跳转到描边 ✓(文档的 Connect gaps)
模拟器、针迹计划预览、密度图、堆叠顺序标签 ✓
文字(系统字体、弧线、路径文字、多行、大小写、缩放)、线色板、全部匹配、线套件 ✓(Brother 和 Janome 图表)
复制参数、按类型选择、翻转缎面方向、测试色块、清理、故障排除(Issues) ✓
导入针迹文件并在针迹级别编辑;PES/DST/EXP/JEF/VP3/PEC ✓
渐变填充、引导填充;红线绣、镂空绣;预数字化字体;60+ 线品牌;PDF 打印 尚未支持

Hatch 对等性

对照 Wilcom Hatch 的核心功能集进行了检查:

Hatch ZigZag
榻榻米、缎面、走针/三重走针、轮廓填充、毯子、贴布、手动针迹 ✓
自动底衬、拉布补偿、自动间距、缎面自动分割、短针迹 ✓
设置密度和补偿的面料设置 ✓(4 个预设)
使用 TrueType 字体的文字,直线、弧线和路径基线,在画布上键入 ✓(系统字体)
选择、移动、调整大小、旋转、镜像、复制、复制/粘贴、对齐到绣花框 ✓
手动数字化形状和手动针迹 ✓(钢笔工具)
移除重叠、颜色排序、重新排序对象 ✓
针迹播放器、显示针点、网格、测量 ✓
打开和保存 PES、DST、EXP、JEF、VP3 ✓(仅写入 VP3)
生产工作表 ✓(HTML)
自动数字化位图 ✓(图像描摹:扁平标志、色调分离照片、中心线)
内置刺绣字体、字母组合、多框绣、图案/花纹填充、3D 泡沫 尚未支持

状态

已验证:

  • 136 个库测试,153 个编辑器/MCP 测试(通过 egui_kittest 进行 UI 交互、完整的代理工作流、真实的 HTTP JSON-RPC 会话、原子批次、针对模拟机器的 Skitch 流程),无论是否内置蓝牙,外加内置 Image Trace 的 222 个测试。
  • 每个写入器(PES、DST、EXP、JEF、VP3)都通过 pyembroidery 读回,针迹位置完全一致;我们的读取器能读取 pyembroidery 写入的文件。
  • PEN 输出已与手工计算的序列进行核对。
  • Studio 在 Mesa OpenGL 上运行,并由 agent 通过 MCP 驱动。

已在真实的 Brother Skitch (PP1) 上测试。

截图和视频

用 ZIGZAG_CAPTURE=<folder> 启动 studio,⌃⌥⌘S 将窗口保存为 全分辨率 PNG;⌃⌥⌘R 开始和停止录制。 packaging/media/encode.sh <folder>/take-001 demo 将录制内容转换为 demo.mp4 和 demo.gif(需要 ffmpeg)。

致谢

参见 NOTICE 和 THIRD-PARTY-NOTICES.md,了解 ZigZag 所构建的库的许可证(更改依赖后,用 packaging/licenses/generate.sh 重新生成)。PES/PEC/DST 布局 和 Brother 调色板来自 pyembroidery(MIT)。 Image Trace 从 VectorCraft 引入 (MIT OR Apache-2.0),其曲线拟合、实时角点、吸附目标和颜色 差异也已移植(见 vendor/README.md)。 Tatami、satin 和短针迹方法遵循 Ink/Stitch。

来源:Hacker News · github.com