1. 从一块"不听话"的铜皮说起
画PCB的朋友大概率都遇到过这种场景:板子功能调试得差不多了,突然发现某个连接器、某个测试点、或者某个大功率器件的散热焊盘,需要在阻焊层上开一个特定形状的窗口,让锡膏能直接吃到铜面上,或者让结构件能直接压到裸铜上。这时候你打开阻焊层一看,发现那里正好铺着一大块动态铺铜(Polygon),而阻焊开窗的形状又跟这块铜皮的轮廓不完全一致——要么大一圈,要么小一圈,要么干脆是个异形。
新手的第一反应通常是:在阻焊层上直接画一个Region或者Fill不就行了?画是能画,但问题在于,动态铺铜在重新铺铜(Repour)之后,边界会跟着规则变化,而你在阻焊层上画的图形是死的,两者一旦对不上,开窗就会偏。更麻烦的是,有些板厂的工程审核会检查阻焊开窗与铜皮的关系,如果开窗区域超出了铜皮边界,或者开窗形状与铜皮轮廓差异过大,轻则被EQ问询,重则直接按最小开窗处理,你的设计意图就废了。
所以真正稳妥的做法是:把动态铺铜Polygon转换成静态的Region,然后把这个Region放到阻焊层上作为开窗图形。这样做的好处是,Region是静态的、可精确编辑的,它的形状完全由你控制,不受铺铜规则和Repour的影响;同时,由于它来源于原来的Polygon,形状天然与铜皮一致,开窗精度有保证。
这个操作在Altium Designer(后面统一叫AD)里并不复杂,但里面有几个关键细节,如果没注意到,转换出来的Region要么位置偏了,要么层放错了,要么把铜皮本身给删了。我前后踩过三四次坑,才把这套流程理顺。下面就把整个思路、操作步骤、参数设置和避坑经验完整地拆一遍,不管你是刚接触AD的新手,还是画了几年板子的老手,都能直接照着复现。
2. 为什么非得用Region,直接画开窗不行吗
2.1 动态铺铜和静态Region的本质区别
先把这个核心概念说清楚,不然后面的操作逻辑你理解不了。
AD里的Polygon(铺铜)是动态的,它依附于网络、依附于规则。你画一个Polygon,指定它连到GND,然后Repour,AD会根据当前的安全间距规则、铜皮连接方式(热焊盘还是直连)、以及周围走线和焊盘的分布,自动计算出铜皮的实际填充形状。也就是说,Polygon的"最终形状"是AD算出来的,不是你画出来的。你画的只是它的外轮廓,内部填充是动态生成的。
而Region(区域)是静态的,它就是一个多边形填充,画成什么样就是什么样,不依附于任何网络,不参与规则检查中的铺铜重算。你可以把它理解成一块"死"的铜皮,或者一块"死"的阻焊开窗。
这两者的差异决定了:如果你直接在阻焊层上画一个Region来做开窗,形状是你手画的,跟铜皮轮廓没有必然联系;但如果你把Polygon转成Region,再把这个Region放到阻焊层,那开窗形状就完全等于铜皮形状,精度和一致性都有保障。
2.2 阻焊开窗的常见需求场景
阻焊开窗不是随便开的,通常有这么几类需求:
- 焊接开窗:比如连接器的接地焊盘、大电流走线的加锡区域,需要阻焊开窗让锡能直接吃到铜上,增加载流能力或焊接强度。
- 散热开窗:功率器件底部的散热焊盘,有时候需要开窗让导热硅脂或结构件直接接触铜面,提高散热效率。
- 测试点开窗:测试点如果被阻焊盖住,探针就扎不到铜,必须开窗露铜。
- 结构避让开窗:某些结构件(比如屏蔽罩、金属支架)需要直接压在裸铜上做接地,这时候开窗形状要跟结构件接触面匹配。
- 异形开窗:有些射频器件或者传感器需要特定形状的露铜区域,不是简单的矩形或圆形。
这些场景里,如果开窗区域正好落在一块动态铺铜上,那用Polygon转Region的方法就是最优解。
2.3 直接画Region开窗的三大坑
我最早就是直接在阻焊层上画Region,结果踩了三个坑:
第一个坑:形状对不上。手画的Region跟铜皮轮廓总有偏差,尤其是异形铜皮,你根本画不准。板厂工程审核的时候一看,开窗比铜皮大了一圈,直接问你"是否确认开窗超出铜面",你还得解释半天。
第二个坑:Repour之后铜皮变了。动态铺铜在后续修改走线或调整规则后,Repour一下形状就变了,但你阻焊层的Region没变,结果开窗位置偏了。这种问题在后期改板的时候特别容易出,而且不容易发现。
第三个坑:层放错。AD的层管理有时候会让人迷糊,尤其是从其他层复制粘贴的时候,一不小心就把Region放到了信号层而不是阻焊层,或者放到了阻焊层但没设置正确的极性(Top Solder还是Bottom Solder)。这种错误在3D视图里看不出来,只有出Gerber的时候才会暴露。
所以,用Polygon转Region的方法,本质上是用"形状来源可靠"来解决第一个坑,用"静态Region不参与Repour"来解决第二个坑,用"明确的层转换操作"来解决第三个坑。
3. 核心操作:Polygon转Region的完整流程
3.1 前置检查:确认Polygon的状态
在动手转换之前,先做三件事:
第一,确认目标Polygon已经Repour到最终状态。因为转换之后Region的形状就固定了,如果Polygon还没铺到最终形状,转出来的Region也是错的。操作方法是:Tools菜单里找到Polygon Pours,先Repour All,或者对着目标Polygon右键Repour。确认铜皮形状符合预期。
第二,确认目标Polygon的网络属性。转换后的Region会继承Polygon的网络属性(如果有的话),但放到阻焊层之后,网络属性其实就不重要了,因为阻焊层不参与电气连接。不过为了后续管理方便,建议还是记一下原来的网络名。
第三,确认目标Polygon的层。通常Polygon是在Top Layer或Bottom Layer,转换后的Region默认也会在同一个层。但我们的目标是要把它放到阻焊层(Top Solder或Bottom Solder),所以转换之后还需要改层。这一点后面会详细说。
3.2 关键步骤:用Create Region from Polygon
AD里把Polygon转成Region,最直接的方法是使用Tools菜单下的Convert功能。具体路径是:
Tools -> Convert -> Create Region from Polygon
注意,这个菜单项只有在选中了一个Polygon的情况下才会激活。如果你选中的是其他对象(比如走线、焊盘、Fill),这个选项是灰的。
操作步骤:
- 在PCB编辑器中,单击选中目标Polygon。选中的标志是Polygon边缘出现控制点,并且属性面板里显示的是Polygon属性。
- 打开Tools菜单,找到Convert子菜单,点击Create Region from Polygon。
- AD会弹出一个确认对话框,提示你"转换后原Polygon将被删除,是否继续"。这里要注意:转换是不可逆的,原Polygon会被删除,取而代之的是一个Region。如果你还想保留原Polygon,建议先复制一份备份。
- 点击Yes确认,转换完成。此时原来Polygon的位置会出现一个Region,形状与Polygon的填充形状完全一致。
这里有一个细节:转换出来的Region,它的形状是Polygon的实际填充形状,而不是Polygon的外轮廓。也就是说,如果Polygon内部有避让走线的空洞,转换后的Region也会包含这些空洞。这一点非常重要,因为阻焊开窗通常不需要避让走线,如果Region带了空洞,开窗就会不完整。
3.3 处理转换后的空洞问题
如果你发现转换后的Region内部有空洞(通常是因为Polygon避让了某些走线或焊盘),有两种处理方式:
方式一:手动编辑Region顶点。选中Region,在属性面板里找到Vertices(顶点)编辑,手动删除空洞的顶点,把Region变成一个实心多边形。这种方式适合空洞比较少、形状比较简单的情况。
方式二:用Union操作合并。如果空洞很多,手动删顶点太累,可以先把Region复制一份,然后用Place -> Region重新画一个覆盖整个区域的大Region,再用Tools -> Convert -> Create Union把两个Region合并。不过这种方式操作起来也不轻松。
方式三:回到Polygon阶段处理。更聪明的做法是,在转换之前,先把Polygon的避让规则改一下,让它不避让那些不需要避让的对象。比如,如果Polygon避让了某条走线,但阻焊开窗不需要避让,那就在Polygon属性里把该走线的避让去掉,Repour之后再转换。这样转换出来的Region就是实心的。
我个人的经验是,尽量在Polygon阶段把形状调好,再转换,因为Region的顶点编辑远不如Polygon灵活。
3.4 把Region放到阻焊层
转换完成后,Region还在原来的信号层(比如Top Layer)。接下来要把它放到阻焊层:
- 选中转换后的Region。
- 在属性面板里找到Layer下拉框,把层从Top Layer改为Top Solder(如果是底层就改为Bottom Solder)。
- 确认Region的极性设置。在AD里,阻焊层的Region默认是"开窗"(即负片显示,有Region的地方就是开窗区域)。如果你发现3D视图里开窗区域反了,检查一下Region的属性里是否有"Negative"之类的选项。
这里有一个容易忽略的点:阻焊层的Region不需要网络属性。转换后的Region可能还带着原来的网络名,放到阻焊层之后,建议把网络属性清空,避免后续DRC报错。
4. 参数设置与精度控制
4.1 阻焊开窗的尺寸补偿
阻焊开窗通常要比铜皮实际区域大一点,这个"大一点"的量叫开窗补偿(Solder Mask Expansion)。在AD里,这个补偿通常是在焊盘属性里设置的,但对于Region形式的开窗,你需要手动控制Region的尺寸。
常见的补偿值是0.05mm到0.1mm(单边),具体取决于板厂的工艺能力。如果你的板厂支持更小的阻焊桥,补偿可以小一点;如果板厂工艺一般,补偿就要大一点,避免阻焊残留。
操作方法是:选中阻焊层的Region,在属性面板里找到Vertices编辑,或者用快捷键M -> S(Move Selection)来整体缩放Region。不过AD的Region缩放功能不太好用,更精确的做法是手动调整顶点坐标。
4.2 Region的顶点精度设置
AD的PCB编辑器有网格设置(Grid),Region的顶点会吸附到网格上。为了保证开窗精度,建议在编辑Region顶点之前,把网格设小一点,比如0.01mm或者1mil。操作路径是:View -> Grids -> Set Global Snap Grid,或者用快捷键G快速切换。
提示:网格设得太小会导致顶点难以对齐,设得太大又会影响精度。我的习惯是,在画Region的时候用0.1mm网格,在微调顶点的时候切到0.01mm网格。
4.3 层叠与Gerber输出验证
Region放到阻焊层之后,一定要在Gerber输出里验证一下。操作步骤:
- 打开File -> Fabrication Outputs -> Gerber Files。
- 在Layers选项卡里,确认Top Solder和Bottom Solder层被勾选。
- 生成Gerber后,用Gerber查看器(比如CAM350或者AD自带的Gerber Viewer)打开,确认阻焊开窗的形状和位置正确。
- 特别要注意:阻焊层在Gerber里通常是负片,也就是说,有Region的地方在Gerber里是"空"的(表示开窗),没有Region的地方是"实"的(表示盖阻焊)。如果你看到的结果反了,说明Region的极性设置有问题。
5. 常见问题与排查技巧实录
5.1 转换后Region不见了
现象:点击Create Region from Polygon之后,原Polygon消失了,但Region也没看到。
原因:Region可能被放到了其他层,或者被其他对象遮挡了。AD在转换时,Region默认会放在原Polygon所在的层,但如果原Polygon是在内层(比如Internal Plane),转换后的Region可能被放到了内层,而当前视图只显示了顶层和底层。
解决:打开View -> Panels -> PCB,在Layers区域里把所有层都打开,或者用快捷键L打开层设置,确认Region所在的层是否可见。另外,可以用Edit -> Find Similar Objects来搜索Region对象,快速定位。
5.2 转换后Region形状不对
现象:转换后的Region形状跟Polygon的填充形状不一致,比如少了某一块,或者多了某个凸起。
原因:通常是因为Polygon在转换时还没有Repour到最终状态,或者Polygon内部有复杂的避让关系,转换时AD没有正确处理。
解决:先撤销转换(Ctrl+Z),然后对Polygon执行Repour All,确认形状正确后再重新转换。如果问题依旧,尝试把Polygon的避让规则简化,或者手动编辑Polygon的顶点,把复杂形状拆成多个简单Polygon分别转换。
5.3 阻焊开窗在3D视图里看不到
现象:Region已经放到阻焊层了,但在3D视图里看不到开窗效果。
原因:AD的3D视图默认可能不显示阻焊层的开窗效果,或者需要手动开启。
解决:在3D视图里,按快捷键L打开View Configuration,在General Settings里确认"Show Solder Mask"之类的选项被勾选。另外,3D视图的显示效果跟显卡驱动有关,如果一直看不到,可以尝试切换到2D视图,用Gerber预览来验证。
5.4 DRC报错"Region on Solder Mask"
现象:Region放到阻焊层后,DRC检查报错,提示阻焊层上有Region。
原因:AD的DRC规则里,默认可能不允许在阻焊层上放置Region,或者Region的网络属性与规则冲突。
解决:在Design -> Rules -> Manufacturing里,找到Solder Mask Expansion相关的规则,确认是否有限制。另外,把Region的网络属性清空,避免与电气规则冲突。如果DRC仍然报错,可以在规则里添加一个例外,允许阻焊层上的Region。
5.5 常见问题速查表
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 转换后Region不见了 | Region被放到其他层或被遮挡 | 打开所有层显示,用Find Similar Objects定位 |
| Region形状不对 | Polygon未Repour到最终状态 | 先Repour All,再重新转换 |
| 3D视图看不到开窗 | 3D显示设置未开启 | 检查View Configuration里的Solder Mask选项 |
| DRC报错 | 规则限制或网络属性冲突 | 清空网络属性,调整Manufacturing规则 |
| Gerber里开窗反了 | Region极性设置错误 | 检查Region属性里的Negative选项 |
| 开窗尺寸偏小 | 未做补偿 | 手动调整Region顶点,单边补偿0.05-0.1mm |
6. 进阶技巧:批量转换与脚本自动化
6.1 批量转换多个Polygon
如果你板子上有多个Polygon需要转成阻焊开窗,一个一个手动转效率太低。AD支持批量操作:
- 按住Shift键,依次选中所有目标Polygon。
- 打开Tools -> Convert -> Create Region from Polygon。
- AD会依次转换每个Polygon,但注意,转换后的Region会分散在原Polygon所在的层,需要手动逐个改层。
如果Polygon数量很多,建议写一个简单的脚本来自动化。AD支持DelphiScript和VBScript,可以遍历所有选中的Polygon,执行转换并自动改层。
6.2 用脚本自动改层
下面是一个简单的DelphiScript示例,功能是把选中的Region从当前层移到Top Solder层:
Procedure MoveSelectedRegionsToTopSolder; Var Board : IPCB_Board; Region : IPCB_Region; Iterator : IPCB_GroupIterator; Begin Board := PCBServer.GetCurrentPCBBoard; If Board = Nil Then Exit; Iterator := Board.GroupIterator_Create; Iterator.AddFilter_ObjectSet(MkSet(eRegionObject)); Region := Iterator.FirstPCBObject; While Region <> Nil Do Begin If Region.Selected Then Begin Region.Layer := eTopSolderLayer; End; Region := Iterator.NextPCBObject; End; Board.GroupIterator_Destroy(Iterator); Board.ViewManager_FullUpdate; End;这个脚本的逻辑很简单:遍历当前PCB上所有选中的Region,把它们的层设置为Top Solder。你可以根据需要改成Bottom Solder,或者加上尺寸补偿的逻辑。
注意:AD的脚本编辑器在DXP -> Run Script里打开,脚本文件后缀是.pas(DelphiScript)或.vbs(VBScript)。运行脚本之前,建议先保存PCB文件,避免意外修改无法撤销。
6.3 用Union合并多个Region
如果多个Region需要合并成一个大的开窗区域,可以用Tools -> Convert -> Create Union from Selected Objects。这个功能会把选中的多个Region合并成一个Union,Union在Gerber输出时会被当作一个整体处理。
不过要注意,Union合并后的形状是各个Region的并集,如果Region之间有重叠,合并后重叠部分不会重复计算。这个特性在制作复杂开窗形状时很有用。
7. 实操心得与避坑清单
7.1 转换前一定要备份
Create Region from Polygon是不可逆操作,原Polygon会被删除。如果你对转换结果不满意,想回到Polygon状态,只能撤销(Ctrl+Z),但如果撤销栈已经满了,或者你保存了文件,那就回不去了。所以我的习惯是,在转换之前,先把PCB文件另存一份,或者把目标Polygon复制一份放到旁边作为备份。
7.2 注意Polygon的网络属性
转换后的Region会继承Polygon的网络属性。如果原Polygon是GND网络,转换后的Region也会是GND网络。放到阻焊层之后,这个网络属性其实没有电气意义,但可能会导致DRC报错。建议在改层的同时,把网络属性清空。
7.3 阻焊开窗的补偿要适度
补偿太小,板厂可能因为工艺偏差导致阻焊残留,开窗不完整;补偿太大,可能导致相邻开窗之间的阻焊桥太窄,甚至断桥。一般来说,0.05mm到0.1mm的单边补偿是比较安全的范围。如果你的板子密度很高,阻焊桥很窄,建议跟板厂确认一下他们的最小阻焊桥宽度。
7.4 Gerber输出前一定要预览
Gerber输出是最后一道关,一定要用Gerber查看器预览阻焊层的开窗效果。重点检查:开窗位置是否正确、开窗形状是否与铜皮一致、开窗尺寸是否合适、相邻开窗之间是否有足够的阻焊桥。
7.5 3D视图是辅助,不是最终依据
AD的3D视图可以直观地看到开窗效果,但3D视图的渲染跟实际Gerber可能有差异,尤其是阻焊层的显示。所以3D视图只能作为辅助验证,最终还是要以Gerber预览为准。
7.6 避坑清单
- 转换前先Repour All,确保Polygon形状正确。
- 转换前备份PCB文件,防止不可逆操作。
- 转换后检查Region是否有空洞,必要时手动编辑。
- 改层时确认是Top Solder还是Bottom Solder,别搞反。
- 清空Region的网络属性,避免DRC报错。
- 做尺寸补偿,单边0.05-0.1mm。
- Gerber输出后一定要预览,确认开窗效果。
- 3D视图只能辅助,不能替代Gerber验证。
8. 一个实际案例:大电流连接器开窗
前段时间做了一个电机驱动板,上面有一个大电流连接器,每个引脚需要过10A电流。连接器的焊盘是通孔焊盘,但为了增加载流能力,我在焊盘周围铺了一块Polygon,连到电源网络,然后在阻焊层上开了窗,让锡能直接吃到铜皮上。
具体操作流程:
- 在Top Layer上画了一个Polygon,覆盖连接器所有引脚周围的区域,网络设为VCC。
- Repour All,确认Polygon填充形状正确,没有避让异常。
- 选中Polygon,执行Tools -> Convert -> Create Region from Polygon。
- 把转换后的Region层改为Top Solder。
- 清空Region的网络属性。
- 手动调整Region顶点,单边外扩0.08mm作为开窗补偿。
- 生成Gerber,用CAM350预览,确认开窗形状和位置正确。
- 发给板厂,备注"阻焊开窗区域需露铜,建议采用沉金工艺"。
板厂反馈说开窗形状很规整,没有EQ问询,一次通过。这个案例说明,用Polygon转Region的方法做阻焊开窗,精度和一致性都比手画Region好得多,尤其是对于形状复杂或者需要与铜皮精确对齐的开窗区域。
9. 与其他EDA工具的对比
虽然这篇主要讲AD,但顺便提一下其他工具里的类似操作,方便大家迁移经验。
KiCad里没有直接的Polygon转Region功能,但可以通过"Convert to Zone"或者手动绘制F.Mask层的图形来实现类似效果。KiCad的Zone是动态的,但F.Mask层的图形是静态的,逻辑跟AD类似。
Cadence Allegro里,动态铺铜叫Shape,静态铺铜叫Static Shape。Allegro支持把动态Shape转成静态Shape,然后可以把静态Shape放到阻焊层(Solder Mask层)。操作路径是Shape -> Change Shape Type,然后手动改层。
PADS里,铺铜叫Copper Pour,阻焊开窗通常用Copper或者2D Line在Solder Mask层绘制。PADS没有直接的转换功能,需要手动描边。
总的来说,AD的Polygon转Region功能在易用性和精度上都是比较优秀的,尤其是对于需要精确对齐铜皮的开窗场景。
10. 最后分享几个小技巧
第一个技巧:如果你经常需要做Polygon转Region的操作,可以把Tools -> Convert -> Create Region from Polygon这个菜单项添加到自定义工具栏里,省得每次翻菜单。AD支持自定义工具栏,在View -> Toolbars -> Customize里可以拖拽菜单项到工具栏。
第二个技巧:转换后的Region,如果形状比较复杂,可以用Tools -> Convert -> Create Region from Selected Primitives来进一步编辑。这个功能可以把多个选中的图元(比如Line、Arc)合并成一个Region,适合手动绘制异形开窗。
第三个技巧:在Gerber输出时,可以单独输出阻焊层的预览图,发给板厂确认。AD支持在Gerber Setup里选择"Preview"模式,生成一个PDF或者图片格式的预览,比Gerber文件更直观。
第四个技巧:如果你用的是AD 21或更高版本,阻焊层的Region支持"Smart Mask"功能,可以自动根据铜皮形状生成开窗,不需要手动转换。不过这个功能对复杂形状的支持还不够完美,我一般还是用手动转换的方法。
第五个技巧:在团队协作中,建议把Polygon转Region的操作步骤写成文档,统一规范。因为不同人画板子的习惯不同,有的人喜欢直接画Region,有的人喜欢用Polygon转,如果不统一,后期改板的时候容易乱。