

UDap copper thief demo
kicad 10 盗铜生成管理工具
- Size
- 27.2 × 11.8 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 18
- Nets
- 34
- Pads
- 92
- Tracks, vias
- 150, 27
- Pours
- 72
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 18 Oct 2026
- Updated
- 18 Oct 2026
Overview
UDap copper thief demo is an open-source printed circuit board by TheBadZhang, from the TheBadZhang/copper_thief repository on GitHub, published under the MIT licence. It is a 2-layer board of 27.2 × 11.8 mm with 18 parts on 34 nets, routed with 150 tracks and 27 vias.
It is built around the CH32X035F8U6 and RT9013-30B. Its parts include 8 resistors, 3 capacitors, 2 ICs, 2 diodes and 2 connectors.
Main components
2README
README.mdCopper Thief / KiCad 盗铜生成器
在 Edge.Cuts 板框内,按规则阵列自动生成圆形或圆角正方形盗铜(copper thieving),并自动避让已有铜箔、板边、板框开槽、禁布区和钻孔。

上图由本插件在
demo/copper_thief_demo.kicad_pcb上实际生成,并经过 KiCad 10.0.6 DRC 验证(0 violations / 0 unconnected)。
1. 功能
- 图案:圆形,或四边相等的圆角正方形。
- 可调直径 / 边长、圆角半径、阵列净间距。
- 可调铜箔间距、板边间距;实际值会与板级 DRC 规则取较大者。
- 在板框内自动居中,也可设置 X/Y 偏移。
- 支持任意铜层:F.Cu、B.Cu、内层。
- 自动避让:
- 走线、圆弧走线、过孔、焊盘(含 PTH/NPTH/SMD/自定义焊盘)
- 已填充的铜区(Zone),包括铜区中的孔洞
- 铜层上的图形、文字、封装图形
- 板框开槽、圆孔、异形孔
- 焊盘/过孔钻孔(含槽孔)
- 禁布区 / Rule Area(保守处理:整个区域都避开)
- 与已有铜箔相交、间距不足或落在板外时自动跳过,并在预览中统计跳过原因。
- 生成结果统一放在一个
CopperThief组中,可用“删除现有盗铜”一键清理。 - 支持“同时避开相同网络铜箔”选项。
- 支持项目配置文件
<板名>.copper_thief.json,可保存任意多个命名配置,下次打开项目直接选择复用。 - 再次生成时可选择“替换整个组”或“追加到同一个组”,不会产生多个难以管理的组。
2. 安装
方式 A:运行安装脚本(推荐)
在 PowerShell 中:
cd C:\Users\lab\Desktop\copper_thief
powershell -ExecutionPolicy Bypass -File .\install.ps1默认安装到:
%APPDATA%\kicad\10.0\scripting\plugins\copper_thief如果使用 KiCad 9,可指定版本:
powershell -ExecutionPolicy Bypass -File .\install.ps1 -Version 9.0方式 B:手动复制
把整个 copper_thief 文件夹复制到:
C:\Users\<用户名>\AppData\Roaming\kicad\10.0\scripting\plugins\copper_thief目录结构应为:
...\scripting\plugins\copper_thief\
__init__.py
plugin.py
dialog.py
core.py
board_adapter.py
settings.py
icon.png然后完全关闭并重新启动 KiCad PCB Editor。
打开插件
PCB Editor 菜单:
工具 / Tools -> 外部插件 / External Plugins -> Copper Thief (盗铜)插件也会出现在工具栏(铜色圆点图标)。
3. 快速测试步骤
建议先复制一份 PCB 文件再测试,或先打开自带的 demo:
demo\copper_thief_demo.kicad_pcb3.1 在自带 demo 上测试
- 用 KiCad PCB Editor 打开
demo\copper_thief_demo.kicad_pcb。 - 打开
工具 -> 外部插件 -> Copper Thief (盗铜)。 - 铜层勾选
F.Cu。 - 网络选择
<无网络>(第一次测试建议这样,DRC 最干净)。 - 图案选择“圆角正方形”。
- 参数建议:
- 尺寸:
1.2 mm - 圆角半径:
0.25 mm - 阵列间隙:
0.35 mm - 铜箔间距:
0.20 mm - 板边间距:
0.50 mm
- 尺寸:
- 点击“预览数量”,应看到约 1000 个可放置位置。
- 点击“生成盗铜”。
- 在 PCB 中查看
CopperThief组;按E可查看任意一个图形的属性。 - 打开
检查 -> 设计规则检查器,运行 DRC。demo 上应没有新增的间距/短路错误。
3.2 在自己的板子上测试
- 先保存并备份 PCB。
- 打开插件。
- 先选择一个铜层(例如
F.Cu)和<无网络>。 - 用较小尺寸和较大间隙试跑:
- 尺寸
1.0 mm - 间隙
0.4 mm - 铜箔间距
0.2 mm - 板边间距
0.5 mm
- 尺寸
- 点击“预览数量”,确认数量和跳过统计合理。
- 点击“生成盗铜”。
- 查看效果;如果不满意,点击“删除现有盗铜”后重新调整参数。
- 最后再决定是否给盗铜指定网络。
4. 参数说明
| 参数 | 说明 |
|---|---|
| 铜层 | 可多选。每个铜层独立计算避让。 |
| 网络 | <无网络> 表示不分配网络;选择具体网络后图形会带上该网络。 |
| 形状 | 圆形 / 圆角正方形。圆角正方形四边相等,没有长方形。 |
| 尺寸 | 圆形为直径,正方形为边长。 |
| 圆角半径 | 仅正方形有效,范围 0 .. 边长/2。0 为直角,边长/2 近似圆。 |
| 阵列间隙 | 相邻图形边缘到边缘的净间距。中心距 = 尺寸 + 间隙。 |
| 铜箔间距 | 与其它网络铜箔的最小间距。会与板级最小间距、网络类规则、焊盘/铜区局部间距取较大值。 |
| 板边间距 | 与 Edge.Cuts 的最小间距。会与板级“铜到板边”规则取较大值。 |
| 自动居中 | 阵列在板框包围盒内居中。 |
| X/Y 偏移 | 在居中(或非居中)基础上平移整个阵列。 |
| 避开相同网络 | 勾选后,已有同网络铜箔也会被避开;取消后只避让不同网络。 |
| 最大尝试数 | 防止参数过小导致几十万次计算。超过会提示调整参数。 |
4.1 项目配置与多套参数
插件会在 PCB 文件同目录创建:
<板名>.copper_thief.json例如:
uDap.copper_thief.json使用方式:
- 调整好一套参数;
- 在“项目配置”下拉框中输入名称,例如“密集”“稀疏”“只 B.Cu”;
- 点击“保存配置”;
- 以后打开同一个 PCB,插件会自动读取该文件,选中名称即可载入全部参数;
- 点“删除”可移除当前选中的配置。
配置文件同时保存:铜层、网络、形状、尺寸、圆角、间隙、间距、偏移、最大尝试数等。
注意:
- 如果 PCB 还没保存到磁盘,无法确定项目目录,此时“保存配置”会提示先保存 PCB。
- 预览或生成盗铜时,当前配置也会自动写入项目配置文件。
- 项目配置和全局设置是两层:项目配置优先;没有项目配置时使用上一次的全局参数。
4.2 生成组
所有生成的铜图形会放入同一个 CopperThief 组:
- 勾选“生成前删除上一次生成的盗铜”:先删除旧组,再创建一个新组;
- 取消勾选:新图形追加到已有的同一个
CopperThief组,不会产生第二个组。
这样在 KiCad 的组列表中可以一次性选中、隐藏或删除整组盗铜。
5. 规则与避让说明
插件在生成前会读取:
- 板框
Edge.Cuts(含开槽/挖孔) - 板级设计规则:
- 最小铜箔间距
- 铜到板边间距
- 铜到钻孔间距
- 网络类(Netclass)间距
- 焊盘/铜区/走线的局部间距覆盖(Local Clearance)
- 所有选中铜层上的铜箔:
- 走线、圆弧走线、过孔
- 焊盘、通孔、NPTH
- Zone 的已填充铜皮
- 铜层上的图形、文字、封装图形
- 禁布区 / Rule Area(保守地整个避开)
- 钻孔和槽孔
任何一个候选位置不满足上述条件都会被跳过,并计入“跳过原因”统计。
重要:自定义 DRC 规则
KiCad 的 .kicad_dru 自定义规则(例如按区域、按网络名、按封装设置特殊间距)不会被插件解析。插件只使用板级设置、网络类和局部间距。生成后仍建议运行一次 DRC。
6. 关于“指定网络”和 DRC 未连接提示
盗铜通常是孤立的铜岛。
- 选择
<无网络>:- 不会产生网络未连接提示,DRC 最干净。
- 适合作为纯铜平衡/蚀刻均匀性用途。
- 选择具体网络(例如
GND):- 生成的每个图形都会带上该网络。
- 因为孤岛之间没有走线连接,KiCad DRC 会出现
unconnected items(未连接项目)提示。 - 这是孤立盗铜的电气特性,不是间距/短路错误。
- 如果必须连接到 GND,请在版图后期用走线、过孔或铜皮把它们连到 GND;或者接受/排除这些未连接提示。
- 也可以取消“同时避开相同网络的铜箔”,让盗铜有机会与已有同网络铜皮重叠/合并;但是否真正连通仍取决于版图几何。
插件界面和生成后的提示中也会说明这一点。
7. 找不到可放置位置怎么办
先点 诊断/导出报告,插件会生成:
%APPDATA%\kicad\10.0\copper_thief_diagnostic.txt报告会列出板框尺寸、每个铜层的铜箔数量、最大的铜箔/铺铜范围,以及候选位置和跳过原因。把该文件或“结果”框截图发给我即可定位。
也可以点“预览数量”,查看状态栏中的跳过统计:
- 候选位置为 0:板框内连一个图形都放不下。减小尺寸/圆角/板边间距,并确认
Edge.Cuts没有多余线段。 - 铜箔跳过最多:所选铜层几乎被已有走线、焊盘或铺铜覆盖。常见原因是该层有一整片 GND 铺铜。
- 换一个没有整片铺铜的铜层;
- 如果就是要用 GND 铺铜层,选择
GND网络并取消“同时避开相同网络的铜箔”,让盗铜与铺铜合并(但可能看不出独立铜岛); - 先在铺铜上挖出阵列窗口/禁布区,再生成。
- 禁布跳过最多:检查 Rule Area / Keepout 是否覆盖了可用区域。
- 板边跳过最多:检查板框、开槽、挖孔,或减小板边间距。
- 钻孔跳过最多:可用区域钻孔/安装孔较多,换区域或减小铜箔间距。
未填充或填充数据为空的 Zone 不包含实际铜皮,本插件会忽略它(不会再按轮廓整片避开)。如果希望这些 Zone 参与避让,请先在 KiCad 中重灌铜(编辑 -> 填充所有铜区)再试。诊断报告会显示 unfilled_zones= 数量。插件日志位于:
%APPDATA%\kicad\10.0\copper_thief.log8. 已知限制
- 阵列为轴对齐规则网格,暂不支持旋转阵列、交错/蜂窝阵列。
- 只支持圆形和圆角正方形,不支持长方形。
- 未填充/空填充的 Zone 没有实际铜皮,会被忽略;建议先重灌铜再做精确避让。
- Rule Area 无论具体限制类型(禁止过孔/禁止铺铜等)都整体避开(偏保守)。
- 圆弧板框会按 KiCad 多边形离散化,并额外保留 2 µm 规划余量。
- 自定义
.kicad_dru规则不参与计算。 - 生成项是铜层图形(
PCB_SHAPE),不是焊盘;会放在CopperThief组中。 - 插件通过 Python API 直接修改当前板,生成前请保存/备份。
9. 开发与测试
9.1 纯逻辑测试(不需要 KiCad)
python -m unittest tests.test_core tests.test_settings -v9.2 KiCad 集成测试(需要 pcbnew + kicad-cli)
使用 KiCad 自带的 Python(把路径改成你的 KiCad bin\python.exe):
$env:COPPER_THIEF_NO_REGISTER = "1"
$env:COPPER_THIEF_SETTINGS = "$PWD\tests\_artifacts\settings.json"
$py = "C:\Program Files\KiCad\10.0\bin\python.exe"
& $py -m unittest tests.test_integration -v测试会:
- 构造带板框、开槽、走线、焊盘、过孔、Zone、禁布区的板。
- 生成盗铜。
- 保存 PCB。
- 调用
kicad-cli pcb drc。 - 断言没有间距/短路/钻孔相关违规。
9.3 重新生成 demo
$env:COPPER_THIEF_NO_REGISTER = "1"
$py = "C:\Program Files\KiCad\10.0\bin\python.exe"
& $py demo\make_demo.py10. 目录结构
copper_thief/
__init__.py KiCad 插件注册入口
plugin.py ActionPlugin
dialog.py wxPython 界面
core.py 纯 Python 几何、避让、阵列规划
board_adapter.py pcbnew 读取/生成适配层
settings.py 参数持久化
icon.png 插件图标
install.ps1 Windows 安装脚本
.github/workflows/release.yml v* 标签自动构建并发布 Release
tests/
test_core.py 算法单元测试
test_settings.py 项目配置/多配置读写测试
test_integration.py pcbnew + DRC 集成测试
demo/
make_demo.py demo 生成脚本
copper_thief_demo.kicad_pcb
preview.png运行插件后,PCB 同目录会生成:
<板名>.copper_thief.json11. 版本记录
- 1.2.0:新增 PCB 同目录项目配置文件
<板名>.copper_thief.json,支持任意多个命名配置的保存、载入和删除;生成项始终归入同一个CopperThief组,支持替换或追加;新增v*标签自动构建并发布 GitHub Release 的 workflow。 - 1.1.0:修复“有 Zone 轮廓但没有实际填充数据”时被误判为整板铜皮、导致 0 个可放置位置的问题;未填充/空填充 Zone 现在会被忽略。新增“诊断/导出报告”按钮。
- 1.0.0:初始版本。
12. 许可
MIT License,见 LICENSE。
Parts
18| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | 47R | Resistor_SMD:R_0603_1608Metric | R1, R2, R3, R4, R5, R6 |
| 2 | 1uF | Capacitor_SMD:C_0603_1608Metric | C1, C2 |
| 2 | 4.7K | Resistor_SMD:R_0603_1608Metric | R7, R9 |
| 2 | LED | LED_SMD:LED_0603_1608Metric | D1, D2 |
| 1 | 0.1uF | Capacitor_SMD:C_0603_1608Metric | C3 |
| 1 | CH32X035F8U6 | Package_DFN_QFN:QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mm | U1 |
| 1 | Conn_02x05_Odd_Even | my_connector:双面贴片排针2x5 | J3 |
| 1 | RT9013 | Package_TO_SOT_SMD:SOT-23-5 | U2 |
| 1 | SW_MEC_5E | my_footprint:KEY-SMD_4P-L4.2-W3.4-P2.15-LS4.5-TL_1 | SW3 |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal | J1 |
More from TheBadZhang/copper_thief
1- 2 layers70 × 45 mm

Similar boards
- 4 layers23.5 × 12.5 mm

ProPrj ch32 tapioca probe mini 2026-09-03
pierrejay/ch32-tapioca-probe
CMSIS-DAP SWD/JTAG & WCH-Link RVSWIO/RVSWD debug probe implementation for CH32X035 (PIOC)
29 parts3 - 4 layers25 × 12.5 mm

- 2 layers72.4 × 41.2 mm

- 4 layers100 × 13.5 mm

Usbc soldering iron
ma-ale/usbc_soldering_iron
synched from https://git.alemauri.eu/alema/usbc_soldering_iron
82 parts - 6 layers30 × 50 mm

- 2 layers47 × 45 mm

- 2 layers42.3 × 55.8 mm

RSTM32F405RGT6 B
r-pv/STM32F405RGT6_STUnoPlus
An ST development board based on the STM32F405RGT6 MCU compatible with STM32Duino (Arduino).
53 parts9GPL-3.0 - 2 layers25.9 × 44.2 mm

M5StampC3
Uspizig/M5StampC3-EINK
Eink Board Addon for M5Stack Stamp C3 for Eink Waveshare Displays
38 parts4
Questions
How big is the UDap copper thief demo PCB?
It measures 27.2 × 11.8 mm and has 2 copper layers, 1.6 mm thick.
What parts does the UDap copper thief demo use?
18 parts, built around the CH32X035F8U6 and RT9013-30B. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the UDap copper thief demo KiCad files?
From the TheBadZhang/copper_thief repository on GitHub, at the commit this page was made from: the board is demo/uDap_copper_thief_demo.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the UDap copper thief demo design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).