AD21中Keepout与机械层互转的两种高效方法
画板子的人大概都有过这种时刻结构工程师丢过来一个DXF里面板框、螺丝孔、禁止布线区全部画在机械层1上你导入Altium Designer之后发现走线时DCR报错报个不停——因为根本没有Keepout层对象。或者反过来拿到的参考设计里Keepout层层叠叠但要出Gerber给板厂时对方却说“机械层1的板框和Keepout层的禁布区对不上你最好统一下”。AD21Altium Designer 21里这个Keepout和机械层互转的需求看起来不起眼实际上处理起来非常磨人。手动一条线一条线地选中、改层、再挪过去线少还好遇到几十上百条边框线、圆弧、槽孔线手挪能挪到怀疑人生。这篇就专门聊怎么在AD21里把Keepout和机械层上的图形对象一键互转两种方法都是我在实际项目里反复用过的适合不想装插件、不想写脚本、只想快点把活干完的工程师。1. 为什么这个需求这么普遍Keepout和机械层的“职责边界”本来就容易混先别急着操作得把这两个层的关系捋清楚。很多新手甚至做了两三年的工程师一谈起Keepout和机械层脑子里都是“反正都是画边框的差不多”。但这两个层在AD21里的属性、出Gerber时的行为、以及对接板厂时的意义差别非常大。1.1 Keepout到底管什么Keepout层在Altium里的本质是“约束层”——它不直接生产铜箔也不直接生成机械外形而是定义一块禁止区域。规则检查时走线、过孔、敷铜如果碰到Keepout对象就会报Clearance或者Keepout违规。所以它的核心价值是给电气设计加边界哪些地方不能走线、不能打孔、不能铺铜都由它说了算。我通常会在板子的四周、高压区域、天线净空区、螺丝孔周围放Keepout对象而且大多数时候会用Keepout的线Keepout Track和Keepout的圆弧Keepout Arc来画而不是普通线段。原因很简单普通线段放在Keepout层DRC照样认但有时候你在“过滤选择”或者“PCB Rules”里单独筛Keepout图元时就筛不干净。1.2 机械层又管什么机械层是给生产制造看的主要表达板框外形、开槽、V-cut、螺丝孔位置、器件限高区域、拼板工艺边等等。AD21默认从机械层1开始通常机械层1作为板框层机械层2可能做器件限高机械层3做装配说明每个公司习惯不同。机械层上的东西DRC一般不碰除了板框Board Shape会影响到板子实际外形。也就是说机械层是“物理世界”的描述Keepout层是“电气规则世界”的约束两个世界在图纸上经常重叠但数据上彼此独立。1.3 为什么这个问题会高频出现三个典型场景基本覆盖了90%的情况从DXF/DWG导入结构图时结构工程师把所有轮廓都画在一个层里导入后你分不清哪些该转成板框、哪些该转成Keepout。从老版本或第三方EDA工具转过来的PCBKeepout对象会被导入成机械层上的普通线条DRC完全失效。板厂在大批量产前会要求“禁布区使用Keepout层”而你手里只有机械层轮廓。搞清楚了原因再看方法就明白为什么“一键互转”不是仪式感而是实打实的生产力。2. 方法一查找相似对象 PCB List批量换层最稳的通用解法这个方法我是从一次“五十条机械层线段转Keepout”的破事里总结出来的。当时项目急着投板结构给的板框在机械层1禁布区也画在机械层1只是用了不同的线宽和不同颜色手动改一次少说20分钟。后来发现AD21自带的查找相似对象Find Similar Objects和PCB List面板就是干这个的配合起来可以达到“一键”效果。2.1 适用的场景对象数量多几十条、上百条线/圆弧需要统一换层。所有目标对象在同一个层比如全部在机械层1。只想换层不改坐标、不改线宽、不改网络。需要把非Keepout对象转成真正的Keepout对象即Keepout Track / Keepout Arc。2.2 完整操作步骤第一步在PCB编辑界面里鼠标点击任意一条你要转换的线比如机械层1上的某条轮廓线选中它。第二步右键选择“查找相似对象”Find Similar Objects。AD21会弹出一个对话框里面会列出这个对象的各种属性。第三步关键设置来了。在对话框里找到“Layer”把后面的“Any”改成“Same”。意思就是我只想选中和当前对象同层的所有对象。同理如果这些线都是同一线宽可以把“Width”也改成“Same”进一步缩小范围。如果你还担心会误选到其他类型可以勾选“Select Matching”和“Run Inspector”或者“Run PCB List”同时把“Object Type”也设为Same。我一般这样设置属性设置值说明LayerSame只筛同一层Object Kind/TypeSame只筛同类型线/圆弧分开处理Select Matching勾选便于确认选中范围Run PCB List勾选批量编辑层属性Zoom Matching勾选直观看到选中了哪些第四步点击“OK”。此时所有机械层1上的同类型线段都会被选中同时弹出“PCB List”面板如果你勾选了Run PCB List。这个面板类似Excel表每一行是一个对象每一列是一个属性。第五步在PCB List面板中找到“Layer”列把所有行的Layer从机械层1改成Keepout层。这里有个小技巧先点击面板左上角的头行“Layer”列让整列高亮然后直接在列首输入框里下拉选择Keepout层再按Enter。整个面板的每一条对象都会同步变成Keepout层。第六步按CtrlA全选检查一下确认没有漏掉的圆弧、矩形填充等对象。如果有圆弧重复一遍操作只是第一步点击的对象换成机械层1上的圆弧。2.3 为什么它能做到“一键”这个流程表面上要操作好几步但本质上它把“逐条选中、逐条改层”变成了“一次筛选、一次批量改”。实际项目里我通常把查找相似对象和PCB List面板固定成肌肉记忆处理一次多层转换也就十几秒。相比手动挪线这就是“一键”的意思——不是真的只有一个动作而是只需要一次批量操作。而且这个方法的可扩展性很强。你不仅可以把机械层1改成Keepout层也可以把Keepout层改成机械层15甚至可以把线宽、颜色、孔尺寸一起批量修改。在PCB List里所有属性都可以做单元格级别的批量编辑。2.4 踩过的坑这个方案有几个容易翻车的地方提前说一下省得你踩一遍。坑一不是所有“线”都是Track。如果你从DXF导入的轮廓线变成了“线”对象Line而不是“Track”那么在ADR里修改Layer的选项和普通Track不完全一样。处理前先在PCB List面板里看看对象的类型。如果是Line建议先用工具转换成Track或者干脆删掉重画。因为AD21里的Keepout对象一般认Track/Arc普通Line到了出Gerber的时候可能会莫名丢失或无法识别。坑二圆弧和线要分开处理。查找相似对象默认按类型筛选线是线圆弧是圆弧矩形是矩形不会一起选中。所以转完线之后别忘了转圆弧。如果机械层轮廓里还包含圆孔位那通常是圆弧对象。坑三改了层之后DRC没反应。很多人把机械层线改成Keepout层后发现DRC根本不报错。原因很可能是你的线只是普通Track放在Keepout层但它不是真正的“Keepout Track”对象。AD21里Keepout对象在“Layer”属性里显示的是“Keepout层”在“Object Kind”里则是明确的“Keepout Track”。如果显示成普通“Track”意味着DRC对此不生效。这种情况下建议使用后面要说的第三种方法或“From Selected Objects”转换把普通Track变成真正的Keepout Track。坑四PCB List面板里改Layer时不小心把其他对象也选中了。如果查找相似对象的过滤条件设置得太宽比如没把Type设为Same结果可能把覆铜、填充、过孔一起选中。一次批量改层下去板子可能直接乱了。所以每次批量操作前先在“Select Matching”情况下看一眼选中的对象数量是否符合预期。3. 方法二特殊粘贴 板外形复制跨文件切换层的“野路子”这个方法我用的频率稍低但在某些场景下特别省事——尤其是“从别的板子里复制一块Keepout/机械层轮廓过来”的时候。很多工程师不知道AD21的“特殊粘贴”Paste Special里藏着一个层转换开关能在粘贴时直接把对象放到你指定的当前层上顺手完成机械层和Keepout的互转。3.1 特殊粘贴的隐藏开关常规的CtrlC和CtrlV大家都熟但它默认沿用源对象的层属性。比如你在一个PCB文件里复制了机械层1的板框粘贴到另一个PCB里它仍然会在机械层1上不会自动变成Keepout。这时要用“编辑”菜单里的“特殊粘贴”Paste Special。执行后弹出一个对话框里面有几个选项Paste on Current Layer粘贴到当前层Keep Net Names保留网络名Duplicate Designator复制位号等关键就在“Paste on Current Layer”这个选项。勾上它之后所有从剪贴板里粘贴出来的对象不管原来是哪一层都会统一落到你当前PCB文件的活动层上。换句话说如果你想实现“把机械层1的轮廓转成Keepout层”只需要先把当前层切换到Keepout层复制机械层对象再勾选“Paste on Current Layer”粘贴就完成了一次“复制换层”的互转。3.2 机械层到Keepout的操作示例假设你想把当前PCB里机械层1上的整个板框轮廓复制一份到Keepout层点击机械层1上任意一条轮廓线选中它。右键选择“查找相似对象”按Layer Same、Type Same筛选选中全部轮廓线包括圆弧。CtrlC复制。把当前层切换到Keepout层也就是在设计窗口下方层标签里点一下Keepout。菜单“编辑” - “特殊粘贴”勾选“Paste on Current Layer”点击OK。CtrlV粘贴。此时你会发现粘贴出来的轮廓确实落在了Keepout层上。如果还需要把原来机械层1上的线条删掉那就在粘贴完成后先全选源对象再Delete一次。3.3 Keepout到机械层的反向操作反过来也一样。复制Keepout层上的禁布区轮廓想把它作为机械层1的工艺线操作完全相同只是把当前层切换到机械层1再特殊粘贴。注意这时粘贴出来的可能是普通Track不再是Keepout Track。如果你只是想生成机械说明线没问题但如果想继续保持Keepout属性就不能用这个方法。3.4 为什么有时粘贴后会“跑偏”特殊粘贴最容易被吐槽的点是粘贴出来的对象位置不对或者粘贴后线宽变了。原因一般是AD21的“参考点”设置不对。复制对象的默认参考点是对象左下角或者选择集的中心不同版本不一样。为了避免跑偏建议在复制之前先用“编辑”-“设置参考点”-“设置到当前选中对象”来指定一个固定的参考点。比如你复制一个圆形螺丝孔Keepout可以把参考点设到圆心这样粘贴时就能精确捕捉。另外特殊粘贴在跨文档操作时可能会把源文件的原点信息也带过来。如果你发现粘贴内容跑到图纸很远的地方大概率是源文件的绝对原点和你当前视图不一致。解决方法是粘贴后不要手动硬拖而是用“相对原点”定位先把参考点定好再用M快捷键的移动命令配合坐标输入或者用对齐命令。3.5 这个方法适合什么场景跨PCB复制板框轮廓、把DXF导入的机械层线复制到另一层做对照、临时把Keepout区域复制到机械层做标注——这种“一次性、需要保留原始对象、位置要求不高的操作”用特殊粘贴最快。但是如果你的需求是“当前板子里批量转换”而且目标对象很多我还是推荐用方法一查找相似对象PCB List因为特殊粘贴的批量属性不如PCB List直观而且需要先复制再删源步骤更繁琐。4. 第三种思路从所选图元创建Keepout专治DRC不认的问题前面提到普通Track放在Keepout层上DRC不一定认。所以这里单独讲一个AD21里自带的高频命令——从所选图元创建Keepout。这个方法严格来说不是“层互转”而是“对象类型转换”但它解决的是同一个痛点的最后一步让Keepout真正生效。4.1 菜单路径和原理在AD21里选中对象后菜单栏“工具” - “转换” - “从所选图元创建Keepout”Tools Convert Create Keepout from Selected Objects。命令的作用是把选中的轮廓线Track/Arc/Poly转换成真正的Keepout Track或Keepout Arc。原理上AD会重新创建一个Keepout对象并保留原有几何形状删除原对象或保留原对象取决于你的操作方式。注意这个命令对普通Track和Line的处理不一样对Line经常无能为力。所以如果你要转换的对象是从DXF导入的Line建议先转换成Track再执行。4.2 基于机械层板框生成Keepout的完整步骤很多时候我们要的并不是把机械层线“改成”Keepout层而是“根据机械层轮廓生成一个Keepout禁布区”——比如为了让整板边缘一圈都不能走线。在机械层1上选中板框轮廓的所有线段和圆弧。点击菜单“工具” - “转换” - “从所选图元创建Keepout”。AD会弹出确认框提示将创建Keepout对象。确认后检查。此时生成的对象在Keepout层而且是真正的Keepout Track/Arc。如果之前已经有一个半吊子的“放在Keepout层的普通Track”同样可以选中它执行这个命令AD会把它转成真正的Keepout Track。4.3 反向操作怎么搞那Keepout转回机械层呢最直接的还是方法一PCB List批量改层。因为Keepout Track改成其他层之后会自动变成普通Track。这个过程比较简单选中Keepout层对象批量把Layer改成机械层1即可。如果你想要的是“从Keepout轮廓生成机械层板框”还可以用另一条路把Keepout对象复制出来CtrlC。切换到机械层1用“特殊粘贴”里的Paste on Current Layer粘贴。全选刚粘贴出来的轮廓执行“设计” - “板形状” - “根据选择定义板外形”Design Board Shape Define from selected objects。这样板子的外形就会根据Keepout轮廓重新生成。很多人画板时喜欢先用Keepout画一个禁布边界最后投板前用这个方式快速生成板框实测非常方便。4.4 这个命令容易忽略的细节如果Keepout轮廓里包含多个闭合图形比如主板轮廓内部异形槽执行创建Keepout时AD可能会把每个闭合区域都作为独立Keepout对象。你需要去“PCB Rules”或者DRC里确认一下Keepout范围是否符合预期。有时候生成的Keepout对象不能直接用于“板形状”定义因为它可能是多个片段拼出来的。AD21处理这种不闭合轮廓时会弹提示“轮廓未闭合”这时得检查断点往往是用Line画的头尾没接上。圆弧和Track混搭的轮廓在创建Keepout后个别圆弧方向可能反掉。这个我遇到过一次原因是从DXF导入的圆弧方向定义和AD21不一致。解决方式是转完后在Keepout层逐段检查或者用J、L定位断点后重新拉一次圆弧。5. 转完之后别急着投板必须处理的验证项和Gerber导出习惯层转完了事情还没结束。我见过太多人转完层就兴冲冲去出Gerber结果板厂回邮件说“板框层不完整”或者“Keepout和机械层打架”。这里把投板前必须检查的东西列一下。5.1 转层之后先跑一遍DRC不管是用了哪种方法转完层之后第一件事是运行DRC快捷键TD。重点关注Clearance Constraint新转出来的Keepout对象是否影响了原有的布线间距。Keepout Constraint是否真的有禁布区域生效。Un-Routed Net如果转层时不小心把网络属性带到了Keepout对象上可能会造成网络识别问题。有一次我把机械层的螺丝孔位圆弧转成Keepout后DRC爆出几百个错误原因是圆弧本身在源文件里有网络属性转成Keepout Track后网络属性还挂在上面。通过PCB List把网络列为空问题立刻消失。这个细节一定要记住。5.2 检查对象类型别把普通Track当成Keepout Track打开PCB List面板或者Filter面板筛选出所有Layer Keepout的对象看看“Object Type”一列到底是Keepout Track还是Track。如果发现很多普通Track赶紧用第4节的方法把它们转成真正的Keepout Track。5.3 结合AD21出Gerber的实际习惯这里顺便结合“AD21出Gerber”这个大家常搜的问题说一句。你转完层最终出Gerber文件时快捷键FF或者文件-制造输出-Gerber Files有两个地方必须确认第一个是Gerber Setup里的“Layers”勾选。如果你的板框设在机械层1必须在“机械层”选项卡里勾选“机械层1”并确认“镜像”和“包含未布线层”等选项无误。Keepout层一般在“布线层”列表里记得单独勾选。第二个是“Gerber Files”对话框里的“高级”Advanced选项卡。这里“导出图纸信息”Export drawing info和“嵌入孔径”Embedded apertures两个选项我建议按板厂要求来。板厂如果默认要RS-274X格式那么“嵌入孔径”一定要勾上否则钻孔文件可能对不上。如果你把Keepout层转到了机械层1或者反过来出Gerber时最容易出的问题是“层重复导出”——比如机械层1既作为板框层被导出了又被当成Keepout层导出了。这样板厂拿到手的文件会互相矛盾。所以每次转完层投板前我都习惯在“层堆栈管理器”和“Gerber Setup”里逐个层对照一遍确认没有重复。5.4 两种互转方式怎么选给个实用建议场景推荐方法原因当前板子内批量把机械层线转Keepout查找相似对象 PCB List一次搞定适合几十条线当前板子内批量把Keepout转机械层查找相似对象 PCB List同上从别的PCB文件复制轮廓并转层特殊粘贴 Paste on Current Layer跨文件操作效率最高需要DRC真正识别禁布区从所选图元创建Keepout解决对象类型不对的问题DXF导入后的Line对象先转Track再创建Keepout否则命令可能无效5.5 最后再多说一点根据我个人的经验这个“互转”需求看着小但处理不好真的很坑。以前有块4层板就是因为机械层和Keepout层没统一板厂在CAM处理时把禁布区理解错了样板回来发现一个螺丝孔旁边被布线穿过差点导致短路。从那以后我给自己立了个规矩所有板子在投板前机械层和Keepout层必须有一个明确的“主从关系”。要么Keepout禁布区全部由机械层轮廓生成要么机械层轮廓全部由Keepout复制回来绝对不允许两套图元同时存在且边界不一致。如果你接手的是别人转过来的板子刚开始不熟悉对方习惯建议先全选两个层用不同颜色区分显示快捷键L打开视图配置眼睛扫一遍确保没有明显冲突再开始布线。否则等你画完再发现返工成本就高了。另外再分享一个小技巧如果经常需要在机械层和Keepout层之间互转可以在AD21里做一个简单的“层复制”快捷操作流——把查找相似对象PCB List面板固定成快捷键或者把“从所选图元创建Keepout”指定一个顺手的热键。这样每次转换就能真正做到把手从鼠标上挪开全程键盘操作效率还能再提升一截。这个内容后续也可以往脚本方向扩展比如用Delphiscript做一个“一键互转”插件彻底解决选择集和类型转换的问题。不过对于多数项目来说上面几种方法已经足够用了先把它们练熟比折腾插件更实在。