拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AD21中Keepout与机械层互转的两种高效方法

AD21中Keepout与机械层互转的两种高效方法

画板子的人大概都有过这种时刻:结构工程师丢过来一个DXF,里面板框、螺丝孔、禁止布线区全部画在机械层1上,你导入Altium Designer之后发现,走线时DCR报错报个不停——因为根本没有Keepout层对象。或者反过来,拿到的参考设计里Keepout层层叠叠,但要出Gerber给板厂时,对方却说“机械层1的板框和Keepout层的禁布区对不上,你最好统一下”。

AD21(Altium 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工具转过来的PCB,Keepout对象会被导入成机械层上的普通线条,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层。

第六步,按Ctrl+A全选检查一下,确认没有漏掉的圆弧、矩形填充等对象。如果有圆弧,重复一遍操作,只是第一步点击的对象换成机械层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 特殊粘贴的隐藏开关

常规的Ctrl+C和Ctrl+V大家都熟,但它默认沿用源对象的层属性。比如你在一个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. 点击机械层1上任意一条轮廓线,选中它。
  2. 右键选择“查找相似对象”,按Layer = Same、Type = Same筛选,选中全部轮廓线(包括圆弧)。
  3. Ctrl+C复制。
  4. 把当前层切换到Keepout层,也就是在设计窗口下方层标签里点一下Keepout。
  5. 菜单“编辑” -> “特殊粘贴”,勾选“Paste on Current Layer”,点击OK。
  6. Ctrl+V粘贴。

此时你会发现,粘贴出来的轮廓确实落在了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. 在机械层1上选中板框轮廓的所有线段和圆弧。
  2. 点击菜单“工具” -> “转换” -> “从所选图元创建Keepout”。
  3. AD会弹出确认框,提示将创建Keepout对象。确认后检查。
  4. 此时生成的对象在Keepout层,而且是真正的Keepout Track/Arc。

如果之前已经有一个半吊子的“放在Keepout层的普通Track”,同样可以选中它,执行这个命令,AD会把它转成真正的Keepout Track。

4.3 反向操作怎么搞

那Keepout转回机械层呢?最直接的还是方法一:PCB List批量改层。因为Keepout Track改成其他层之后,会自动变成普通Track。这个过程比较简单,选中Keepout层对象,批量把Layer改成机械层1即可。

如果你想要的是“从Keepout轮廓生成机械层板框”,还可以用另一条路:

  1. 把Keepout对象复制出来(Ctrl+C)。
  2. 切换到机械层1,用“特殊粘贴”里的Paste on Current Layer粘贴。
  3. 全选刚粘贴出来的轮廓,执行“设计” -> “板形状” -> “根据选择定义板外形”(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(快捷键T+D)。重点关注:

  • 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文件时(快捷键F+F或者文件->制造输出->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做一个“一键互转”插件,彻底解决选择集和类型转换的问题。不过对于多数项目来说,上面几种方法已经足够用了,先把它们练熟,比折腾插件更实在。

返回列表