
1. 为什么直接 CtrlV 在 PCB 里总是得到一份半残废的复制品1.1 网路并不会跟着图案一起走我在刚开始画板子的时候犯过一个很蠢的错误把已经布好线的一块电源电路连同电阻电容一起选中按下 CtrlC再 CtrlV看起来整块东西都复制过去了位置也基本对得上。结果跑 DRC 的时候跳出来一堆 Un-Routed Net 和 Duplicate Designator我当时还以为是软件抽风。后来才算真正搞明白PCB 编辑器里的复制并不是把一块物理图形原样搬过去你复制的是对象的图形属性加上附加属性。普通 CtrlV 走的是最简单的贴入逻辑它会尽量把图形放在你鼠标附近但不会主动帮你保留网路关系。网路是对象的逻辑属性不是跟着铜皮外形走的。你复制一条 NetLabel 为12V的 Track如果粘贴时没有告诉 AD20我要保留网路名字那贴出来的就是一条看起来一模一样、但 Net 一栏为 No Net 的铜线。这种东西放在板子上视觉上好像连上了实际上电气上完全断开。这也就是很多人复制之后发现明明线都搭上了为什么还说开路的根本原因。铜皮是铜皮网路是网路两者在 Altium 的数据模型里是分开的。你不能指望 CtrlV 去猜测你的意图它只会做最低限度的粘贴操作。1.2 参考点第二个经常被忽略的关键除了网路丢失还有一个问题大家都遇到过复制一整块电路后粘贴时东西老是以你选中的原点为基准往外甩鼠标拖到哪里块就跟着偏移到哪里想把它放到某个精确坐标旁边就得来回微调。这是因为在复制之前你没有设置参考点。AD20 的 PCB 编辑器里Edit Set Location Marker这个命令就是干这个的。它的作用是告诉软件接下来复制的内容以我当前鼠标点的这个位置作为锚点。比如你要复制一个以 C1 为中心的区域那就先在 C1 的某个焊盘上点一下 Location Marker再选中、复制、粘贴这样粘贴时鼠标就能精确地对准 C1 焊盘的位置。很多教程不会强调这一步因为它看起来和网路没啥关系。但实际做模块复制时参考点直接决定了你后续摆放的效率。一次复制多个模块如果每个模块都靠放进去再微调那效率基本就废了。我通常会在源电路里选一个最有代表性的焊盘或者元件原点作为 Location Marker这样贴过去之后只需按一下G设置好栅格就能非常精确地对齐到目标位置。2. Paste Special 对话框里每一项都是什么意思2.1 Keep Net Names 才是真正的救星当你选中对象、按 CtrlC 后不要急着 CtrlV而是用Edit Paste Special。弹出的这个对话框才是 PCB 复制的高级入口。里面最关键的选项就是Keep Net Names。它的作用非常直白把复制对象身上的网路名字也一起放进剪贴板并在粘贴时尝试将这些网路重新应用到你当前 PCB 上。这里有个容易被误解的点。它不是说粘贴后自动找最近的焊盘接上而是说如果这个 PCB 里已经存在同名的网路那就把这个网路分配给粘贴出来的对象如果不存在同名网路就新建一个同名网路。所以复制同板内容时网路保留得非常干净即使是复制到另一个项目、另一块 PCB只要网路名匹配上也能直接保留。我在实际布线中几乎总是把这个选项勾上不管对方是 Track、Via 还是元件引脚。就算暂时不需要网路保留下来也不会带来副作用真正该担心的是不勾它带来的后续麻烦。2.2 Duplicate Designator 控制的是元件位号处理元件的时候第二个关键选项是Duplicate Designator。勾选它的意思是复制出来的元件位号不要和源元件重复AD20 会自动给新元件分配一个和当前 PCB 上已有位号不冲突的编号。比如说你复制了 R12它会自动变成 R23 或其他未使用的编号而不是让你在板子上出现两个 R12。如果不勾选那复制出来的元件位号会和源件一模一样AD20 通常会在 DRC 时报 Duplicate Designators。有人说那我手工改一下位号就行了但如果你复制的是一个包含大量元件的模块手工去改几十个位号纯属给自己找罪受。有一点必须说清楚Duplicate Designator 只处理位号不处理网路。网路保留与否完全看 2.1 那个选项两者是独立的。很多人把这两个选项当成一回事勾了 Keep Net Names 却没勾 Duplicate Designator结果贴出来的元件位号全是一样的然后又跑来问我为什么 DRC 里一片红。原因很简单你少勾了一个。2.3 其他选项什么时候用Paste on current layer这个选项默认是关闭的。它的作用是强制把所有粘贴对象放到当前激活层不管你复制的时候对象原本在 Top Layer 还是 Bottom Layer。如果你只是想把一段走线从顶层复制到底层用它就很省事但如果你复制的是包含多层走线的完整模块那我建议不要勾让它保留原有图层信息。Add to component class在你用 Class 做规则管理时有用。比如把复制出来的一整块 DC-DC 电路自动归入某个 Component Class方便统一设置布线宽度和间距规则。如果项目里还没用到 Class那就无关紧要。Net Names 保持勾选不用多说见上文。提示Paste Special 对话框里的选项只影响当前这次粘贴不会改变默认行为。所以你不用担心下次普通 CtrlV 会突然多出什么奇怪属性。3. 复制 Track / Via / 铜皮区域时的正确操作顺序3.1 从区域选择到摆放的完整流程以最常见的把一组电源走线连同过孔复制到另一块区域为例正确顺序是这样的在 PCB 里用鼠标框选要复制的图元如果有不需要的元件按住Shift单击取消选择或者用编辑器右下角的 Filter 面板把选择对象限定在 Tracks、Vias、Fills、Arcs 这几类避免误选元件和丝印。执行Edit Set Location Marker然后在要复制的电路里点一个你熟悉的位置比如某个滤波电容的焊盘中心。按CtrlC。注意此时命令行会提示选择参考点但因为你已经设置过 Location Marker它就直接以刚才的点为参考了。执行Edit Paste Special在对话框里勾上Keep Net Names其他选项按你的目标图层决定。确认后鼠标会带着对象出现。移动到目标位置按G切换栅格精度找到对应的焊盘或坐标点放下。这套流程看起来平淡无奇但你仔细体会一下里面的关键不是哪一步而是每一步都在为下一步减少信息损失。Location Marker 保证的是空间位置不漂移Keep Net Names 保证的是逻辑属性不丢失。3.2 目标位置的网路已经存在会发生什么这是很多人最担心的一个问题我要贴过去的位置本来就已经有3V3这个网路的焊盘了那我贴过去的 Track 是3V3它们会不会自动合并。答案是会。AD20 会用你贴过去的对象所属的网路名字去匹配只要名字一样它就认为是同一个网路。你贴过去的 Track 只要和原来那个网路在物理上是连接的DRC 就会把它当成同一个网路的一部分。不需要你做任何额外操作。如果目标位置的网路名字和你剪贴板里的网路名字不一样比如源文件里叫3V3_A目标 PCB 里叫3V3那贴过去之后这个 Track 的 Net 属性就是3V3_A。这时候哪怕它和3V3的焊盘外形完全重合电气上也是两个网路DRC 会报短路。遇到这种情况不要想着反正连上了必须手动在 PCB Inspector 面板里把3V3_A改成3V3或者通过Design Netlist Configure Physical Nets做一次网路合并。3.3 用 PCB Inspector 确认粘贴结果贴完之后我强烈建议你随手点一下贴过去的一根走线打开 PCB Inspector 看看 Net 栏。这一步花不了两秒钟但能避免你把一堆 No Net 的走线留到 DRC 阶段。尤其是从别的项目复制过来的内容因为源文件的网路不在当前项目里AD20 虽然会新建同名网路但网路类、规则这些附加信息不会跟过来你得自己在 Netlist 里补。我见过不少人复制完线看起来整整齐齐结果后面手工补了一块铜皮发现怎么铺都铺不进原来的网路查了半天才发现是铜皮属性里 Net 是 No Net。这种事其实在复制粘贴场景里太常见了根源就是你少看了一眼属性面板。4. 复制元件并保留网路一个电机驱动模块的实操记录4.1 什么时候你才需要用这种方式复制元件复制带网路的元件和复制光秃秃的元件是两码事。如果你只是想把一个封装复制出来之后网路全靠原理图更新那用普通复制粘贴就够了。但我碰到最多的情况是在 PCB 里已经有完整网路的阶段想在同一块板子上快速做重复通道。比如一个电机驱动板上有两路桥臂第一路已经布好线、摆好位第二路想完全照抄然后再通过原理图同步把位号对回去。这时候你就需要在复制元件的同时保留它们焊盘上的网路。另一种常见场景是某个大 BGA 芯片周围有一圈去耦电容你想在另一个引脚区域也摆上同样的一组电容。如果只是复制元件不带网路你还得一个个手工去分配网路那还不如直接放新元件然后按原理图更新。所以保留网路这个能力真正的价值在于你已经知道目标区域的网路和源区域相同或者你打算后续再利用这些网路名字做批量操作。4.2 带元件的完整操作我的习惯是把元件和它周围的去耦电容、走线、过孔一起选中然后参考点放在电源芯片的某个输出引脚上。操作如下先选中要复制的元件组包括它们的位号丝印。为了方便可以用 Filter 把 Component、Track、Via、Fill 都勾上Dangling 和 Error 之类临时标记不要勾。设置 Location Marker放在源电路最核心的焊盘上。CtrlC复制。打开Edit Paste Special勾选Keep Net Names和Duplicate Designator其他按需选择。放到目标区域。贴完之后你会发现新贴的元件位号已经被自动改成不冲突的编号而且每个焊盘上的网路属性都保留着。比如源电容 C12 的两个焊盘分别属于VIN和GND复制后出来的 C56 也是VIN和GND。画完板子之后再把原理图里的重复通道位号同步过来就完事了。4.3 AD20 Unknown Pin 和封装问题的坑在复制元件的时候偶尔会遇到选中一个元件按下 CtrlC 之后状态栏提示 Unknown Pin。这个问题的根源通常不是复制本身而是这个元件的 PCB 封装在本地库里找不到了或者封装里的焊盘编号和原理图库不一致。AD20 在读取复制对象时需要通过焊盘信息构建内部数据一旦某个 Pin 的编号在封装里找不到对应位置它就会报 Unknown Pin。遇到这种事情先别急着复制。你要做的是打开那个元件所在的 PCB Library检查它的焊盘编号是否完整。比如原理图库里的引脚叫1, 2, 3但 PCB 封装里只有一个1和一个3那第 2 脚就是 Unknown Pin。这种元件即使你不复制原封不动放板子上之后做 DRC 也会有问题。复制操作只是把这个隐藏问题暴露出来了而已。所以我的建议是复制前养成一个习惯凡是碰到 Unknown Pin先停下来修复封装或库关系不要带着问题继续复制。不然你复制出来的一整块模块里某几个引脚是没有网路属性的后面补起来非常痛苦。5. 粘贴后网路变成_1、位号冲突、开路修复流程一次讲透5.1 网路多出_1后缀是怎么回事粘贴后最诡异的现场是网路名明明在源文件里叫VCC贴完之后查看属性发现它变成了VCC_1。很多人的第一反应是AD20 出 bug 了。其实不是 bug而是 Altium 在试图避免网路冲突时采用的策略。当你复制的内容里包含网路VCC而当前 PCB 又已经存在VCC网路了正常情况下它会直接匹配并合并。但如果你复制的对象里包含某种和源网路不完全一致的信息比如网路类不同、物理连接不同AD20 就会为了避免冲突而创建一个新的网路名字VCC_1。这常见于你从另一个 PCB 文件复制对象时源项目的网路定义和目标项目不一致。解决方式不复杂打开 PCB 面板切到 Nets 模式找到VCC_1右键选择属性把它改成VCC。或者用Design Netlist Configure Physical Nets手动合并。改完以后注意看看连在VCC_1上的所有图元是不是都一起改了有时候走线改了过孔却漏了会造成开路。5.2 位号冲突的三种处理办法勾了 Duplicate Designator 一般不会出现位号冲突但如果你复制时没勾就会出现重复位号。AD20 里处理重复位号有三种常用手段按推荐程度排序重新标注Tools Annotation Force Annotate。它会扫描整个 PCB把所有重复或空白的位号重新分配。注意它可能把原来正常的位号也动掉如果你希望只修重复项记得在 Annotation 配置里选择 All 之外的选项。手动改 PCB Inspector适合数量少的情况。点中重复的元件在属性面板里把位号改成别的值比如 R12 改成 R12A。原理图反向更新如果 PCB 是从原理图同步过来的最稳妥的是回原理图里把位号改好再 Design Update PCB Document 同步回来。不要直接在 PCB 里乱改位号否则下次同步会被打回原形。5.3 贴完后开路但视觉上明明搭上了这是最让人抓狂的问题。我处理过好几次现象都是贴过去的 Track 和旁边焊盘接触得严丝合缝DRC 却报 Un-Routed。检查后发现那条 Track 压根没有 Net。这里有一个非常重要的排查思路不要靠眼睛看要用 DRC 和 Inspector 查。选中那条可疑的 Track打开 PCB Inspector看 Net 是不是你要的那个。如果显示 No Net说明粘贴时 Keep Net Names 没生效或者你复制的时候源对象就是 No Net。这时候用手工补 Net 也行但我更建议你回看复制源文件确认源文件里的对象到底属于哪个 Net再重新复制一遍不要拿一个坏对象硬修。真正成熟的做法是复制完一个大区域后立刻跑一次Tools Design Rule Check只看 Un-Routed Net 和 Short-Circuit 这两项把问题提前暴露出来。别等整板布线都画完再查那时候几十个开路连在一起你根本不知道哪些是这次复制新引入的。6. 这类复制技巧的边界以及我更推荐的长线做法6.1 Paste Special 适合什么场景说实话Paste Special 在 AD20 里是一个偏向临场操作的技巧它解决的是这一次、这一块、同一个板子上快速复制的问题。比如你正在布线中觉得某个扇出布局很对称想复制到另一侧或者你调试一块板子需要临时复制几个测试点这些场景用它非常顺手。它最大的优势是快速、可控不需要额外建立什么库文件、模板文件。但它并不是一个用来做结构化复用的工具。如果你发现自己每画一块新板子都要把同一块 DC-DC 电路复制来复制去那说明项目复用方式有问题。PCB 层面的复制粘贴网路、规则、元件类、设计约束都很难完整保留每次都要人工检查和修补时间长了一定会漏项。6.2 什么时候该上 Snippets、Device Sheets 和 Multi-Channel如果你要复用的是整个功能子电路我建议走 Snippets 或者原理图层面的 Device Sheet。Snippets 适合小规模复用比如一阶滤波、电平转换、ESD 保护这类几个元件的小电路。原理图里的 Device Sheet 适合完整的功能模块比如一个隔离电源、一个接口保护模块。这些方案的好处是网路、参数、位号前缀这些东西在一开始就定义好不用每次复制后补。真的要在同一块板子里做重复通道比如四路完全相同的电机驱动、八路完全相同的 IO 输入那首选不是复制粘贴而是 Multi-Channel 设计。在原理图里用 Repeat 语法声明通道数量再通过 Room 复制把 PCB 布线和布局同步过去。这样你改一处其他通道可以联动更新不会出现复制的第二路忘了改某个电阻值这种低级错误。6.3 我在实际项目里总结出的取舍标准如果你让我给一个可执行的判断标准我会这样分只是当前板子内部复制一小段走线、一小簇电容直接 Paste Special很快。当前板子里复制一个中等规模的模块并且你确定只复制这一次Paste Special 可行但复制完必须做 DRC 和网路核对。同一块板子里要出现三次以上相同模块用 Multi-Channel别在 PCB 里手工复制。多个项目之间要共用同一段电路用 Device Sheet 或 Snippets网路和参数从源头统一管理。这套标准我用了很久基本没出过大问题。复制粘贴这个功能说到底是给一次性、临时的图形搬运准备的你可以把它用得很熟练但别把它当成设计复用的解决方案。最后再分享一个我个人的小习惯每次大规模的 Paste Special 操作之后我会在 PCB 里放置一个临时的 Comment 文本比如复制自 R12/R13 区域网路已核对放在旁边提醒自己还有哪些待办项。等 DRC 全部通过、网路都确认无误后再删掉。这个习惯帮我避开了很多当时觉得复制得挺完美后来发现漏了一条 GND的坑。