做PCB设计这些年,我发现在实际项目里“开孔”这件事远比想象中容易翻车。尤其是遇到非机械类的圆形孔,比如导光柱安装孔、LED灯杯沉孔、传感器透光窗口、定位销孔、散热通风孔,很多工程师第一反应是画个机械层圆、放个Keepout、或者干脆扔一个Via上去。这些做法不能说完全错,但在后续做DRC检查、出Gerber、和板厂沟通时,会遇到一堆说不清道不明的麻烦。
我最早处理这类需求时也走过弯路。有次做一块带导光柱的面板,为了省事直接在Keepout层画了个圆,结果板厂来邮件问这个圆到底是“禁止布线区域”还是“物理开孔”,来回确认浪费了两天。后来改用Altium Designer里的Board Cutout功能,才发现这个工具就是专门为这种“非螺丝固定类的异性/圆形物理孔”设计的,从设计到输出全程没有歧义,3D视图里也能直观看到镂空效果。
这篇内容围绕“圆形非机械孔”这个场景,把Board Cutout的原理、操作流程、参数设置、输出注意事项和常见坑一次性讲透。不管是刚接触Altium Designer的新手,还是被Keepout和Cutout搞混的老手,都欢迎对号入座。
1. Board Cutout的本质与适用场景
1.1 什么是Board Cutout,它和机械层、Keepout的本质区别
Board Cutout直译是“板子挖空”,在Altium Designer里它是定义在Keepout层(通常显示为紫色)上的一个闭合多边形区域。这里注意一个关键点:Board Cutout本质上是“机械形状定义”,不是“电气规则约束”。这句话很绕,但理解透了你就明白为什么它比Keepout和机械层都更适合做非机械孔。
- Keepout层上的普通图形(比如你随手画的圆)告诉EDA工具的是“这里不能放器件、不能走线”,它只约束你的布线行为,本身不产生物理加工语义。板厂拿到Gerber后,看到Keepout上的圆只能靠猜,猜错了板子就废了。
- 机械层(Mechanical Layer)上的圆呢?它是通用的加工注释层,理论上可以表达任意机械信息,但它没有“专用语义”。板厂需要结合图纸、钻孔文件、装配图才能确定这个圆是铣出来的、还是激光切的、还是仅仅是个标注。
- Board Cutout既被Altium Designer识别为物理挖空区域,又能在输出制造文件时正确映射为铣削数据。它在3D视图里直接显示为镂空,在Gerber输出时可以映射到机械层,在钻孔文件里也能体现(取决于你配置的输出类型)。
用大白话说:Keepout是给“人”看的规则,机械层是给“人”看的标注,Board Cutout是给“人和机器一起看”的物理定义。当你需要表达一个纯粹的物理圆孔、且不想参与电气连接时,Board Cutout在语义上最精准。
1.2 哪些孔适合用Board Cutout,哪些孔应该老实走机械层
不是所有孔都适合Board Cutout。根据我的项目经验,把场景分成三类。
第一类:纯物理外形孔、非金属化孔,典型的比如导光柱孔、LED灯珠透光孔、定位销孔、散热格栅孔。这类孔不参与电气网络,不需要镀铜,不需要焊盘,用Board Cutout最合适。
第二类:金属化安装孔/螺丝孔,比如常见的M3/M2.5固定孔。这类孔有镀铜要求,还需要连接GND或者做星型接地,直接用Pad/Via配合机械层孔径标注就完事。如果你硬要用Board Cutout去挖一个孔然后在旁边放个Via模拟金属化孔,那就太绕了,还容易把钻孔层弄乱。
第三类:异形金属化槽,比如连接器开槽、金手指开槽、板边半孔等。这类需求比较复杂,往往是“机械层+Cutout+走线+铺铜”多方配合,不是单独一个Cutout能搞定的,需要单独设计流程。
所以我给团队定了个简单规则:不镀铜、不连接网络、纯外形的圆形孔,优先Board Cutout;需要导电镀铜的孔,优先Pad/Via。这个规则在执行中几乎没有出过错。
2. 圆形Board Cutout创建实操:三种方式与参数细节
2.1 方式一:菜单放置,最稳的入门操作
在Altium Designer里放置Board Cutout,最标准的路径是:菜单栏Place→Board Cutout。点击后光标会变成十字,进入放置模式,然后直接在PCB上画一个闭合形状就行。
但要注意:如果你直接手动画圆,很难画出正圆。所以我的习惯是先放置一个圆形,再转换为Board Cutout。操作步骤:
- 在Keepout层(如果你开启了Keepout层自动切换,切到
Keep-Out Layer)用Place→Arc (Center)放置一个圆。 - 选中这个圆,按快捷键
T→V→B,或者菜单栏Tools→Convert→Create Board Cutout from Selected Primitives,把选中的圆转换为Board Cutout。 - 转换完成后,这个圆会显示为Keepout层上的紫色圆环,同时被赋予Board Cutout属性。
这种方式最稳,因为你先用“圆心+半径”的方式精确定义了圆,再转换,不会出现椭圆或者封闭不严的问题。
2.2 方式二:快捷键直接画,效率翻倍
如果你已经打开了一个正在设计的PCB,不想走菜单,可以用快捷键:
P→V→B(Place → Board Cutout)。- 进入放置模式后,在Board Cutout模式下画圆:按
Ctrl切换圆弧模式,或者直接按Shift+Space切换放置基元类型,直到出现Arc模式。 - 先用鼠标在板上点一下确定圆心,然后拖动鼠标设置半径,再点一下确定圆的大小,最后确认一次完成放置。
这个方法比较考验鼠标手感,但熟练以后比菜单方式快不少。我的习惯是:如果这个圆的位置和半径在原理图/结构图里已经定死,我就用方式一的“坐标+半径”方式;如果是粗略估计位置、后期再调,用方式二更顺手。
2.3 圆形孔的精确属性设置:坐标、半径、层归属
不管是哪种方式放置,最终你都要在属性面板里把圆做到“精确”。双击这个Board Cutout圆,会弹出属性面板,注意以下参数:
关于层归属的误解:网上经常有人说“Board Cutout必须放在Keepout层”,实际上Altium Designer在放置时会自动将Board Cutout放在Keepout层,并在属性面板的Layer栏显示为Keep-Out Layer,但真正决定它是否生效的,是属性面板中的“Board Cutout”选项卡。只要Board Cutout选项处于勾选状态,它就是一个合法的物理挖空定义。有些人去做Gerber时发现孔没出来,多半不是层放错了,而是输出配置里漏掉了Board Cutout对应的输出项,这个放到后面展开。
精确调整尺寸:如果你需要把半径改成6.35mm,可以这样做:
- 选中这个圆,打开属性面板。
- 在Location区域填入圆心的X/Y坐标,比如
X: 50mm, Y: 40mm。 - 在Radius栏直接填入半径
6.35mm。 - 确认后,这个圆会精确地被定义为圆心在(50,40)、半径6.35mm的物理挖空。
关于孔径的完整定义:对于圆形非机械孔,Board Cutout只定义了“外形孔径”,它默认和板材厚度无关。如果这个孔是通孔(贯穿板子),那就完事了。如果孔需要沉孔(比如导光柱需要卡住一个台阶),那Board Cutout一个圆形是不够的,通常需要在机械层补充沉孔直径标注,或者在3D封装层面做Step模型配合。这里先不展开,但大家要有这个概念。
2.4 批量创建相同孔径的圆形孔
实际项目中导光柱、LED阵列经常是多个圆形孔阵列分布,一个个放太费劲。推荐两种批量方案:
方案一:复制阵列——适合规则排列
把做好的第一个Board Cutout圆选中,按Ctrl+C,然后E→A打开阵列粘贴对话框(Paste Array)。在弹出的对话框中设置:
- Item Count:要复制的数量
- Primary/Secondary Spacing:X/Y方向的间距
确定后,这一排圆孔一次性就出来了。这里有一个坑:阵列粘贴出来的新圆不会自动带网格或者吸附对齐,所以在阵列粘贴之前,先确保间距数值是经过计算的,否则阵列完再逐个微调反而更浪费时间。
方案二:利用PCB List批量修改——适合不规则布局,但属性统一
把所有已放置的Board Cutout圆选中,打开PCB→PCB List面板(或者按快捷键Shift+F),在列表里筛选出Location和Radius列,然后批量修改。这种方式适合后期统一调孔径或统一纠偏时使用,比如设计审查时发现所有孔的孔径都比结构图大了0.1mm,用PCB List一次就能全改完,不用一个个双击。
3. 背后原理:Board Cutout为什么能正确出孔
3.1 Board Cutout与板框(Board Outline)的关系
很多人画完Board Cutout后会在3D视图里发现板子上开了一个洞,这是因为它和板框(Board Outline)同属于“板子物理边界定义”体系。
Altium Designer在3D显示和制造输出时,对“板子形状”有一套完整的建模机制:Base Polygon是最终的板框,Board Cutout是在这个多边形基础上扣掉的子区域。你可以在Design→Board Shape→Define Board Cutout里看到这个逻辑。
所以Board Cutout的正确理解应该是:它是对板框的一种“减运算”。你在板子中间挖一个圆形孔,相当于定义了一块带孔洞的板子外形。这和Keepout层上画个圆有本质区别——Keepout圆只是一个约束区域,它不会让3D视图变出孔洞,也不会进板框几何模型。
也正是因为Board Cutout参与“板框定义”,所以在输出制造文件时,Altium Designer会把基板多边形和所有Board Cutout给你合成一份完整的板框/开槽数据,不需要板厂再去猜。
3.2 Board Cutout与钻孔(Drill)数据的协同逻辑
这里要区分一个概念:圆形非机械孔的“孔”,在制造端通常不是钻出来的,而是铣出来的。为什么这么说?
- 如果孔是金属化孔,它走的是“钻孔(Drill)+沉铜+PTH”工艺,钻孔层会生成NC Drill文件。
- 如果孔是非金属化孔,比如导光柱孔、定位销孔,它通常是“铣削(Routing/Milling)”出来的,靠的是板框/开槽文件,不是NC Drill钻孔文件。
所以当你用Board Cutout挖了一个圆孔,不要指望NC Drill钻孔文件里自动多出一个相同位置的钻孔。在制造文件输出时,Board Cutout是在Gerber的机械层(通常是Mechanical 1或你自定义的开槽层)里表现为一个闭合轮廓,板厂拿到后会用铣刀沿轮廓铣掉这个圆。
那有没有可能Board Cutout同时也输出钻孔数据?部分版本可以配置,但默认不建议这么做。因为同一个孔如果既出现在钻孔文件里又出现在铣削文件里,板厂加工时容易搞混,要么重复加工,要么当作两种孔分别报价。保持语义单一是对制造端的尊重。所以我的做法是:纯非机械孔,只用Board Cutout,不出钻带;要出钻带的孔,用Pad/Via来实现。
3.3 为什么说“非机械孔”这个限定很关键
“非机械孔”这个词看似多余,实际上很精确。机械孔通常指螺丝孔、定位孔这类和装配结构相关的孔,它们往往有金属化要求、有焊盘、有电气网络。而“非机械孔”指的是那些主要服务于光学、散热、外观、传感器功能的圆形孔,它们的核心诉求是“我就是要一块没有铜也没有板材的空心区域”。
如果没有这个限定,直接用Pad/Via开一个孔也是可以的,但那样做的问题是:
- Pad/Via会生成焊盘,会有阻焊开窗,会有钢网层数据,这些对于非机械孔完全多余。
- Pad/Via通常带有网络连接,容易触发未连接网络报错。
- Pad/Via的孔位在生成钻带时会被自动分类到PTH/NPTH里,如果没有正确设置,制造端会产生歧义。
Board Cutout则完全没有这些烦恼:它不生成焊盘,不关联网络,不产生电镀语义。在3D视图里、在机械层输出里、在与板厂沟通时,它就是“一个物理空洞”,干干净净。
4. 从设计到制造:让圆形Board Cutout在输出文件里正确体现
4.1 制造文件输出的关键配置
很多人在Altium Designer里画好了漂亮的圆形Board Cutout,但一出Gerber就发现“孔丢了”,或者在CAM350里看到的是一个没有孔的完整板框。这个问题我遇到的次数太多了,核心原因通常只有一个:输出配置里没有把Board Cutout映射到正确的机械层上。
来看一下标准操作流程(以Altium Designer 24为例,其他版本大同小异):
- 依次打开
File→Fabrication Outputs→Gerber Files。 - 在
General选项卡里勾选Include unconnected mid-layer pads(按需,不是必须)。 - 切换到
Layers选项卡,在Plot Layers区域选择Used On或All On,关键是把机械层项下的Mechanical 1(或你使用的加工机械层)勾上用于输出。 - 关键步骤:在
Mechanical Layers to Add to All Plots里,确保包含有Board Cutout的那个机械层。
但更稳妥的方式是:直接在File→Fabrication Outputs→Fabrication Outputs (OutJob)里新建一个OutJob,然后在OutJob面板里配置Gerber输出时,勾选Mechanical 1和Board Cutout两个选项。Altium Designer 24以后对Board Cutout的输出选项做了一个更明确的功能按钮,叫做Include Board Cutout,画在Keepout上的Cutout会自动转换到输出层的轮廓数据中。如果你找不到这个按钮,最保险的手段是:在输出Gerber时把Keep-Out层也勾选输出,然后在CAM软件里查看Keepout层上对应位置的轮廓是否存在。
4.2 钻孔文件里还需要单独处理吗
如果你的圆形非机械孔只依赖Board Cutout,没有单独放置螺丝孔/Pad之类的东西,那么NC Drill文件理论上不需要包含这个孔。以我的实际打样经验来看,大多数板厂在接收文件时,会同时看Gerber里的板框/开槽层和NC Drill钻孔层,如果某个孔只出现在Gerber里,他们会默认这是开槽加工,不会强行要求你也在钻带里重复定义。
但是为了保险起见,我依然建议在设计交付清单里写清楚一句话:“圆形导光柱孔以Board Cutout定义,不走钻孔,按铣削加工。”这句话能省下至少一个工作日的沟通成本。
4.3 3D视图检查:如何确认孔已生效
设计完成之后,强烈建议用3D视图先自查一遍。按3键进入3D显示模式,按V切换显示模式,或者用快捷键2做2D/3D切换。如果你看到板上出现了圆形镂空区域,说明Board Cutout数据进入到了板框模型。
如果3D视图里没有显示孔,通常有两个排查方向:
- 方向一:你的Board Cutout圆可能画在了非Keepout层上,比如误放在了Top Layer或者Mechanical 2上。检查方法是选中圆后看属性面板的Layer栏,如果是
Top Layer,那它就不是一个真正的Board Cutout,只是一个普通图形。你需要用Tools→Convert→Create Board Cutout from Selected Primitives重新指定,或直接在属性面板里勾选Board Cutout。 - 方向二:3D视图显示的问题。在3D模式下按
Shift+C打开View Configuration面板,确认Board Cutout相关的可视化选项没有被隐藏。
5. 常见问题与排查技巧实录
5.1 Keepout圆和Board Cutout圆混用时,板厂会抓狂
这是最常见的问题,没有之一。我见过不少设计文件里,Keepout层画了一个圆,机械层又画了一个圆,3D视图也看不出问题,但板厂在CAM软件里一看,两个圆有细微的位置偏差或者半径差异,于是他们就会发邮件问“以哪个为准”。
避坑口诀:一个物理孔只在一处定义。决定用Board Cutout,就把机械层上用于表达同一孔位的图形删掉;如果仍需在机械层写沉孔直径、备注文字,那也仅仅是“标注文字”,不要画第二个圆。
5.2 Board Cutout显示正常,但Gerber里位置偏移
这个问题比较隐蔽,通常是板框原点或者公英制设置引起的。Altium Designer里如果当前PCB使用英制单位,而你输入的坐标是按公制算的,会出现明显的位置漂移。比如结构图里圆心在X=48.26mm,你输入时忘了从mil切换成mm,结果放到了1.27mm(50mil)的位置,别提有多尴尬。
解决方法是:在任何输入坐标的地方,先明确当前单位。快捷键Q可以在mm和mil之间快速切换,双击圆时看属性面板里的单位提示,输入坐标值时如果顺手带上了单位(比如直接输入“48.26mm”),Altium会按你指定的单位解析,这样即使当前面板单位是mil也不会出错。
5.3 Board Cutout无法转换为Keepout线,怎么办
有时候你从外部导入的DWG/DXF结构图里带了一个圆形,选中后想用Tools→Convert→Create Board Cutout from Selected Primitives转换,结果发现菜单是灰色的,根本点不了。
这个问题的原因通常是:你选的图元不是一个合法的闭合圆,而是一条圆弧或断开的线(由多段线拼接而成)。对于DXF导入的多段线圆,你可以先全选这些线段,用Tools→Convert→Explode拆散成单段,再通过Place→Arc重新描圆,或者用DCAD设置里把圆弧拟合精度调高后再重新导入。如果不想折腾,最简单的方法是重新用Board Cutout功能手动画一个标准圆,然后删掉导入的残留线条,干净利落。
5.4 快速检查Board Cutout与结构图是否一致
在投板前,我习惯做一个“叠加检查”:
- 将结构图和PCB放在同一个坐标系里,坐标原点一致。
- 在PCB上显示结构图的DXF层,同时显示Board Cutout圆的中心十字坐标。
- 用
Reports→Board Information查看板框信息,并逐一核对每个圆心的位置坐标。
这个操作看起来繁琐,但能提前发现90%的坐标误差问题。我吃过一次亏之后,再也不敢跳过这个步骤了。
5.5 常见问题速查表
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 3D视图看不到孔 | Cutout画错层或者没有勾选Board Cutout属性 | 选中圆,检查Layer栏和Board Cutout属性 |
| Gerber里没有孔 | 输出配置漏掉Keepout层或对应机械层 | 在Gerber设置里勾选Keepout/对应机械层并映射Cutout |
| 孔位偏移 | 单位混用或坐标粘贴错误 | 用Q切换单位,输入坐标时带单位后缀 |
| 转换菜单灰色 | 图元不是标准闭合圆/圆弧 | 用标准ARC重画,或者调整导入精度 |
| 板厂不确认孔 | Keepout和机械层混用了两个圆 | 只保留Board Cutout一种定义,删除重复图形 |
| 钻孔文件也出现该孔 | 可能误用了Pad/Via表达非机械孔 | 不要用Pad/Via表达非机械孔,改用Board Cutout |
6. 从工程伦理角度聊聊为什么别把Keepout当开孔工具
这个问题有点偏“理念”,但恰恰是很多项目后期返工的根本原因。我必须直言:用Keepout表达物理开孔是一种短期偷懒、长期埋雷的做法。
Keepout在EDA工具里的核心定位是“规则约束区域”——它告诉Place和Route工具“不要在这里放东西”。当你把物理开孔也用Keepout表达时,你就把两套信息混在一个图层里了。短期看只要板厂理解你的意思,板子照样能做出来。但一旦设计文件需要做复用、需要走仿真、需要做DFM自动检查、需要交接给其他工程师,Keepout上的“禁止区域圆”和“物理开孔圆”就无法被机器自动区分,最终只能靠人工看图,效率和质量全部压在人身上。
Board Cutout的存在就是要把“物理形状信息”从“规则约束信息”里剥离出来。这是一种信息架构上的进步,很接近我们做代码模块化时“单一职责原则”的思路——一个图层/一个对象只承担一种语义,不要混装。
实际项目里,我见过一个射频板的设计文件,里面的Keepout层上密密麻麻有四十多个圆,有屏蔽罩的避让区域、有螺丝孔的禁布区、有导光柱的物理开孔。接手的新同事根本分不清哪些要铣穿、哪些只影响布线,最后还是我去跟结构工程师和板厂逐个核对,硬生生花了一整天。如果用Board Cutout区分,这份文件至少可以节省80%的沟通时间。
所以,用Board Cutout承载“圆形非机械孔”的物理定义,既是工具使用的正解,也是让设计文件更清晰、更可交接的工程伦理问题。我建议从今天起,所有新的PCB设计都强制自己使用这个功能,习惯了之后你根本不会想回到“Keepout画圆交板厂”的原始时代。
7. 我的实操习惯与建议
最后再分享一点我个人的工作习惯。我做圆形Board Cutout的时候,一定会顺手做三件事,这三件事帮我省掉了后面大量跟板厂沟通的时间。
第一件事:在丝印层上标注孔的功能注释。比如在圆孔旁边放一个小的Text:导光柱开孔, 按Board Cutout铣削, 直径6.4mm。文字不用大,能看清就行。这个注释不是给Altium看的,是给CAM工程师看的,能减少误解。注意文字不要压在孔上,否则最后丝印套不准会影响读取。
第二件事:在文档输出前跑一遍DRC里的Board Outline检查。Altium Designer的DRC可以检查板框相关的规则,包括Board Cutout是否封闭、是否超出板框边界等。如果有不封闭的圆,DRC会给你提示。跑完一遍DRC再出文件,心里踏实很多。
第三件事:投板前用CAM350或Altium的Gerber预览功能看一遍输出结果。重点确认圆形轮廓在Gerber里的位置、半径、所在层都OK,且不存在和板框重影、错位的情况。如果发现半径差了一丁点,回到PCB里改完重出Gerber,不要试图在CAM软件里“手动修一下”——那是自欺欺人。
Board Cutout这个功能本身不复杂,但把它用好、用对、用得顺手,需要在实际项目中反复验证。我在多块量产板上用这套方法做圆形导光柱孔和传感器窗口孔,板厂一次通过率明显提升,连售后确认的邮件都少了很多。如果你也在为“如何精准创建一个圆形非机械孔”纠结,希望这篇经验能让你少踩几个坑。