Newshot
Account

Show HN:我的 300 美元刺绣机需要订阅,所以我自己做了一个应用

Translation(model translation, not the source's own text)

Show HN:我的 $300 刺绣机需要订阅,所以我构建了自己的应用

ZigZag

访问 zigzag.diy

ZigZag 是一个用 Rust 构建、以性能为目标的可视化刺绣编辑器,内置 MCP(Model Context Protocol)支持,让 AI 代理可以与你一起创建和编辑设计。将 SVG 图稿转换为针迹,在编辑器中微调,并导出 PES、DST、EXP、JEF 或 VP3,以广泛兼容刺绣机——或者通过蓝牙将设计直接发送到 Brother Skitch(PP1)。

在 Illustrator 中绘制、在 ZigZag 中绘制,或让代理来绘制。Rust 引擎和 zigzag 命令行工具在编辑器之外驱动相同的工作流。

查看 ZigZag 的实际效果

下载 Mac 版

下载 ZigZag.dmg

适用于 Apple Silicon 和 Intel Mac,macOS 11 或更高版本。打开 DMG,然后将 ZigZag 拖入 Applications。该版本已由 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 开发库。ble 的 libdbus 已内置。

针迹类型

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

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

规划器功能:

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

Mac 应用

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


        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 › Settings › Accounts › Manage Certificates › +),在 account.apple.com 创建应用专用密码,并将公证凭据保存到你的钥匙串:


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

该应用打包了工作室、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 时,应用为 ad hoc 签名,未经过公证。在构建它的 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

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

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

  • 左侧边缘是工具:选择(V)、直接选择(A)、抓手(H)、钢笔(P):点按创建角点,拖动创建曲线(Option 断开手柄,Shift 保持 45°,Space 移动正在放置的点);绘制过程中,Option 借用锚点工具(拖动线段使其弯曲,拖动手柄单独移动它,点按平滑点使其变为角点),⌘ 借用直接选择(拖动点或手柄,然后继续绘制),在选中的路径上 Option-拖动也可弯曲线段。其背后是 Illustrator 的钢笔组:添加锚点(+)在不改变轮廓形状的情况下点按添加一个点,删除锚点(-)点按删除一个点(按住 Option 时两者互换),锚点(Shift+C)在平滑点和角点之间转换点,并单独拖动手柄。按住钢笔(或右键点按它)可打开该组的浮出菜单,Option-点按可循环切换该组,或用浮出菜单边缘的条带将该组撕下成为独立工具栏;形状工具的工作方式相同。画笔(B),其组内包含 VectorCraft 的路径清理工具:平滑(沿路径拖动以消除抖动:更少的点、更平滑的曲线;平滑度在上方栏中设置)、路径橡皮擦(横跨路径拖动以切掉该部分)和连接(在两个开放端点之间刷过以连接它们,或在一条开放路径的两个端点之间刷过以闭合它)。形状(M 矩形,L 椭圆,\ 直线;按住或右键点按可切换多边形和星形)、填充角度(G)、测量(I)、文本(T)。在它们下方是所选对象的线色样本:点按它打开线色选择器。
  • 曲线,按 Illustrator 的方式:钢笔点按创建角点,点按-拖动创建曲线(拖动时按 Option 断手柄以实现急转弯;Shift 将点和手柄保持在 45°;按住 Space 移动正在放置的点)。点按最后一个点使其成为角点,或从它拖动以沿新方向开始下一条曲线。点按第一个点闭合形状;Enter、Esc、⌘-点按或切换到其他工具结束一条线并保留它。选中路径后,钢笔从开放端点继续它、在其轮廓上添加点、删除你点按的点,Option-点按可将点切换为角点 ↔ 平滑点(Option-拖动拉出新手柄)。绘制过程中,点按另一条开放路径的端点可将两者连接为一条。光标会显示点按将执行的操作。直接选择可拖动来自你 SVG 的任何形状的点和手柄(圆形和矩形会变为路径);拖动曲线会在指针下弯曲它(Option-拖动弯曲直线;普通拖动移动它);Delete 删除点,方向键微移它们。
  • 绘制时的智能参考线(View › Smart Guides,⌘U):钢笔点、形状角点和拖动的点会对齐到其他对象的锚点和中心、两条轮廓交叉处、轮廓上、从最后一点出发的 45° 射线(水平和垂直手柄也是),或与其中任一项成一线,并显示品红色标签说明是哪一种(“anchor”、“intersect”、“path”、“align”……)。按住 Shift 时,点保持其 45° 角度并滑入与最近目标成一线。
  • 圆角:在 Direct Selection 中,每个尖角内部都有一个小圆圈;向内拖动它即可让圆角化(选中的点或全部点),每个角只能圆到其边允许的程度。Object › Path › Round Corners… 也能实现同样效果,可用半径加上 Round、Inverted 或 Chamfer 选项,并实时预览。
  • 画笔(B),仿照 Illustrator 的 Paintbrush:手绘一条线,它会平滑输出,并按你设定的宽度缝成 satin 列(或作为 running stitch)。平滑度消除手部抖动;急转弯保持锐利;在起点处结束即可闭合线条。光标是一个与 satin 同宽的圆。
  • 形状,采用 Illustrator 的方式:Rectangle(M)、Ellipse(L)、Polygon、Star 和 Line(\)。从角上拖动;Option 从中心绘制,Shift 绘制正方形或圆、保持多边形或星形正立、使线条呈 45°。拖动多边形或星形时,↑/↓ 增加或减少边数或角数。不拖动直接点击可输入精确尺寸。画布顶部的工具条可切换形状,并设置圆角半径、边数、角数以及星形的内半径。闭合形状作为填充导入,线条作为 run 导入,均使用当前线色。
  • 路径工具:Object › Pathfinder(Unite、Minus Front、Intersect、Exclude;选中两个或更多对象时,Transform 面板中也有对应按钮)以及 Object › Path(Offset Path…、Outline Stroke、Simplify…、Round Corners…、Clean Up…)。Simplify… 是 VectorCraft 的滑块,从点数最少到最接近原始形状,实时预览,Auto-Simplify 会根据选区大小自动选择级别。Clean Up… 会清除散落点、太小而无法缝制的对象(默认小于 1 mm)以及多余的点(彼此重叠的点、直线中间的点),并先显示各类找到的数量。结果会以带真实角点的平滑曲线返回(最小二乘曲线拟合),而不是多边多边形。
  • 从图像制作 Logo(Image Trace):打开、拖入或放置 PNG、JPEG、WebP、GIF、BMP 或 TIFF,Trace Image 窗口会将其描摹为平色形状,并在你的帽子颜色上预览。选择颜色数量(或 Auto)、宽度、细节和要保留的最小色块;移除白色背景;将每种颜色吸附到你的 Brother、Janome 或自有调色板的线上;并将细线缝成单线。扁平 Logo 可精确描摹(边缘定位到亚像素精度,角点还原,圆和直线精确);照片会被色调分离。命令行也能描摹:zigzag convert logo.png -o logo.pes。
  • 上下文任务栏:位于选区下方,提供你接下来会做的操作:其针迹类型、其线色、Edit Points、Round Corners、Simplify、Unite(两个或更多)、Duplicate。View › Contextual Task Bar(或其 ••• 菜单)可将其隐藏。
  • 询问 agent:Agent 面板(在左侧停靠区中占满高度;工具条底部的闪光图标可打开和关闭它,⌘K 或 Window › Ask Agent… 可打开它并准备好提示词)在后台运行 Claude Code 或 Codex,连接到本工作室的 MCP server,因此你可以观看它构建设计。它只能使用设计工具(不能用 shell,不能编辑文件)。转录显示它说了什么以及每一步,正在运行的那一步带有加载指示器(这是唯一显示它的地方;折叠面板后,其标题栏会改为显示该步骤和时间)。在画布上,它正在处理的对象会获得移动的轮廓、闪光和说明其操作(Drawing、Placing、Restyling…)的标签,适用于任何通过 MCP 连接的 agent,而不只是该面板的。面板以 agent 命名(Claude Code 或 Codex;在其 ≡ 菜单中切换);标题栏中的 + 开始新对话,Stop 结束运行。使用你已登录的 claude 或 codex 命令。与任何面板一样,它可以浮动、作为标签页加入另一个面板或停靠到右侧;共享停靠区时它位于底部,上方有一条分隔条,拖动它可为其腾出更多空间。

文章标题:Show HN:我 300 美元的绣花机需要订阅,于是我自己做了一个应用

正文:

  • 线色与调色板:选择器显示最接近的 Brother/Janome 线色,一个可点击的调色板(Brother、Janome 或你自己的),以及一个小号自定义颜色字段。可以从零、从设计或从你拥有的线套件创建调色板(调色板的 ≡ 菜单 › New Palette from Thread Kit:Brother 的 12、40 和 22 色套装,或 40 + 22 共 61 色;然后 Match All 将设计匹配到你线盒里的线),用 + 添加所选线色,右键移除;它们在启动之间会被记住。
  • 线色面板:按缝纫顺序显示设计的线色(每个色块编号,附带其针数,同一线色连续出现两次处标有 "stop"),或按颜色(By Color)显示(每种线色一次,附带使用它的对象数量)。点击一行以选中它缝纫的内容;点击色样更改该色块的线色,或在 By Color 中更改该线色在所有位置的使用。Group Colors 以及换色和剪线次数在列表下方。面板的 ≡ 菜单有 Match All 匹配所选调色板,以及 Show Palette 在列表下方放置一个可点击的调色板(默认关闭,因为线色选择器已有相同的调色板)。
  • 面板,Illustrator 方式:Agent 独占左侧停靠区;Objects、Stitch、Transform、Lettering、Threads 和 Document 在右侧。设计的问题在状态栏(右下角):带计数的警告标志,或一切正常时的对勾;点击它(或 Window › Issues)查看列表,每项都链接到其对象。拖动面板的标题栏可重新排序、将其移到另一个停靠区,或放到画布上使其浮动(每个面板的 ≡ 菜单也有 Dock Left / Dock Right / Float)。将面板拖放到另一个面板的标题栏上,它们会作为标签页共用该处;拖出一个标签页(或使用 ≡ 菜单中的 Separate)将它们分开,拖动标题栏可移动整个组。停靠区顶部的 » 将其折叠为一条图标条以获得更大的画布:点击图标,面板会在图标条旁飞出(拖动图标可移动该面板)。点击标题栏可折叠面板;Window › Reset Panels 可恢复一切。布局会被记住。
  • 标签页,每个文档一个(如同 VectorCraft 和 Illustrator):打开、拖入或新建会在画布上方以独立标签页打开文件(你启动时的空文档会为第一个文件让位);已打开的文件只会被带到前面。每个标签页保留自己的撤销历史、选择、缩放和针迹。点击标签页切换,⌃Tab / ⌃⇧Tab(或 Window › Next / Previous Document)在它们之间步进,拖动一个以重新排序,中键点击或其 ×(或 File › Close,⌘W)关闭它;+ 打开新文档,» 在无法全部容纳时列出每个标签页。× 位置的圆点表示未保存的更改,关闭此类标签页会先询问是否保存。右键点击标签页可 Close Other Tabs 和 Copy Path。退出不会询问:每个标签页下次都会回来,各自带着未保存的更改。
  • 菜单栏(File、Edit、Object、View、Window),带有常用的 ⌘ 快捷键。在 Mac 上是真正的 macOS 菜单栏,在其他地方则绘制在窗口内。
  • 为每个工具绘制的光标:Pen 的笔尖(带点击将执行的操作),Shape、Measure 和 Fill Angle 工具的十字准线,Direct Selection 的空心箭头,以及旋转角上的弧形箭头。
  • 画布和 Objects 列表上的右键菜单,样式类似工具弹出菜单:先是带图标的针迹类型,然后是带快捷键的常用命令。
  • 在大设计上保持快速:每次更改只规划一次针迹,复用所有未更改的对象(重叠移除也是如此:移动一个对象只重做与它重叠的对象);规划耗时超过 12 ms 的设计会在后台规划(状态栏显示“Updating stitches…”,与此同时上一份规划仍留在屏幕上;当你放下移动过的对象时,它的针迹会随之移动,直到新的规划完成)。拖动点或对象以及输入时,会先预览而不重新规划,直到你松手。针迹驻留在 GPU 上:每个色块的线段只上传一次,并由 shader 绘制(包括线迹着色和针点),因此平移、缩放、拖动和针迹播放器在 CPU 上不会产生逐针迹开销,无论设计有一千针还是五十万针。Objects 列表只布局视图中的行。某个对象的针迹遇到内部错误时,会将其排除并在 Issues 中给出警告,而不是让整份规划崩溃。开发方面:TL_PROFILE=1 将每一帧的各个部分打印到 stderr,TL_NO_GPU=1 改用 painter 绘制针迹,而 cargo test --release --features gui --bin zigzag-studio perf_bench -- --ignored --nocapture --test-threads=1 会在一个描摹的 logo 上计时输入和拖动(examples/bench-grid.svg 是一个 213,000 针的设计,供 studio 本身使用)。
  • 跟随系统的浅色或深色外观(ZIGZAG_THEME=light|dark 可覆盖),并在 Mac 上使用 San Francisco 系统字体。
  • 为每个对象选择针迹类型:大按钮、任务栏、右键,或 F/S/R/C/X(Blanket 和 Manual 来自 Stitch 面板)。预览会实时重新规划。
  • 像 Illustrator 那样布局:拖动以移动(Shift:45° 步进;Option:拖动副本)。控制柄可自由调整大小(Shift 保持比例,Option 从中心调整大小,拖过对侧可翻转);在角稍外侧会旋转(Shift:45°)。智能参考线会将边缘和中心吸附到其他对象和绣框(View › Smart Guides,⌘U)。⌘D 是 Transform Again:Option 拖动一个副本,然后按 ⌘D 以相同间距复制更多。按住 Space 可用任意工具平移(轻点会播放绣出过程)。Transform 面板带有 Illustrator 的参考点:X/Y 显示所选点,W/H 围绕它调整大小。还有旋转、翻转、在绣框中居中、适应绣框(打开或放置时,大于绣框的图稿会缩小以适应;Undo 可恢复完整大小)、⌘C/⌘V、方向键微移 0.5 mm(Shift 5 mm)。编辑会保存为 SVG transforms。
  • 组的工作方式与 Illustrator 类似:单击或拖动会选中整个组;双击可进入组内(其余部分变暗,面包屑显示你所在的位置),再次双击可深入;按 Esc 或在空白画布上双击可退出。⌘-单击可选择单个对象而无需进入组内。图层(Illustrator 的 "Layer 1"、Inkscape 图层、Figma frames)不是组。复制、粘贴和再制会保留组。
  • 文字(T),和 VectorCraft、Illustrator 一样:点击文字应该出现的位置,直接在画布上输入(Enter 换行,完成后按 Esc 或在别处点击一下);点击文字,或点击文字字母之间,就能在点击处放置光标进行编辑(或用选择工具双击它,这会选中它整个框内的文字,并以框的形式显示,而不是字母的节点;删光所有字母后结束编辑,文字就被移除)(←/→、↑/↓、Home/End 和 ⌘←/→ 移动它;Backspace 和 Delete 删除两侧的字符;这些键配合 Shift、拖拽、双击选一个词、三击或 ⌘A 全选,都会选中文字,输入即替换,⌘C/⌘X/⌘V 复制、剪切和粘贴);点击一条已选中的路径,就能把文字放到上面。Lettering 面板是一个精简的 Character 面板(帽子上的文字不是长文案):字体(带搜索)、粗体/斜体、字高、字距、成对字距调整(选中那一对,或输入时按 Option+←/→ 调整光标处那一对)、水平和垂直缩放、大小写(按输入原样、UPPER、lower、Title)、两行文字的对齐和行距、基线(直线、上弧、下弧,或在路径上并带偏移和翻转),以及针法类型。Type 菜单里有路径文字、更改大小写、对齐和创建轮廓(⇧⌘O)。文字和其他形状一样:直接选择、圆角、简化、路径查找器和清理都对它有效(在第一次点级编辑时它会悄悄变成普通路径,只需一步撤销),在那之前它会保存为真正的 SVG 文字。
  • 钢笔(P):绘制带角和曲线的填充形状或线条,或者一针一针地放置手动针迹。显示网格时吸附到网格,否则吸附到智能参考线。
  • 形状(M、L、\):矩形(带圆角)、椭圆、多边形、星形和线条。
  • 测量、mm 网格、针点、首/末、按颜色分组。
  • 打开机器文件(PES、PEC、DST、EXP、JEF)进行查看、缩放并重新导出,也可以打开图像进行描摹。
  • 按类型设置:填充角度(有拖拽设定角度的工具,A)、间距、长度、拉力补偿、打底。Satin 选项:柱形还是边框、针法(satin、S-stitch、zig-zag)、横跨柱形的线数、宽度、打底遍数、短针。轮廓和波纹:环状或螺旋。十字绣:格子大小。格纹:条纹(各自颜色和宽度,镜像)、角度、行距。走线选项:单针或三针。
  • Stitch 面板中的缝纫行:起点和终点(点击轮廓;绿色和红色标记可以拖动)、对象之后的剪线和停机。Edit › Copy / Paste Stitch Settings 把一个对象的类型和设置复制到其他对象(每个对象保留自己的线和起点/终点);Edit › Select Same Stitch Type;Object › Path › Reverse Direction 从另一端开始缝一条路径。
  • 测试色板(Object › Test Swatches…):把选中的对象复制成网格,让某一项设置(间距、长度、拉力补偿、satin 宽度、填充角度)从一个值逐步变到另一个值,每份都标上对应数值,以便实际缝在真实面料上比较。
  • View › Density Map 会给针迹堆积的地方着色(从每 mm² 2.5 针起为黄色,4 针为红色),View › Sewing Order 会在画布上给对象编号。
  • Document 面板里的面料预设、绷框、Remove overlaps 和 Cap order。按你帽子的颜色预览。
  • 问题列表(状态栏):问题会链接到对应对象。Satin 会在画布上显示其边轨。
  • 缝纫顺序:Earlier/Later。针迹播放器(Space)。一切都可以撤销/重做。
  • 保存(Ctrl/⌘ S)会把设置写入 SVG;导出 PES/DST/EXP/JEF/VP3/PEC/PEN,或导出工作表(HTML:图片、尺寸、时间、每个换色点以及最接近的 Brother 和 Janome 线号);Send to Skitch。
  • 测量与单位。测量(I)的工作方式与 VectorCraft 相同:在两点之间拖动即可读取距离、角度、宽度和高度。端点会吸附到点、边缘和绣框(开启网格时则吸附到网格),按 Shift 可将线保持为 45°,读数会一直保留到下一次拖动(按 Escape 清除)。视图 › 单位,或状态栏中的单位菜单,会以毫米、厘米、英寸、点或像素(SVG 像素,1/96 英寸,因为文件是按此读取的)显示尺寸、位置、距离和网格;该设置会在每次启动之间保留。任何长度字段也接受手动输入的单位或求和表达式(1/4 in、25.4mm、10+5)。网格(⌘')跟随单位,英寸以 1/2 为步进直到 1/32,并沿画布顶部和左侧边缘从绣框中心开始标注其主线。针迹设置(间距、密度、拉移补偿)保持以毫米为单位。
  • 从上次中断处继续。退出(或崩溃)后重新打开:相同的文件会回来,每个有任何未保存更改的标签页、缩放和选区,以及同一个标签页在前台。更改会在你工作时保留(session.json 和每个标签页一个恢复文件,recovery.svg、recovery-2.svg…,位于 ZigZag 的设置文件夹(~/Library/Application Support/ZigZag),每个文件要么完整写入要么完全不写),在你保存之前绝不会写入你的文件。带文件打开应用会跳过此过程。如果应用在恢复文档时崩溃,下次启动会将其保留为 recovery-crashed.svg 而不是再次尝试(无法读取的则保留为 recovery-unreadable.svg),并在状态栏中说明。Skitch 上的任务也会恢复:最后发送的设计会被保留(sent.json),Skitch 窗口如果之前打开则会重新打开并重新连接,一旦机器报告该设计,其进度会再次显示在上面(机器保留设计和针的位置;停止会在两边结束任务)。

智能体(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 mm 的圆形徽章,带山峰和太阳,检查一下,然后给我看预览。”

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 工作流

用 File → Export → Export As → SVG 导出(Styling: Presentation Attributes,Object IDs: Layer Names)。将文字转为轮廓,否则会回退到系统字体。将 ZigZag 保存的 SVG 重新在 Illustrator 中打开,设置会保留在图层名称中。

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

Token含义
fill satin run skip针法类型
a=45填充角度(度)
s=0.3行 / 锯齿间距(mm)
l=3最大针迹长度(mm)
pc=0.2拉布补偿(每侧 mm)
w=3satin 宽度(mm)
border沿填充形状的轮廓走 satin,而不是横跨轮廓
u=0关闭底针
ul=center+contour+zigzagsatin 底针走法( ul=none )
ss=0关闭短针
r=3走针遍数(3 = bean)
contour blanket applique manual其他针法类型
split=7satin 自动分割长度(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 窗口(工具栏的 Send 按钮或 File › Send to Skitch…)负责整个任务,就像切片器的设备页面跟随打印一样:左侧是设计,右侧是要做的操作,顶部是各个步骤(Connect · Home · Send · Trial · Sew · Done)。

  • 连接并配对。它会扫描 Skitch。首次使用时,按住 Skitch 的蓝牙按钮直到它发出提示音,然后点击 Connect(或 Try Again);如果电脑请求配对,请接受。在 Mac 上,Skitch 从不会出现在 System Settings › Bluetooth 中(它是蓝牙 LE 设备):当 ZigZag 连接时它才会配对。如果 macOS 请求,请允许 ZigZag 使用蓝牙(Privacy & Security › Bluetooth)。先关闭 Artspira:Skitch 一次只与一个应用通信。
  • 回原点(Home)。刚开机的机器会要求回原点(取下绣花框,点击 Accept,再装回绣花框);窗口会显示步骤,完成后继续。
  • 发送(Send):显示设计将在绣花框上实际缝纫的位置:As Placed(按它在工作室绣花框中的位置,这样你可以把它放在帽子的较高处)或 Centered(居中);按缝纫顺序列出需要准备的线,使用 Brother Embroidery 名称和编号;一份“缝纫前”检查清单;Send Design。
  • 试运行(Trial run,Brother 的叫法;发送后默认开启):在机器上按 Accept,针会沿设计轮廓走一圈但不缝纫,这样你可以检查它是否避开了绣花框的磁铁、接缝和帽檐。每次重新上框后都再次 Trial。
  • 缝纫(Sew):点击 Start,然后在机器上按 Start。画面显示已缝的部分,未缝的部分淡化显示,并显示当前针位和当前线;下方是线的时序轴,标出针的位置。侧边显示进度、剩余时间、当前线和下一根线,并在每次换线时准确告诉你该换哪根线。画布和状态栏也会同步更新。

Show HN:我的 $300 刺绣机需要订阅,所以我构建了自己的应用

  • 开始 / 暂停 / 停止。开始(或继续,或再次缝制)使机器就绪;暂停是 Skitch 自带的开始/停止按钮(无法通过蓝牙暂停);停止会结束任务,将设计从机器上移除。暂停时,可沿时间轴拖动,或将针步进 1、10 或 100 针,或回到线的起点,然后继续。
  • 错误会说明是什么以及该怎么做(断线、梭芯、针板、绣花框)。断线后,针会回到断口处(面线 6 针,梭芯线 2 针,与 Artspira 的做法一致)。
  • 将其最小化(–)以便在刺绣时继续工作:画布重新变为你的设计,状态栏右侧的机器图标会显示它正在做什么以及进度,并带有一个小进度条(点击可恢复窗口)。当机器需要你时,窗口会自动回来:换线、错误或结束。
  • ••• 菜单还链接到 Brother 的 Skitch 操作视频(穿线、梭

Show HN:我那台 $300 的刺绣机要订阅才能用,所以我做了一个自己的应用

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

Hatch 对等性

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

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

状态

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

尚未在真实的 Skitch 上运行。

截图和视频

用 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)。榻榻米、缎面和短针方法遵循 Ink/Stitch。

The translation is machine-generated and individual terms may be off. Nothing is rewritten or cut; the original is authoritative.

Published by Hacker News
This site only summarises and aggregates; copyright stays with the original author. Headlines and summaries follow the source — where they differ, the original wins.
Read the original ↗