说实话画原理图最让人头皮发麻的环节不是布局布线而是画完之后面对一屏幕乱糟糟的位号。R12、C3、U5、R34……如果前期画图不节制到后期光是把元器件名称和标号理顺就能消耗掉小半天时间。AD20其实早就把批量修改的路径做得很完整了关键在于你选对路子。这篇保姆级教程就把原理图工具、PCB工具、查找过滤、脚本批处理这几条路线全部拆开讲清楚顺便把unknown pin、位号镜像、PCB显示元器件型号和名称这些高频问题一起收拾了。这篇文章适合所有正在用AD20做项目、被位号梳理折腾过的硬件工程师和电子爱好者不管你是刚入门的新手还是已经画过几块板子的老手都能从里面找到可以直接落地的操作。1. 搞清楚要改什么位号、名称与注释的区别很多朋友一上来就问怎么批量修改元器件名称和标号但名称和标号这两个词在不同工程师嘴里指的东西可能完全不一样。如果不先把概念对齐后面操作很容易对不上号。1.1 三个术语先说清楚Designator、Comment、NameAD20里每个放置到原理图上的元器件至少有三个跟文本有关的属性Designator位号/标号就是R1、C2、U3、Q4这些用来唯一标识一个器件。位号必须唯一否则DRC会报错PCB上也没法区分是哪个器件。Comment注释显示的是10K、100nF、STM32F103C8T6这类内容对应的是元器件值或型号。很多人习惯把Comment直接显示在PCB丝印层上。Name库名称/元器件名称这个是原理图库里的“器件名”比如RES、CAP、STM32F103C8T6通常不会直接显示在PCB上但在BOM和库管理里会用到。如果你要批量改的是R1、R2这种编号那叫批量修改位号如果你要批量改的是10K、100nF这些参数显示那叫批量修改注释。日常对话里大家都混着说“名称和标号”但实际操作时要区分开因为修改路径完全不同。1.2 批量修改的典型场景你是哪一种我总结了一下大家批量整理位号和名称的需求基本逃不出下面几类画完原理图后位号乱跳需要按阅读习惯重新排序左上角R1往右R2往下R3这种。器件分了很多类需要给位号强制加前缀比如给电阻统一加R电容加CIC加U或者当前位号命名不规范想整体修正。需要把PCB丝印上的Comment隐藏只保留位号或者反过来让实物焊接时能一眼看到阻值容值。项目改版板子上器件大换血需要成批将旧位号改成新位号。位号文字在PCB上镜像反了、字太小、方向混乱需要批量调整文本显示效果。不同场景对应不同方法后面每一节我都会把对应关系和操作步骤标出来。2. 批量修改前先选路四种主流方案怎么挑AD20里能完成批量修改的方式不止一种但选错了会走很多弯路。我按实用程度和适用场景把方案拆成四条路你根据自己情况选。2.1 方案一Tools菜单下的Annotate官方“自动标注”是首选这是AD20自带的批量位号重排工具路径是 Tools Annotation Annotate Schematics...。它的原理非常简单按你设定的排序规则把所有元器件的位号重新从1开始编号然后通过ECO同步到PCB。用这个工具最大的好处是安全。它会自动检测重复位号、空位号并给出修改预览你确认之后才真正应用。第一次批量整理位号或者板子比较大、器件超过一百个的时候直接用它最省事。具体设置项在后面第3节详细讲这边先记住一个结论凡是“重排序号”“统一前缀”这类全局改动首选Annotate不要手动一个个去点。2.2 方案二查找相似对象Find Similar Objects批量改属性如果你不是要重排位号而是要把一批电容的Comment从“104”批量改成“100nF”或者想给某一片区域的所有电阻位号加一个后缀那Annotate就帮不上忙了。这时候要用右键菜单里的 Find Similar Objects查找相似对象。你可以选中一个目标元件右键 Find Similar ObjectsAD会自动读取这个元件的属性和当前值。然后你设置过滤条件比如Object Kind选择Same、Symbol Reference选择Same确定后所有符合条件对象就全被框选了。接下来打开Properties面板在Designator或Comment输入框里一次性赋值所有被选中的元件会统一修改。这条路的核心逻辑就是“过滤 批量赋值”。能过滤什么就能批量改什么套路非常通用。2.3 方案三在PCB里直接框选批量编辑PCB设计界面同样支持批量修改。你先在PCB里框选一批元器件然后打开Properties面板以前是PCB Inspector里面会显示出所有选中器件的共同属性。你在Designator一栏输入新位号确认后所有选中的器件位号都会被改动。但这里有个坑在PCB里直接改位号只改了PCB端原理图如果不重新同步下次ECO更新又会被打回原形。所以PCB端批量修改适合“临时调整显示效果”或者“板子已经没有原理图了”的移植场景。正常情况下还是改原理图再同步到PCB这个流程更规范。2.4 方案四脚本和外置工具专治复杂规则重命名当你有一堆类似“R1、R2……R30十一个、C1、C2……”需要按坐标区域重新编号或者要把原理图里的位号从“C1”整体改成“CP1”这种带规律的批量替换时界面操作会变得很笨拙。这时可以上AD的脚本引擎DelphiScript/JavaScript循环遍历所有元器件按你写在脚本里的逻辑批量赋值。这个方法门槛高一些但是上限也高。一次写好的脚本后续项目可以反复用。我自己就留了一个一键给所有选中器件加前缀的脚本省了不止一点时间。3. 保姆级实操原理图到PCB的完整流程这一节是全篇的核心我把从原理图批量重排位号、到PCB端设置显示、再到位号镜像的完整流程走一遍。每个步骤都会交代清楚“为什么要这么设置”避免你跟着点了按钮却不知道为什么。3.1 原理图全局标注按阅读顺序重排位号在原理图界面打开 Tools Annotation Annotate Schematics...会弹出 Annotate 对话框。这里先看左边的列表AD会把当前所有位号分组显示出来有疑问的地方会高亮标记。右侧则需要设置四个关键点Order of Processing处理顺序可以选Standard、By X Then Y、By Y Then X。想实现“从左到右、从上到下”阅读顺序就选 By X Then YAD会优先按X坐标从左往右排序同一列再按Y坐标从上往下排序。反过来如果希望“从下往上”选By Y Then X。Designator Index Control位号起始控制Start at填1或者你想要的起始值Suffix可以填你想要的统一前缀。如果希望位号变成R101、R102这样就在Suffix填RStart at填101。Process Per Sheet按页处理Multi-sheet项目里如果希望每张原理图都从1开始编号就勾选这个如果想整个工程连续编号就不勾选。Update Lists和Update Schematic改完设置后先点“Update Lists”看预览结果确认无误后点“Update Schematic”把修改应用回原理图。注意应用之前最好像我一样先另存一份工程副本。真的别问我是怎么养成的这个习惯。3.2 用查找相似对象批量改Comment和名称假设你现在想把所有“104”的电容注释统一改成“100nF”先随便点中一个104电容右键 Find Similar Objects。在弹出的窗口里把Comment栏的过滤条件设成Same然后点击底部的“OK”。此时所有Comment为104的电容都会被选中。然后你打开右侧的Properties面板在Comment文本框里输入100nF回车。这个操作是在所有选中的器件上同时生效的几十个电容一次性改完效率非常可观。如果在过滤条件里把Object Kind、Symbol Reference都设为Same那过滤出来的就是“同一种电容”改起来更不会误伤。顺带一提如果你把Comment改了之后PCB丝印上不显示那不是修改失败大概率是PCB里的显示开关没打开解决方法在第3.4节。3.3 PCB中显示元器件型号和名称两种常用做法在PCB里默认只会显示位号R1、C2不显示Comment10K、100nF。但焊接和调试的时候丝印上有阻值容值会方便很多。第一种做法按L键打开View Configurations在Show/Hide选项卡里找到Component把Comment右侧的显示开关从Hide改为Show丝印上立刻就会出现器件的型号和名称。第二种做法只针对个别关键器件显示Comment。双击某一个元器件在Properties面板里找到Strings下方的Comment右侧有个显示控制按钮把它点成显示状态即可。反过来如果丝印层太乱把Comment统一隐藏、只留位号也是同一个地方操作把Comment设为Hide就行。3.4 位号镜像与文字翻转方向不对会很难看在PCB里放位号文本方向是跟随元件本身的但有时候从原理图同步过来后位号会出现在奇怪的角度甚至镜像反了焊接时看着很别扭。解决办法有两个选中位号文本右键 Properties在文本属性里可以设置X/Y方向、旋转角度和镜像。更快的办法选中位号文本后直接按X键或Y键做水平/垂直镜像按Space键可以逐次旋转90度。位号镜像这个操作本身很简单真正的坑在于PCB里如果同时选中了很多文本按X或Y时所有文本会一起镜像结果可能比你需要的更多。所以做镜像之前最好先只选择目标位号文本或者锁定其他不需要动的文本对象。3.5 位号批量加前缀统一命名规则很多公司内部有命名规范比如电阻统一R开头、电容C开头、磁珠FB开头的规则在画图时就不该乱。但如果接手了一个别人画的乱图位号全都是X1、X2、X3这种怎么快速批量改最快的路径是在原理图里框选所有要改的器件打开Properties面板直接给Designator输入新的统一前缀加一个编号占位。不过更严谨的做法还是回到Annotate工具在Suffix里填前缀重新编号一次。这样能保证顺序、无重复一次性合规。4. 高频报错与显示问题排查实录批量修改过程中最容易出问题的往往不是修改本身而是修改之后引发的连锁反应。这里把我在实际项目里遇到的几个高发问题拿出来讲透。4.1 一更新PCB就报unknown pin到底是谁不认识谁“unknown pin”这个报错在原理图更新到PCB或从PCB反向更新原理图时非常常见。出现这个问题的本质是原理图元件的某个引脚在PCB封装里找不到对应的焊盘编号。举个例子原理图里某个连接器的引脚叫1、2、3但封装里焊盘编号写的是A、B、C那更新PCB时AD就不知道引脚1对应哪个焊盘直接报unknown pin。跟批量改位号有什么关系如果你是在改完位号或替换过封装后遇到这个报错多数情况不是位号改坏了而是封装映射没跟上。排查顺序是双击报错的元件查看它的PCB Footprint是否正确。打开原理图库检查引脚Designator和封装焊盘Designator是否完全匹配。如果引脚和焊盘数量对不上优先检查是不是用了错误封装。提示位号批量修改不会破坏引脚映射关系但如果你的批量修改操作里不小心把元件属性改坏或者用了错误的封装名那unknown pin就来了。改位号前记一下元件的Footprint值出问题可以快速比对。4.2 位号在PCB上不更新改了等于白改很多人发现原理图里把位号从R1改成了R101PCB上还是R1。这是因为你只改了原理图但没有把变更同步到PCB。AD的同步机制是原理图修改后需要执行 Design Update PCB Document 工程名。在弹出的Engineering Change OrderECO窗口里点击Validate Changes检查再点击Execute Changes执行变更才会真正落到PCB上。如果Validate时报错多半是原理图和PCB的绑定关系断了检查一下工程里有没有把原理图和PCB放到同一个Project下以及元件有没有被锁定。4.3 位号看起来是镜像的怎么快速调整PCB里位号文本镜像了通常不是器件镜像而是文字本身被设成了Mirror。选中文字后在Properties面板里找到Mirror选项并取消勾选或者直接在选中状态下按X/Y键切换。如果大量位号都镜像了可以用Find Similar Objects把Designator文本全部选中再统一取消镜像。顺便提醒一句位号镜像不影响电气连接只影响可读性和美观所以它经常被忽略。但送到工厂打样丝印反了焊接师傅会想打人强烈建议出Gerber之前花两分钟全局检查一遍丝印。4.4 批量修改后出现重复位号DRC报错如果你是用Properties面板直接批量给位号文本框赋同一个值那不用想一定会出现重复位号。AD的方案是PCB里跑 Design Rules Check 会直接标红原理图里运行Tools Annotation Annotate Quietly可以一键把重复位号理顺。这里要养成一个好习惯任何手动批量赋值位号的场景完成后都要跑一次Annotate Quietly。它的作用就是把重复的、有问题的位号快速修正过来花不了几秒钟但能避免后续一大堆麻烦。4.5 常见问题速查表问题现象可能原因处理办法unknown pin 报错原理图引脚编号和封装焊盘编号不匹配检查引脚与焊盘Designator对应关系PCB上位号不变未执行ECO同步Design Update PCB Document 执行变更丝印不显示阻值/型号Comment显示被隐藏View Configurations Show/Hide Comment位号文字反了文本被设为Mirror选中文本取消Mirror或按X/Y键切换重复位号DRC报错批量赋值导致相同文本运行Annotate Quietly一键修正位号字体太大/太小没有统一文本高度规则框选文本后在Properties里统一改Text Height5. 进阶玩法用脚本和外置工具彻底告别手动重复劳动如果你经常处理几十上百个元器件的原理图光靠界面点来点去还是慢。AD20提供了完整的脚本接口DelphiScript和JavaScript都能直接操作原理图对象。它的思路和你平时批量修改文件名一样先用规则匹配对象再批量替换属性。5.1 一个简单的DelphiScript思路批量给位号加前缀下面是一段示意性质的DelphiScript代码逻辑是遍历当前原理图所有元器件给每个位号加上指定的前缀。脚本接口在不同AD版本里命名略有差异所以先理解思路再按你本机的API文档微调。function PrefixAllDesignators(const APrefix: WideString): Boolean; var CurrentSheet: ISch_Document; Iterator: ISch_Iterator; Component: ISch_Component; begin Result : False; CurrentSheet : SchServer.GetCurrentSchDocument; if CurrentSheet nil then Exit; Iterator : CurrentSheet.SchIterator_Create; Iterator.AddFilter_ObjectSet(MkSet(eSchComponent)); try Component : Iterator.FirstSchObject; while Component nil do begin SchServer.RobotManager.SendMessage(Component, c_BeginModify, c_NoEventData); Component.Designator.Text : APrefix Component.Designator.Text; SchServer.RobotManager.SendMessage(Component, c_EndModify, c_NoEventData); Component : Iterator.NextSchObject; end; finally CurrentSheet.SchIterator_Destroy(Iterator); end; Result : True; end;这段脚本的核心就两个APISchIterator负责遍历元件RobotManager负责让AD知道你在修改。执行前务必把原理图里不需要改的元件锁定或者先备份工程。5.2 结合Excel、Python做复杂编排高级一点的玩法是把AD导出的BOM或网表拉出来用Excel或者Python做位号编排再导回去更新。这种方案特别适合那些“位号要按照坐标位置排序”“按模块分组命名”的工程师。原理也很直白AD原理图里的每个元件都带坐标、位号、Comment等属性导出网表就是一份表格数据。你可以在外部把R12、R34这些位号全部按你的规则重新生成再通过脚本批量写回原理图。这个路子本质上是“表格批量改名”和平时用工具批量修改文件名是一模一样的逻辑只是操作对象从文件变成了元器件。5.3 出Gerber前的最后一道检查不管你是用界面操作还是脚本批量改位号在准备导出Gerber之前我都会最后做一遍位号文本检查。重点看三处是不是所有位号都在丝印层内、有没有镜像文本、有没有位号被器件本体盖住。这一步做完再执行 File Fabrication Outputs Gerber Files 导出。不然等你看到打样回来的板子上位号反了或者看不到那才叫真正的心态炸裂。我个人的体会是批量操作这件事熟能生巧但更重要的是确定一套自己习惯的流程。比如我就一直坚持“原理图重排序号用Annotate、改型号用Find Similar Objects、PCB只做显示调整不做位号源修改、任何大批量改动前先备份工程”。这套流程帮我扛过了不少改版赶工的日子。希望这篇文章也能帮你少走几段弯路。
