Community编程与开发github.com

markwkiehl/fritzing

通过代码构建、检查和编辑 Fritzing 草图(.fzz 和 .fz 文件)。根据一个网表生成面包板、原理图和 PCB 视图,添加自定义部件(.fzp 和 SVG 文件),并通过导出 SVG 文件以及在实际的 Fritzing 窗口中打开来验证文件可加载。当用户提到 Fritzing、.fzz、.fz、.fzp 或 .fzpz 文件,或者要求在 Fritzing 中布线、布局或绘制电路时使用此技能。同样适用于 Fritzing 部件相关任务。

fritzing 是什么?

此技能是 Fritzing 草图的全栈代码生成与验证工具。它使您能够从网表(引脚连接列表)出发,自动生成包含面包板、原理图和 PCB 三种视图的 `.fzz` 文件。技能内置了两个生成器示例:一个仅使用 Fritzing 内置核心部件(如电池座、按钮、电阻和 LED),另一个展示了如何编写自定义部件(`.fzp` 文件及四个 SVG 视图图像)。此外,还包括一个核心部件检查器(`scripts/check_core_part.py`),用于验证部件所需图像文件是否齐全,以及两个草图验证器:无头导出检查器(`scripts/fritzing_export.py`)将每个视图导出为 SVG 文件,以及 Windows 专用的窗口截图脚本(`scripts/fritzing_gui_shot.ps1`)用于捕获实际 Fritzing 窗口的状态栏(如是否显示“Routing completed”)。该技能主要针对 Windows 和 Fritzing 1.0.x 版本进行了测试,支持 macOS 和 Linux 但未经验证。技能中包含详细的文件格式参考(`references/fz-file-format.md`)和严格的使用规则,例如在构建前必须检查部件图像文件、不猜测引脚连接、最终须由人工在 Fritzing 窗口中验证结果。

兼容平台✓Claude Code~Codex CLI~Cursor
Part ofMobile
npx skills add https://github.com/markwkiehl/medium_claude_fritzing/tree/HEAD/skills/fritzing

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

从代码生成 Fritzing 草图

本技能提供的能力

  • 一种将网表(连接在一起的引脚列表)转换为包含三个视图(面包板、原理图和 PCB)的 .fzz 文件的方法。
  • 两个可运行的生成器示例。可以复制其中一个,然后修改部件和网表。
    • scripts/build_fzz_battery_led.py 仅使用 Fritzing 自带的部件:电池座、按钮、电阻和 LED。可以从这个开始。
    • scripts/build_fzz_header_led.py 演示了如何将自定义部件(一个 .fzp 文件和四个 SVG 文件)写入草图。
  • 部件检查器 scripts/check_core_part.py。它可以告知核心部件是否包含所有必需的图像文件。
  • 无头检查器 scripts/fritzing_export.py。它在 Fritzing 中加载草图并将三个视图导出为 SVG 文件。
  • 窗口检查器 scripts/fritzing_gui_shot.ps1(Windows)。它截取 Fritzing 窗口的屏幕截图,以便读取状态栏信息。
  • 文件格式事实记录在 references/fz-file-format.md 中。在编写任何 .fz XML 之前,请先阅读此文件。

测试内容

  • 已验证:Windows 11 + Fritzing 1.0.x,安装在 C:\Program Files\Fritzing。examples/ 中的两个示例草图均能构建、导出为 SVG、在 Fritzing 窗口中打开并显示三个视图的“Routing completed”,且通过了 PCB 设计规则检查。检查日期:2026-11-07。
  • 未测试:macOS、Linux、Fritzing 1.0.x 以外的版本、自动布线以及包含多个部件的电路。

Claude 的规则

  • 不要猜测部件的引脚。请读取其 .fzp 文件并列出其连接器。在构建之前,将其与网表进行比较。
  • 在使用每个核心部件之前,先用 scripts/check_core_part.py 进行检查。如果部件的图像文件缺失,绘制时将是空白的。
  • 未经用户同意,不要下载任何文件,除非用户提供了链接。请告知文件名、来源和大小。将每个下载放在其自己的新空文件夹中。不要运行其中的任何内容。
  • 不要因为生成器运行成功就说草图“工作正常”。Fritzing 必须能够加载它,并且每个视图都必须显示每个部件。报告你没有检查的内容。
  • 最后的检查需要人工完成:让用户在 Fritzing 窗口中打开文件,并描述他们所看到的内容。应修复生成器,而不是手动修复文件。
  • 每次都要写出每个文件和部件的完整名称。

工作流程

找到 Fritzing 及其部件库

  • Windows(已验证):Fritzing 位于 C:\Program Files\Fritzing\Fritzing.exe。部件库位于 C:\Program Files\Fritzing\fritzing-parts。示例草图位于 C:\Program Files\Fritzing\sketches\core。阅读它们以复制 Fritzing 自己编写的精确 XML。
  • Linux(本仓库未测试):Fritzing AppImage 可以使用其 --appimage-extract 选项解压到一个新的空文件夹中。部件库随后位于 squashfs-root/fritzing-parts。
  • macOS(未测试):部件库位于 Fritzing 应用程序内部。寻找名为 fritzing-parts 的文件夹。
  • 脚本将从用户自己的 Fritzing 安装目录读取部件库。将环境变量 FRITZING_PARTS 设置为该文件夹。

检查部件

  • 列出你需要的部件,并逐一查找:python scripts\check_core_part.py "C:\Program Files\Fritzing\fritzing-parts" <部件名称>。添加 --all battery 可列出标题中包含“battery”的所有核心部件。
  • 每个部件会输出 OK 或 MISSING,以及连接器数量和模块 ID。显示 MISSING 的部件将在图像文件缺失的视图中绘制为空白。
  • 2026-11-07 测试安装中的示例:核心部件 screw_terminal_2_100mil 缺少其原理图和 PCB 图像,核心部件 Battery block 9V 缺少其 PCB 封装(jumper_2_100mil_pcb.svg)。核心部件 4 x AAA Battery Mount 是完整的。
  • 如果没有合适的核心部件,可以绘制一个。scripts/build_fzz_header_led.py 有一个示例:一个 .fzp 文件和四个 SVG 文件。
  • 如果来自其他来源的部件缺少引脚,请复制该部件,为其赋予一个新的 moduleId,并添加连接器。将引脚添加到面包板 SVG、原理图 SVG 和 PCB SVG 中。

构建

  • 复制 scripts/build_fzz_battery_led.py。修改部件、孔名称、坐标和网表。
  • 将网表写成一个成员列表。脚本会根据自己的接线列表在所有三个视图中检查接线,并检查 PCB 走线间距。
  • 首先选择面包板布局,然后是原理图,最后是 PCB。使用 references/fz-file-format.md 了解孔名称、比例、图层名称和变换。
  • 对于具有可弯曲引脚的部件,请从 Fritzing 示例草图中复制引脚的 XML。不要猜测(参见“之前出现的问题”)。

检查

  • 运行 python scripts\fritzing_export.py "C:\Program Files\Fritzing\Fritzing.exe" <sketch.fzz> <new empty folder>。阅读打印的每一行。它会输出 <name>_breadboard.svg、<name>_schematic.svg 和 <name>_pcb.svg。
  • 以图片形式查看 SVG 文件。在 Windows 上的一种方法:编写一个包含 <img> 标签显示 SVG 文件的 HTML 页面,然后运行 msedge.exe --headless --window-size=W,H --screenshot=<out.png> file:///<page.html>。查看生成的 PNG 图片。导出只显示铜层,不显示丝印轮廓。要获取带轮廓的 PCB 图片,请使用 scripts\fritzing_gui_shot.ps1 在 Fritzing 窗口中截取 PCB 视图的屏幕截图,并裁剪出板子(examples/ 中的 PCB 图片就是通过这种方式制作的)。
  • 对于每个部件,检查三件事:它被绘制出来、它的引脚位于孔上、以及每条导线端部都接触一个引脚。
  • SVG 导出不会绘制飞线(显示未连接连接的细线)。因此它不能证明 Fritzing 已注册连接。在 Fritzing 窗口中打开草图。
  • Windows,在实际的 Fritzing 窗口中:
    • 使用 Start-Process 启动 Fritzing.exe "<sketch.fzz>"。等待 25 秒。
    • 运行 scripts\fritzing_gui_shot.ps1 -Out <png> 获取当前视图,然后使用 -Keys "^3" 获取原理图视图,使用 -Keys "^4" 获取 PCB 视图。读取每个 PNG 图片。
    • 在每个视图的状态栏中查找“Routing completed”,并查找绿色的连接点。
    • 对于设计规则检查,在 PCB 视图中使用 -Keys "^+d" -Wait 5 运行脚本。干净的草图应显示“Your sketch is ready for production: there are no connectors or traces that overlap or are too close together.”
    • 关闭对话框并运行 Stop-Process -Name Fritzing。

报告

  • 说明你检查了什么以及如何检查的。说明你没有检查什么。以完整路径命名你编写的文件。
  • 告诉用户如何打开文件:在 Fritzing 中,File → Open。

之前出现的问题

  • 核心部件的图像文件从安装目录中丢失了。 部件绘制为空白。在使用部件之前运行 scripts/check_core_part.py。
  • 部件绘制为空白。 当面包板 SVG 没有 <g id="breadboard"> 组时,Fritzing 1.0.x 不会绘制任何内容。将整个内容包裹在该组中。
  • 导线端部看起来正确但未连接。 .fz 文件必须在两个项目中都列出每个连接。每对连接写一个 link() 调用,并发出两侧。
  • 具有可弯曲引脚的部件(LED、电阻、二极管、电池座)。 在 .fz 文件中,连接器 <geometry x y> 是 SVG 中引脚线体端的位置,乘以比例。<leg> 的第二个点是尖端,相对于该点。对于 5mm LED,尖端偏移量为 (0, 30.5172)。对于电池座,偏移量为 (6.25, 0)。Fritzing 自己的示例草图显示了这一点。
  • 比例错误。 场景单位是 1/90 英寸。使用 in 单位的 SVG 按 90 × width_in / viewBox_width 缩放。使用普通 px 单位的 Illustrator SVG 被视为 72 dpi,因此乘以 1.25。
  • 找不到原理图端子。 某些原理图 SVG 文件将端子隐藏在 <g> 元素内,而有些则根本没有端子。读取 SVG 文件,取引脚线的外端。LED 原理图 led.svg 的阴极端子位于 (9.9005, 21.8165),阳极端子位于 (9.9005, 0.2165),单位为 72 dpi。
  • 旋转后的部件落在孔外。 使用参考文件中的变换公式。通过一个引脚的位置(而不是通过其角落)来放置部件。
  • 走线交叉。 将两条走线放在不同的层上。通孔焊盘连接两个层,因此不需要过孔。
  • Python。 脚本仅使用标准库。它们不需要安装任何额外的包。

技能中的文件

  • SKILL.md:本文件。
  • references/fz-file-format.md:.fzz 和 .fz 格式,包含 XML 示例、比例、图层名称和公式。
  • scripts/build_fzz_battery_led.py:仅使用核心部件(电池座、按钮、电阻、LED)的生成器。
  • scripts/build_fzz_header_led.py:同时编写自定义部件(一个 2 针排针)的生成器。
  • scripts/check_core_part.py:检查核心部件是否拥有其所有图像文件。
  • scripts/fritzing_export.py:无头加载和导出检查器。
  • scripts/fritzing_gui_shot.ps1:激活 Fritzing 窗口,可以发送按键,并保存屏幕截图(Windows)。
  • examples/battery_led.fzz 和 examples/header_led.fzz:两个生成器编写的草图,附有每个视图的图片。

相关技能