1. 异形板框调整的核心痛点与解决思路
搞过异形板框的人都知道,这事儿在Altium Designer里说简单也简单,说头疼也是真头疼。标准矩形板框随便画,但一旦遇到圆弧过渡、多段折线、带内嵌槽孔的异形结构,尤其是结构工程师丢过来一个CAD文件让你整体内缩0.5mm或者外扩1mm的时候,如果还在用"选中线条→拖动"这种原始操作,那基本就是在给自己找罪受。我见过太多人在这上面翻车——要么线条断了,要么圆弧变形,要么内缩之后尺寸对不上,最后只能重新从CAD导一遍,白白浪费大半天。
这篇文章要聊的,就是Altium Designer中异形PCB板框快速内缩与外扩的实战方法。核心解决三个问题:第一,如何在不破坏原有异形轮廓的前提下实现整体等距偏移;第二,内缩和外扩分别适用于什么场景,参数怎么定;第三,操作过程中有哪些坑是文档里不会写的。适合已经能画基本板框、但对异形处理还不够熟练的PCB设计人员,也适合想提升板框编辑效率的老手参考。
先说清楚一个基本概念。PCB板框在Altium Designer里本质上就是闭合的Polyline(折线)或Arc(圆弧)组合,它定义在Keep-Out Layer或者Mechanical Layer上。所谓内缩,就是让整条轮廓线向板子内部等距偏移一个距离;外扩则相反,向外部等距偏移。听起来像是CAD里的Offset命令对吧?Altium Designer确实有类似功能,但入口藏得比较深,而且对异形轮廓的处理有一些限制条件,不搞清楚这些条件,操作就会失败。
为什么板框内缩和外扩这么重要?实际项目中至少有三类场景会频繁用到。第一类是结构配合:外壳卡槽要求PCB边缘与壳体之间留0.3~0.5mm间隙,结构工程师给的初始轮廓是理论值,实际投板时需要内缩。第二类是拼板需求:多块小板拼在一起时,V-Cut或者邮票孔的位置需要板框外扩来预留工艺边。第三类是安规间距:高压区域要求板边到走线有最小距离,板框需要内缩来保证爬电距离。这三类场景对精度的要求不同,操作方式也有差异,后面会逐一展开。
我个人的习惯是,拿到异形板框后先不急着改,而是先做三件事:确认轮廓是否闭合、确认线宽是否统一、确认图层归属是否正确。这三步看起来简单,但90%的偏移失败都跟这三件事有关。轮廓不闭合,偏移命令直接报错;线宽不统一,偏移后的间距会不均匀;图层归属混乱,偏移出来的线条可能跑到错误的层上。所以别嫌麻烦,前期检查五分钟,后面省心两小时。
2. 板框内缩的完整操作流程与参数计算
2.1 内缩前的轮廓预处理
内缩操作能不能成功,预处理占七成。Altium Designer的板框偏移功能对轮廓的"干净程度"要求很高,什么叫干净?就是首尾闭合、无重复线段、无零长度线段、圆弧与直线相切处无断点。我一般用以下步骤来检查:
- 选中板框所有线条,按快捷键
Ctrl+H或者菜单Edit → Select → All on Layer,确保只选中了板框所在的层。 - 打开
Panels → PCB List面板,查看选中对象的类型和数量。正常的异形板框应该是若干条Polyline和Arc的组合,如果出现了Region或者Fill,说明轮廓里混入了填充对象,需要先清理。 - 用
Tools → Design Rule Check跑一遍,重点看是否有"Open-ended track"或者"Short-circuit"的报错。板框不闭合的话,这里会明确提示。
注意:很多人习惯在Keep-Out Layer上画板框,但实际上从AD 18版本之后,官方推荐用Mechanical Layer来定义板框,Keep-Out Layer更多用于定义禁布区。如果你用的是老版本或者公司有统一规范,按规范来就行,但偏移操作本身跟图层关系不大,关键是轮廓要闭合。
预处理还有一个容易被忽略的点:线宽。板框线的线宽本身不影响板子外形,因为板厂是按照线条的中心线来切割的。但在做偏移计算时,Altium Designer默认是按照线条中心线来偏移的,所以如果你希望内缩后的实际板边距离原始板边是0.5mm,那偏移距离就填0.5mm,不需要加减线宽。这一点跟CAD的Offset逻辑一致,但跟某些EDA工具不同,别搞混了。
2.2 使用"Convert"功能实现等距内缩
Altium Designer没有直接的"Offset"命令,但有一个等效的功能藏在Tools → Convert菜单里。具体操作路径是:
- 选中板框的所有线条(确保是闭合轮廓)。
- 菜单栏
Tools → Convert → Create Board Outline from Selected Primitives。这个命令原本是用来从选中的线条生成板框的,但它有一个隐藏特性:如果选中的轮廓已经是一个板框,执行后会生成一个向内偏移的副本。不过这个特性在不同版本里表现不一致,AD 20之后的版本更稳定。
更可靠的方法是使用"Outline Selected Objects"功能。操作如下:
- 选中板框轮廓。
- 按
Ctrl+C复制,然后Ctrl+V粘贴到同一位置(或者用Edit → Duplicate)。 - 选中复制出来的轮廓,在
Properties面板中找到Outline选项,设置Outline Width为你想要的内缩距离。 - 然后使用
Tools → Convert → Create Region from Selected Primitives,将轮廓转换为Region。 - 最后再
Tools → Convert → Create Board Outline from Selected Region,这样就得到了一个内缩后的板框。
这个方法听起来绕,但实测下来最稳定,尤其是对复杂异形轮廓。原理是先把线框转成面域,面域再转回线框时,Altium Designer会自动按照面域的边界生成新的轮廓线,而面域的边界就是你设置的Outline Width的内边缘。
2.3 内缩距离的计算与验证
内缩距离怎么定?这不是拍脑袋决定的,要根据具体场景算。以结构配合为例,假设外壳内壁尺寸是100mm×80mm,PCB外形要求单边留0.4mm间隙,那么板框内缩距离就是0.4mm。但这里有个细节:外壳内壁的尺寸公差。如果外壳是注塑件,公差通常在±0.2mm左右,那你的间隙就不能只留0.4mm,至少要留0.6mm才能保证装配不干涉。所以内缩距离 = 理论间隙 + 公差余量。
验证内缩结果是否正确,我一般用两种方法。第一种是测量法:在Reports → Measure Distance里,测量原始板框和内缩后板框之间的垂直距离,抽查几个关键位置,看是否等于设定的内缩值。第二种是叠图法:把内缩后的板框导出为DXF,跟原始板框的DXF在CAD里叠在一起,一眼就能看出偏移是否均匀。第二种方法更直观,尤其是对圆弧段和斜线段,测量法可能因为取点位置不同而有误差。
实操心得:内缩操作完成后,建议把原始板框保留在一个单独的Mechanical Layer上作为参考,不要直接删除。后续如果结构有变更,你还能对比原始轮廓快速调整。我通常会把原始轮廓放在Mechanical 2层,内缩后的板框放在Mechanical 1层,Keep-Out Layer单独用来画禁布区,这样层次清晰,后期改板不容易乱。
3. 板框外扩的实战方法与工艺边预留
3.1 外扩与内缩的本质区别
外扩和内缩在操作逻辑上是对称的,但实际处理时有几个关键差异。第一,外扩后的轮廓可能超出原始设计区域,如果原始板框已经靠近图纸边缘,外扩后可能会跟其他对象重叠,需要提前检查。第二,外扩通常用于拼板工艺边,工艺边的宽度有行业标准,一般是5mm或10mm,不是随便定的。第三,外扩后的板框需要重新定义原点,否则后续拼板时坐标会对不上。
Altium Designer里做外扩,最直接的方法是先内缩一个负值。没错,偏移距离填负数就是外扩。但前提是你的操作方法是基于Region转换的那种,如果是直接拖动线条,填负值是不生效的。所以我还是推荐用前面说的Region转换法,把Outline Width设为负值(比如-1mm),生成的就是外扩后的轮廓。
不过外扩有一个特殊情况:如果原始板框有内嵌的槽孔(比如异形板中间的镂空区域),外扩时槽孔应该缩小而不是扩大。这时候就不能整体偏移了,需要单独处理。我的做法是先把外轮廓和内槽孔分开,外轮廓做外扩,内槽孔做内缩,然后再合并成一个完整的板框。这个过程在AD里操作起来比较繁琐,如果槽孔形状复杂,建议直接在CAD里处理完再导入。
3.2 拼板工艺边的外扩参数
拼板是外扩最常见的应用场景。假设你有一块50mm×30mm的小板,要做成2×2拼板,每块板之间留2mm间距,四周加5mm工艺边。那么外扩的计算如下:
- 单块板尺寸:50mm×30mm
- 拼板后阵列尺寸:2×50 + 2 = 102mm(横向),2×30 + 2 = 62mm(纵向)
- 加工艺边后总尺寸:102 + 5×2 = 112mm(横向),62 + 5×2 = 72mm(纵向)
所以在Altium Designer里,你需要先复制出4块板框,按间距排列好,然后选中所有板框的外轮廓,整体外扩5mm。注意这里外扩的是拼板后的整体外轮廓,不是单块板。如果搞错了对象,工艺边就会加到每块小板之间,那就乱套了。
注意:拼板外扩后,V-Cut的位置需要单独标注。V-Cut线通常放在Mechanical Layer上,宽度设为0,板厂会根据这条线来切割。邮票孔的位置也要在外扩后的板框上重新标记,孔间距一般是0.5mm~1mm,孔径0.3mm~0.5mm,具体看板厂工艺能力。
3.3 外扩后的DRC检查要点
外扩完成后,必须重新跑DRC。重点检查三项:第一,板框是否仍然闭合,外扩操作有时会在圆弧段产生微小断点,肉眼看不出来但DRC会报错。第二,外扩后的板框是否与禁止布线区冲突,如果Keep-Out Layer上有禁布区,外扩后板框可能侵入禁布区,导致DRC报"Board outline violation"。第三,工艺边上的mark点、定位孔是否被覆盖,这些辅助对象通常放在板框外侧,外扩时要确保它们没有被新板框吞掉。
我踩过的一个坑是:外扩后忘记更新板子的原点,结果导出Gerber时坐标偏移了一大截,板厂反馈说文件对不上。后来养成的习惯是,每次板框调整后,都用Edit → Origin → Set重新设定原点,一般设在板框的左下角或者拼板后的左下角,这样后续所有坐标都以此为基准,不会乱。
4. 异形板框调整中的常见问题与排查技巧
4.1 偏移后圆弧变形或断裂
这是异形板框调整中最常见的问题。原因通常有三个:圆弧的圆心角太小、圆弧与直线的连接处没有真正相切、偏移距离大于圆弧半径。前两个是几何问题,第三个是参数问题。
如果圆弧的圆心角小于5度,偏移后Altium Designer可能会把它当成直线处理,导致形状失真。解决办法是先把小圆弧合并成一条Polyline,或者手动调整圆弧的端点。如果圆弧与直线不相切,偏移后连接处会出现尖角或者断点,这时候需要用Tools → Convert → Create Arc from Selected Primitives重新拟合。
偏移距离大于圆弧半径的情况比较少见,但一旦发生,圆弧会直接消失或者翻转。比如一个R=0.5mm的圆角,你内缩0.6mm,这个圆角就没了。所以内缩距离一定要小于最小圆弧半径,这是硬性约束。如果结构要求内缩距离必须大于最小圆角半径,那就只能先把圆角改大,或者接受圆角消失后重新倒角。
4.2 偏移后线条不闭合
线条不闭合的根源通常是原始轮廓就有问题,只是偏移操作把它放大了。排查步骤:
- 在
PCB List面板中筛选出所有Polyline和Arc,按端点坐标排序,检查相邻线条的端点是否重合。 - 如果端点不重合,用
Edit → Move → Drag手动把端点拖到一起,或者用Tools → Interactive Routing重新连一段线。 - 检查是否有零长度线段(起点和终点坐标相同),这种线段在偏移时会变成点,导致轮廓断开。用
PCB List按长度排序,把长度为0的线段删掉。
实操心得:我一般会在偏移之前,先用
Tools → Design Rule Check跑一遍,把"Open-ended track"的报错全部解决掉。这个检查比肉眼靠谱得多,尤其是对复杂的异形轮廓,肉眼根本看不出哪里断了。
4.3 偏移距离不均匀
偏移距离不均匀的表现是:有些地方偏移了0.5mm,有些地方偏移了0.3mm。这通常是因为原始轮廓的线宽不统一。Altium Designer在偏移时,如果线条的线宽不同,偏移的基准线会发生变化。解决办法很简单:在偏移之前,把所有板框线条的线宽统一设置为同一个值,比如0.1mm。线宽本身不影响板子外形,但会影响偏移的基准,所以统一线宽是必须的。
另一个可能的原因是轮廓中混入了不同图层的对象。比如有些线条在Mechanical 1层,有些在Mechanical 2层,偏移时Altium Designer会分别处理,导致偏移距离不一致。解决办法是先把所有板框线条移到同一层,再执行偏移。
4.4 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| 偏移命令报错 | 轮廓不闭合 | DRC检查Open-ended track | 手动闭合或重新连线 |
| 圆弧变形 | 圆心角过小或不相切 | 测量圆弧角度和切点 | 合并圆弧或重新拟合 |
| 偏移距离不均匀 | 线宽不统一或图层混乱 | PCB List查看线宽和图层 | 统一线宽和图层 |
| 偏移后轮廓消失 | 偏移距离大于圆弧半径 | 检查最小圆弧半径 | 减小偏移距离或改大圆角 |
| 外扩后DRC报错 | 板框侵入禁布区 | 检查Keep-Out Layer | 调整禁布区或板框 |
| 导出Gerber坐标偏移 | 原点未更新 | 对比原始坐标 | 重新设定原点 |
5. 高效操作的习惯与版本差异提醒
5.1 我常用的快捷键与操作习惯
在Altium Designer里做板框调整,有几个快捷键能大幅提升效率。Ctrl+H选中同层所有对象,Shift+Click加选,E→S→A全选,E→O→S设置原点。偏移操作本身没有默认快捷键,我一般会在Preferences → Shortcuts里自定义一个,比如Ctrl+Shift+O绑定到Tools → Convert → Create Region from Selected Primitives,这样操作起来快很多。
另一个习惯是分层管理。原始板框放Mechanical 2层,内缩/外扩后的板框放Mechanical 1层,Keep-Out Layer只画禁布区,尺寸标注放Mechanical 3层。这样任何时候打开PCB文件,一眼就能看出哪层是哪层,不会搞混。尤其是多人协作的项目,分层清晰能省掉很多沟通成本。
5.2 不同版本的行为差异
Altium Designer的板框偏移功能在不同版本里差异挺大的。AD 17及之前的版本,Tools → Convert菜单里的选项比较少,偏移操作主要靠手动拖动或者脚本。AD 18到AD 20,Create Board Outline from Selected Primitives功能逐渐稳定,但Region转换法还是最可靠的。AD 21之后的版本,官方加入了更智能的轮廓识别,偏移操作的成功率明显提高,但偶尔还是会有圆弧处理不完美的情况。
如果你用的是AD 24或更新版本,可以试试Design → Board Shape → Define from selected objects这个路径,它比老版本的Convert菜单更直观。不过核心逻辑没变:先确保轮廓闭合且线宽统一,再执行偏移,最后验证结果。版本只是操作入口不同,底层原理是一样的。
注意:如果你在团队里协作,建议统一Altium Designer的版本。我遇到过因为版本差异导致板框偏移结果不一致的情况,AD 19里偏移0.5mm没问题,AD 22里同样的操作偏移出来是0.48mm,虽然差别很小,但对高精度板子来说就是不合格。统一版本能避免这类问题。
5.3 脚本自动化:批量处理多个板框
如果一个项目里有多个异形板框需要调整,手动操作就太慢了。Altium Designer支持脚本自动化,用DelphiScript或者VBScript可以批量执行偏移操作。我写过一个简单的脚本,逻辑是:遍历当前PCB文档中所有Mechanical Layer上的闭合轮廓,对每个轮廓执行Region转换和偏移,最后输出偏移后的板框到指定层。脚本的核心代码大概是这样:
// DelphiScript 示例:批量内缩板框 Procedure OffsetBoardOutlines(OffsetValue : Double); Var Board : IPCB_Board; Iterator : IPCB_BoardIterator; Track : IPCB_Track; Begin Board := PCBServer.GetCurrentPCBBoard; Iterator := Board.BoardIterator_Create; Iterator.AddFilter_ObjectSet(MkSet(eTrackObject)); Iterator.AddFilter_LayerSet(MkSet(eMechanicalLayer1)); Track := Iterator.FirstPCBObject; While Track <> Nil Do Begin // 对每条Track执行偏移逻辑 // 实际代码需要处理闭合轮廓的识别和Region转换 Track := Iterator.NextPCBObject; End; Board.BoardIterator_Destroy(Iterator); End;这个脚本只是框架,实际使用需要补充轮廓闭合判断和Region转换的代码。但思路是通用的:批量操作的核心是识别闭合轮廓,然后对每个轮廓独立执行偏移。如果脚本写起来太复杂,也可以考虑用Python配合Altium的API,不过那就需要额外的环境配置了。
5.4 与CAD协同的工作流建议
很多异形板框最初是在CAD里画的,导入Altium Designer后需要调整。我的建议是:如果偏移操作比较简单(比如整体内缩一个固定值),直接在Altium Designer里做;如果偏移涉及复杂的局部调整,回CAD里做更高效。CAD的Offset命令对异形轮廓的处理比Altium Designer成熟得多,尤其是带样条曲线的轮廓,CAD里偏移几乎不会出问题。
导入CAD板框时,注意单位要统一。CAD默认可能是毫米,Altium Designer导入时如果单位设成了mil,尺寸会差25.4倍。导入后先用Reports → Measure Distance量一下关键尺寸,确认无误后再做偏移。另外,CAD里的样条曲线导入Altium Designer后会变成Polyline,精度可能会损失,如果对轮廓精度要求高,建议在CAD里先把样条曲线转换成圆弧和直线的组合,再导入。
6. 个人实操体会与后续扩展方向
板框内缩和外扩这件事,说到底是个熟练工种。我第一次做异形板框内缩的时候,折腾了两个小时才搞定,中间还因为轮廓不闭合反复报错。后来做多了,发现核心就三步:检查闭合、统一线宽、Region转换偏移。这三步做到位,95%的异形板框都能顺利处理。剩下的5%是极端情况,比如自相交轮廓或者带孔洞的复杂形状,那就需要单独处理,没有万能方法。
我个人的经验是,不要迷信工具的一键操作。Altium Designer的板框功能虽然一直在改进,但对异形轮廓的支持还是不如CAD。如果时间充裕,回CAD里做偏移再导入,反而更快更准。如果时间紧,就用Region转换法在Altium Designer里硬做,但一定要留出验证的时间,别偏移完就直接投板。
后续如果大家对这个话题感兴趣,可以进一步聊聊拼板时的板框处理技巧,比如V-Cut和邮票孔的混合拼板怎么画板框,或者刚柔结合板的板框定义,那个比普通异形板框复杂得多,涉及软板区域的轮廓处理和弯折线的标注。这些内容展开又是一大篇,有机会再单独写。