
在AD里画重复单元很多人第一反应是复制粘贴。但真正画过八路LED灯板、十六路排针、四角螺丝孔的人都会发现纯复制粘贴只是把图形复制过去了位号和网络标号全挤在一起后面改编号的时间比画图还长。后来我认真把repeat功能捋了一遍才发现这东西用对了从“放一个”变成“放一排”位号和网络标号还能一路自动递增工作量能砍掉一大半。这篇文章就把我在原理图和PCB两个场景下的完整实践过程、参数设置和踩坑记录写清楚看完你至少能解决“repeat放出来了但编号不递增”这个经典问题也能知道哪些场景该用repeat哪些场景该用特殊粘贴阵列。1. repeat在AD里的三种存在形式用错了才觉得它不好用很多新手一上来就按CtrlR发现只是把上一步操作重复了一遍编号完全不动就以为repeat功能不过如此。实际上AD里的repeat不是一个按钮而是三个互相独立又容易混淆的东西搞清楚它们的分工后续才不会走弯路。1.1 放置状态下的R键真正能“边放边编号”的repeat这个才是本文的主角。在原理图或PCB中只要处于“放置对象”的状态——比如刚放完一个元件、刚放完一个网络标签、刚放完一个过孔——按一下键盘上的R键系统就会进入repeat模式。进入repeat模式之后你会看到光标旁边多了一个相对坐标提示移动鼠标时新的对象会沿着你相对上一个放置点的方向移动。此时点击一次就放置一个新副本而且这个副本的位号、网络名会自动按你预设的递增值变化。再点一次再放一个编号继续递增直到按Esc退出。这一段交互很多人没用过是因为不知道“必须先放第一个”而且必须先处于放置状态。如果放置第一颗元件时直接按R是没有任何效果的因为它需要“上一次放置动作”作为参考基准。1.2 Edit RepeatCtrlR重复上次动作跟编号无关另一个常被误认的入口是菜单栏的Edit Repeat快捷键CtrlR。它的语义是“把上一次操作重复执行一次”比如你刚删除一个元件按CtrlR会再删一个同位置的元件你刚移动了一段线它会再执行一次同样的移动。它不是为“阵列放置”设计的也不会自动递增文本编号。我见过不少人正好是倒过来的想用Edit Repeat做阵列结果发现完全不对想用R键做连续操作又因为没放第一个对象而按了半天没反应。这两个功能在AD里的定位差异非常大前者偏向“操作回放”后者才是“放一个变一排”的重复放置。1.3 Paste Array想一次性生成二维阵列时更合适的“邻居”除了R键AD还有一个和repeat经常搭配出场的功能——特殊粘贴里的阵列粘贴。操作路径是选中对象复制然后编辑菜单里的Paste Special在弹出的对话框里勾选Paste Array。这个功能的优势是可控性极强可以指定X方向和Y方向的副本数量、间距、编号递增值。比如一块PCBA板四个角要放四个相同的螺丝孔位用paste array两个方向各生成两个副本一次搞定。它的缺点是缺少repeat那种“放一个看一眼再放一个”的交互感不适合在布局过程中还需要微调方向的场景。三者的关系我用一个表格梳理一下方便对照选择功能入口是否自动递增编号核心用途适合场景repeat放置放置状态下按R是按Preference的增量连续放置一排对象交互式摆布、边放边看重复上一动作Edit Repeat / CtrlR否重放上一次编辑动作机械重复移动、删除等粘贴阵列Copy后Paste Special是在对话框中设置一次性生成二维阵列固定间距、批量生成2. 原理图实战8路LED灯板一个R键把位号和网络标号全搞定原理图是repeat功能受益最明显的场景。拿一个典型的LED指示灯阵列来说八路LED、八个限流电阻、八个网络标号如果纯手动放置最快的熟练工也得折腾十几分钟。用repeat之后整个过程可以压缩到两分钟左右。下面拆解我的完整操作过程。2.1 动手前先检查这三项参数repeat能不能自动编号全看这里我踩过最大的一个坑就在这里。早期用repeat放置网络标签放出来全是同一个名字当时我还以为AD这个功能就是这么半成品。后来排查到Preferences设置才发现自动递增功能需要提前打开而且增量值要设置对。路径是右上角齿轮进入Preferences旧版本在DXP菜单下然后Schematic General Options找到Auto-increment during placement这一栏。里面有四个输入框真正起作用的是Primary和Secondary两项Primary控制位号Designator的递增值Secondary控制网络标签Net Label和端口Port的递增值。这两项默认值通常都是1意味着LED1后面就是LED2、LED3。如果这里被改成0repeat放置时文本就完全不递增如果被改成10就会发现编号变成LED1、LED11、LED21。所以第一步确认Primary和Secondary都是1或你想要的步进值。另外还要确认一下Snap Grid网格吸附值。习惯上画原理图默认100mil约2.54mm网格就行repeat放置时每次点击的位置会被吸附到网格上间距基本可控。网格设置建议固定在某个整数倍不建议用“自适应”模式否则两个元件之间的间距忽大忽小看着别扭。2.2 放置第一个LED和第一个电阻位号的初始值有讲究参数确认之后先从元器件库找到LED放到原理图里。放之前按Tab打开属性面板把Designator位号改成LED1这样可以确保repeat从LED1开始递增而不是从库里的默认值标高开始。这里有个细节如果你不手动改位号直接放第一个元件位号可能是D1、D2这种风格因为很多库把LED归为二极管类默认前缀是D。如果你希望最终BOM里清晰显示LED1、LED2要么在库属性里改默认前缀要么放第一个对象时手动改成LED1repeat会从这个基础值开始。我个人习惯是原理图里直接用LED前缀BOM导出后一目了然不用再解释D到底是不是LED。放置完第一个LED后在附近放第一个限流电阻同样把位号改成R1。建议把LED和R放成上下结构LED的阳极在上、电阻在上方或下方取决于你的电路拓扑。这一步不用追求美观repeat讲究的是“第一个对象的位置决定了后续整排的基准”放歪了后面也全歪。2.3 按R进入repeat模式观察编号的变化规律第一颗LED放置完成后此时系统仍然处于“放置元件”的激活状态光标上还黏着一个待放置的LED副本。关键操作来了按一下R键。按完R之后你会感觉到光标的状态发生了变化最明显的是移动鼠标时新对象会带着一个相对坐标的偏移量而且偏移方向跟随你的鼠标走向。如果此时向右移动一个网格距离点击第二颗LED就落位了。它的位号不需要你再手动改自动变成LED2。继续点击LED3、LED4陆续出现。整个过程中鼠标相对上一次放置点的位移会一直保持同样的方向和距离。注意一个小细节repeat模式下的间距取决于“第一次点击位置相对上一个锚点的位移”后续点击之间系统会自动沿用这个向量。所以第一下移动鼠标时就要想清楚间距别安慰自己“后面还能微调”——后面每一颗都会沿用第一次的间距值。排完LED阵列后按Esc退出。再放置限流电阻时建议从R1那颗电阻开始也按R键一路放下去位号自动变成R2、R3……如果中途发现某颗元件位号跳了多半是因为之前手动改过某颗的位号见第4章排查部分。2.4 网络标签的repeatLED1、LED2一路自动接上灯珠摆好了电阻摆好了接下来要分配网络。同样用repeat按PN放置网络标签按Tab把第一个网络标签改成LED1放在第一颗LED的阳极线上。放下后按R沿着上方横线继续点击网络标签会自动变成LED2、LED3……一路放到LED8。这一步才是repeat真正体现效率的地方。如果没有自动递增你要手动改八个网络名而且容易漏改、改重。用repeat之后只要第一个名字对后面的全部顺着走。顺带提一句端口Port也是同理。如果你在做多张原理图的层次化设计需要在模块之间用端口连接放置端口时按Tab输入P1按R连续放置端口名同样会自动编号。养成这个习惯之后画层次原理图的速度会提升非常明显。2.5 连线和检查重复位号、悬空引脚的两种快速确认方式阵列放完之后剩下的工作是连线。这一步就不多展开repeat了但有两个检查操作一定要做否则后面导入PCB时返工成本很高。第一个检查是位号重复检查。repeat偶尔会因为手动改过某个编号而出现跳号或重复最快的处理方式不是用肉眼看而是用Tools Annotation快捷键TA打开标注对话框先执行Reset把所有位号清空再执行Annotate按当前原理图坐标重新统一编号。这样得到的编号顺序基本符合视觉从左到右、从上到下的规则比手动修正靠谱得多。第二个检查是悬空引脚检查。在工程面板的Messages窗口里看编译结果执行Compile如果某颗LED的引脚没有连上网络编译后会报Unconnected Pin或类似警告。repeat放出的元件通常不会自己连好线这一步不能省。我见过有人用repeat放完一大排LED后忘了连电阻网络PCB导入后LED引脚悬空DRC一大堆红色处理起来非常痛苦。3. PCB实战过孔屏蔽墙和四角螺丝孔用repeat少点几十下鼠标原理图里的repeat偏重“编号递增”PCB里的repeat则更需要关注“等间距”问题。PCB中我主要在两个场景用repeat一是沿板边打一排等间距过孔做屏蔽二是配合paste array生成四角螺丝孔。3.1 板边过孔阵列一个R键打一排GND过孔PCB中放置过孔的操作是PV。先从工具栏放置第一个过孔放置前按Tab把网络设为GND。放好第一个之后按R进入repeat模式然后移动鼠标沿着板边走每到一个预设网格位置点击一次就会落一个GND过孔。实际操作中有一个很关键的点网格设置。如果Snap Grid设得太大比如1mm过孔之间最小间距就是1mm太密如果设得太小比如0.1mm鼠标稍微一动就是很小的间距点起来累间距也不均匀。我一般把网格设为设计规则里的过孔到过孔间距值比如0.5mm或者25mil这样点出来的过孔阵列天然满足DRC。如果你的板边需要很长的连续屏蔽过孔墙可以考虑把第一个过孔放在板边起点按R后沿板边方向匀速点击遇到拐角就换个方向继续点。整个过程比复制粘贴再一个个摆位置要快得多而且过孔的网络属性不会丢——它是同一个网络repeat不会帮你创建新网络名这是PCB和原理图的本质区别。另一个适用场景是排针焊盘阵列。如果封装的焊盘间距是标准的2.54mm你在PCB里想临时摆一排测试焊盘同样可以用R键连续放置间距控制好就行。3.2 四角螺丝孔复制一个用Paste Array生成2×2阵列螺丝孔这类对象不太适合用R键因为四个角之间的相对位置通常不是靠鼠标点击可以精确控制的用paste array更合理。操作步骤先在角落做好一个螺丝孔形式可以是Mechanical层的圆形占位、Keepout层的挖槽区域加一个焊盘或者直接是带孔封装。选中它CtrlC复制。然后执行Edit Paste Special在弹出的窗口中勾选Paste Array。这时窗口里会出现阵列参数设置左下角有Item Count数量、Primary Increment主递增、Secondary Increment次递增右上角是X Spacing和Y Spacing。我这里只生成两个方向的副本所以Item Count设为2X方向间距设为板子的宽度Y方向间距设为板子的高度增量为1——如果你想让四个螺丝孔的位号自动变成MOUNT1到MOUNT4就把增量设好粘贴后位号自动递增。确认后在PCB上点击放置基准点系统会让你点第二点来确定间距方向完成之后四个角的螺丝孔一次性铺开。这里有个经验粘贴时注意坐标原点最好是让第一个基准点放在你复制的那个原始对象所在位置再指定另一个对角方向否则整个阵列会出现整体偏移。3.3 阵列之后的收尾DRC检查和位号整理无论是用R键放的过孔阵列还是用paste array生成的螺丝孔阵列PCB布局结束后都要走一遍Rules CheckDRC。repeat只是放置动作不负责设计规则所以过孔间距不满足最小间距、螺丝孔挖空区域和走线干涉这些问题它完全不会帮你规避。位号整理也是同理。paste array生成的对象位号顺序可能和你视觉上的期望不一致比如MOUNT4跑到了左上角、MOUNT1跑到了右下角。如果不强制要求位号排序可以不管如果BOM要求或者后续手工贴片需要标识清晰建议在PCB中用标注功能对关键位号做一次重排。这一点是很多教程不会提的但对实际交付影响很大。4. repeat失灵的四种现场从命名规则到参数设置逐项排查用repeat时间久了你会遇到各种“失灵”现场。我这里整理了四个最高频的问题每个都附上排查思路下次遇到可以直接照着走。4.1 网络标签放出来全是同一个名字没有任何递增这个问题的概率大概是repeat相关问题里最高的。最常见的两个原因一是Preferences里Secondary值设成了0二是你根本没有按R只是用普通放置方式连续点了多次。排查顺序建议从容易的开始先看光标状态——按了R之后光标附近会出现相对坐标提示你再次点击时网络名会变化如果点了几次名字都不变那就去Preferences里看Secondary递增值是不是0或负数。还有一个隐蔽情况如果你当前元件或网络标签是从某个第三方的原理图模板里带出来的默认值可能被模板改过不是常规的1。直接改成1重新放一次就恢复了。4.2 位号跳号或者出现重复repeat放出来的位号跳号大部分原因是之前手动改过某颗元件的位号。举个例子你原来有一颗LED被改成了LED_Arepeat从LED1开始遇到那个手动编号的附近时自动计数并不会相应避让最终就会出现LED1、LED3这种视觉上的跳跃。位号重复则多见于复制粘贴的历史遗留比如你把一个元件从另一张图纸复制过来它的位号可能和现有元件冲突repeat放出来的后续编号全部往后顺延重复反而少但起始可能重叠。处理方式很简单不要手动逐个改直接用Tools Annotation重新标注。先Reset再AnnotateAD会自动按坐标排序重新给所有元件分配连续位号。这是标准做法我每次画完一张图纸都会跑一遍。4.3 间距完全不受控制越放越乱repeat的间距不是“输入一个值”决定的而是“第一次点击相对上一个点的位移向量”决定的。如果你在放置第一个对象时网格吸附不在目标网格上或者Snap Grid设置得太小鼠标稍微一晃下一颗元件就跑出去十万八千里。遇到这个问题先按G键打开网格设置把Snap Grid设成一个合理的整数倍比如原理图用2.54mmPCB根据封装间距用0.5mm或1mm。然后重新进入repeat流程放第一个点时确认精确落在网格节点上按R之后保持鼠标沿一个方向移动不要斜着拉间距就稳定了。4.4 跨图纸、跨工程粘贴时编号断档repeat模式有一个隐含边界它只作用于“当前图纸的连续放置过程”。一旦你退出放置状态、切换图纸、或者复制粘贴到另一个工程自动递增的链条就断了。跨图纸场景下如果你确实需要连续编号我的建议是先复制对象到目标图纸再用paste array并手工设置增量或者在最后统一Annotate。没有哪个功能能完美跨多张图连续递增这是工具的边界不是你的操作问题。5. 和repeat长期配合的三个习惯以及一个值得改进的默认设置到最后这部分聊聊我平时和repeat配合使用的一些固定动作。这些东西谈不上高深但能减少很多返工也算是我用过几版AD后沉淀下来的习惯。5.1 库封装的位号前缀统一repeat编号才不会乱repeat的编号递增完全基于“上一个位号增量值”所以位号前缀统一至关重要。如果库封装里LED和二极管都用D开头放在同一张图纸上repeat产生的编号风格就是D1、D2混着用。如果希望BOM清晰建议在库里就把LED的位号前缀设置为LED或DS电阻R、电容C、连接器J全工程统一口径。这个习惯的收益在repeat场景下特别明显前缀统一编号连续BOM导出后基本不用再人工整理属性。如果你现在是拿别人的库在画图也可以在自己环境里做一次批量属性替换一劳永逸。5.2 把Auto-increment值写进Preferences模板新机器不翻车Preferences里的Primary和Secondary递增值默认是1但并不意味着所有环境都是1。公司多台电脑办公、换新机器、或者拿到同事的配置经常会出现某个值被改过的状况。repeat放出来编号不是1、2、3而是1、10、20多半就是这里的问题。我在自己常用的机器上把这两个值固定设为1之后会顺便在Preferences左下角做一次配置导出。这样即使换电脑也能把整套快捷键和参数设置导入repeat的行为保持一致。这个动作虽然不起眼但真的能避免很多“换个电脑就不会画图”的尴尬。5.3 repeat负责放置Tools Annotation负责最终校正最后一条经验是心态层面的不要把全部期望押在repeat上。repeat的优势是“放一个自动带出一排”效率高、交互顺滑但它本质上是放置辅助工具不是严谨的编号管理工具。大图纸画完后正确的收尾动作永远是Tools Annotation做统一编号整理把视觉上乱序的编号修正为与坐标一致的顺序。我现在的流程是用repeat快速铺完重复单元眼睛看着位置和间距没问题然后CtrlA全选跑一遍Annotation最后再看编译结果。repeat给我的价值是把“手动放元件手动改编号”这种重复劳动压缩成“点几下一排完成”至于最终的编号完美度交给标注工具兜底。两者配合才算把这个功能吃透。最后再分享一个小技巧如果你画的是那种带很多相同子模块的板子比如八个相同的继电器驱动电路可以先在原理图角落用repeat放好一个完整子模块选中后整体复制再用paste array生成其余几个。这样的操作比在PCB端重复布局快很多而且原理图和PCB两端都能保持编号连贯后续设计同步更省心。