很多刚接触Cadence Allegro的人第一次听到“机械符号”这个名词,往往一脸懵,甚至误以为这是画螺丝、钣金件用的。其实在Allegro体系里,机械符号(Mechanical Symbol)专门负责一类非常重要的东西——板子的物理外形。板框、安装孔、定位孔、引导槽、V-cut标记、禁布区域……这些不属于任何具体元器件、又决定了整板能否装配进机箱的几何对象,全部归它管。
传统做法里,不少工程师习惯直接在PCB文件里用Add -> Rectangle画一个外形,图省事。但干过几年PCB设计的人应该都有体会:板框这种几何数据,和结构工程师的DXF、外壳的3D STEP模型强相关,经常要在项目中期反复修改。如果每次都去手工改.brd,不仅容易漏,还容易把板框和走线铜箔混在一起,后期光“哪些线是外形线”都要找半天。
所以正规流程是:单独建一个Mechanical Symbol文件(.dra),专门承载板框和各种结构孔,然后像放元器件一样把它放进PCB板里。这篇我把我自己做机械符号的完整流程、参数设置、踩坑记录都整理出来,适合正在学Allegro画板、或者想规范板框管理流程的工程师参考。
1. 机械符号到底是什么:先分清楚Allegro的四类库文件
1.1 四种符号的分工
Allegro的库符号系统分成四大类,很多新手容易混淆。让我用一张表讲清楚:
| 符号类型 | 文件后缀 | 主要作用 | 典型内容 |
|---|---|---|---|
| Package Symbol | .dra → .psm | 元器件封装 | 焊盘、丝印、装配参考、Place_Bound |
| Mechanical Symbol | .dra → .bsm | 板级机械结构 | 板框、安装孔、定位孔、开槽、禁布区 |
| Format Symbol | .dra → .osm | 图纸格式 | 图框、标题栏、表格 |
| Shape Symbol | .dra → .ssm | 可复用形状 | 不规则铺铜片、特殊结构铜块 |
这里要注意,机械符号生成后编译成 .bsm 文件(Board Symbol,和Package Symbol的.psm相对应)。这个后缀虽然不常被直接提到,但在Placement放置面板里,你能看到的就是.bsm。
1.2 机械符号和封装符号的边界在哪
机械符号 ≠ 封装符号。封装符号负责的是“元器件本体”——包括焊盘、阻焊、丝印等,它依附于电路逻辑,通过原理图网表进入PCB。而机械符号不挂网表,没有任何电气属性,它只负责“板子这个物理物体”的几何轮廓。
从使用方式上也能区分:封装符号通过Place -> Manually从封装列表里调取;机械符号同样在Place -> Manually里调取,但来源列表不同,是从Mechanical Symbols分类下选。放到板子上后,封装符号会带着器件位号、连接关系,机械符号则只是一个静态几何块。
1.3 什么时候应该建机械符号
我在实际项目里,以下场景都推荐建机械符号:
- 每一块新PCB的板框:这是最典型的使用场景。
- 同一结构外形在多板项目里复用:比如一块背板加多块子板,外形相同、层数不同,机械符号就是最好的复用对象。
- 板框频繁修改的迭代期:结构工程师几天一版图纸,你只改机械符号,PCB主文件不用每次动结构。
- 包含复杂异形、开槽、台阶槽的板框:用机械符号统一管理这些几何数据,比散落在Board Geometry层上清晰得多。
当然,有一种情况不需要建独立机械符号——如果你的项目非常简单、一次打样后结构不再改、板框也就一个矩形,那直接在.brd里画确实省事。但哪怕如此,我依然建议养成建机械符号的习惯,因为从我用Allegro多年的经验来看,凡是后期要改几次外形、要出3D STEP、要和结构对位配合的板子,机械符号带来的规范价值非常大。
2. 动手之前的三个决定:单位、层名、图纸边界
2.1 单位设置为什么排第一
这是我在实际工作中处理过最多问题的地方。Allegro里的单位是支持英寸、密尔、毫米、微米等几种的,默认往往是Mils。如果你要手动画板框,而数据来源是结构工程师给的毫米图纸,那第一步必须先把单位切到Millimeter,否则你画一条100mm的边,在Mils下就是100个mil,整整差了39.37倍。
单位的切换路径:Setup -> Design Parameter Editor -> Design Tab页 -> User Units下拉框选择Millimeter。
注意:这里切换单位,只影响后续输入数值的解释方式,并不会自动等比缩放已有图形。所以必须在画图之前确认单位,而不要画完了再去切换。这个单位设置会保存在符号文件里,下次打开不用重复设置,但如果你从模板库复制了一个旧文件来改,也要检查一遍。
2.2 Outline、Design Outline 还是其他层
Allegro的版本迭代导致层名有变化。老版本(16.x、17.2之前)板框通常是画在 Board Geometry -> Outline 层;17.2之后引入新的 Design Outline 层,用来替代原先的Board Geometry Outline。实际项目里,两种做法都存在,关键是保持一致。
如果你要画的板框还要被后续的智能制造流程使用(比如板厂制作外形),建议画在Outline这一层;但如果你希望板框与结构限制、定位孔信息在逻辑上分离,也可以用Design Outline。比较稳妥的做法是:先问公司或团队的板框设计规范;没有规范的话,按当前版本Allegro默认推荐的层来走,17.4及以上一般用Design Outline,老版本用Board Geometry -> Outline。
不管选哪一层,机械符号里画其他元素时也要分层明确:
- 板框外形 → Outline 或 Design Outline
- 安装孔、定位孔 → 用Padstack放孔,搭配Manufacturing层标注
- 禁布区域 → Route Keepout / Package Keepout 或 Board Geometry 的相应子层
- 标注文字 → Manufacturing -> Dimension 或 Board Geometry 子层
分层清晰的价值,会在项目半年后返修时体现出来——如果你把孔位标注、板框线全堆在一个层里,到时候找都找不到哪根线是结构参考线。
2.3 图纸边界(Extents)怎么设
新建符号文件后,默认的画布范围可能非常小,如果你直接画一个200mm的板框,往往会发现线条画出去了但看不见。这个问题的根源是Extents设置。
在Setup -> Design Parameter Editor -> Design Tab里,有一组Drawing Extents参数:Left X、Lower Y、Width、Height。它定义了可绘图区域。我一般会留出比板框大10mm到20mm的余量,比如200mm x 150mm的板,我会设置Left X=-10,Lower Y=-10,Width=230,Height=180。
不设置Extents也可以“盲画”,但后续加入标注、放置附加元素时容易出问题,而且导出DXF时也可能裁剪掉画布外的图形。所以我的习惯是:新建符号的第一件事,设好单位;第二件事,设好Extents。
2.4 数据来源:DXF图纸如何预处理
这一步虽然发生在Allegro之外,但它决定了导入结果的好坏。
结构工程师给的DXF通常是AutoCAD导出的,里面有大量的辅助线、中心线、甚至还有一些块引用和文字说明。直接整个导入,Allegro里会多出一堆无用线条,你还得一根根删。
所以导入前,我建议先在CAD里做一次“减负”:
- 把无关图层关闭或删除,只留外形层和孔位层;
- 确认中心点、原点位置,最好让结构图和你的PCB坐标原点对齐;
- 确认单位:DXF文件自身有单位信息,但Allegro导入时经常需要手动指定,要提前问清楚结构是用mm还是inch画的;
- 把块引用炸开(如果有),避免导入后某些图元被当成块无法编辑。
这一步花10分钟,能省下后面两个小时。
3. 手动创建机械符号:从新建 .dra 到保存 .bsm
3.1 新建符号文件的正确姿势
在Allegro中新建机械符号,路径是:File -> New,然后Drawing Type选择Mechanical symbol,文件命名完保存,就进入符号编辑环境了。
这里有一个很多人初见会发懵的点:Drawing Name填写的是不带后缀的文件名,Allegro会自动补.dra。保存后你会在当前工作目录看到 .dra 文件;最后用 File -> Create Symbol 生成 .bsm 库文件。
新建好文件后,先做两件事:按前面说的设置单位和Extents,然后确认打开的颜色显示。如果板框层颜色被隐藏了,你画了线条也看不到,误以为没画上。这是一个很低级但非常普遍的坑。
3.2 板框怎么画:Add Rectangle 和 Add Line 的差异
Allegro里有两种常见画法:
- Add -> Rectangle:直接拖一个矩形,适合简单的四边外形,但圆角、倒角、异形处理起来不方便。
- Add -> Line:一条条线画,灵活性强,可以精确输入坐标和长度方向。
如果只是矩形板,用Rectangle当然快;但如果板框有圆角、有开槽、有阶梯状边界,我建议直接用Line模式一段段画,或者用Rectangle画完再倒角。画每条边时,在命令窗口输入精确坐标和长度,而不是鼠标乱拖。
画完外形线之后还有个关键动作:保证线条首尾闭合。闭合不是“看起来闭合”就行,而必须是端点真正相接。如果不闭合,后续的Z-copy、板框生成、3D模型导出都会出问题。
手动闭合的技巧:
- 使用Setup -> Outlines -> Board Outline,让Allegro自动识别闭合的线并设置为板框属性;
- 或者检查每个端点上是否有绿色显示标记,如果不是闭合,端点处会显示断开;
- 最笨但有效的方法:把线段全部选中删掉,再用Add -> Line按坐标重新连一次。
3.3 安装孔和定位孔怎么放
板框画好后,结构孔是机械符号里的第二个主角。放孔有两种思路:
- 直接放封装焊盘(Padstack):用Layout -> Pins放置一个通孔焊盘,这样在制造Gerber时能直接出孔。这是我最常用的方式。
- 用Board Geometry层画圆形+孔标注:适合只用于装配参考、不必须出孔的定位孔。
我推荐第1种。因为机械符号的安装孔本质是要在板厂加工出来的物理通孔,用Padstack放,孔径、镀不镀铜、有没有沉铜,都能通过Padstack Editor精确控制。比如一个3.2mm的安装孔,我会定义Drill diameter=3.2mm,Regular Pad=3.2mm或稍微大一点,Anti-pad也同步设置,确保内层铜箔避让。
放孔时,用Pin模式,在Options面板里选择对应的Padstack,然后输入孔心坐标。注意放置时不要设置RefDes,机械符号里的孔不需要位号。
3.4 保存符号:别忘掉这个容易被忽略的选项
画完外形、孔、标注后,关键一步:File -> Create Symbol。弹出对话框让你输入符号名,保存后生成.bsm文件。这时候很多人以为大功告成了,其实还有一个隐藏选项很重要:在Create Symbol之前,应该先在Setup -> Design Parameter Editor里确认符号的Units、原点位置等已经定好,因为Create Symbol会把当前.dra的环境参数也固化到.bsm里。
另一个容易忽略的点是:当你再次修改了.dra之后,必须重新执行一次Create Symbol,否则PCB里引用到的还是旧的.bsm。这在项目迭代期特别容易踩——改了一遍符号,但忘了重新编译,结果板子上出现的还是老外形。
4. 用DXF搭桥:把结构工程师的图快速变成机械符号
4.1 导入前先检查DXF的三个细节
用DXF导入建机械符号,比手动画快得多。但前提是你对DXF做了前处理。我每次导入前都快速检查三个东西:
单位:可以直接用文本编辑器打开DXF文件开头,能看到$INSUNITS参数,1是inch,4是mm,5是cm。但Allegro导入框里的单位设置一般优先,所以我更信赖在Allegro里手动选择正确的单位。
线型与图层:确认外形线是在一个单独图层里,而不是和其它辅助线混在同一图层。如果结构工程师没分图层,你就要在CAD里先分好。
坐标原点:DXF里的原点就是CAD绘图区原点的位置,Allegro导入后通常会把该原点对齐到Allegro坐标原点。你要预先确认这个原点在哪,避免导入后图形偏到老远。
4.2 Import DXF参数面板逐项说明
Allegro中导入DXF的入口:File -> Import -> DXF。
对话框里几个关键参数:
| 参数 | 推荐设置 | 说明 |
|---|---|---|
| DXF File | 选择.dxf文件 | 略 |
| DXF units | 与源文件一致 | 这里选错会直接导致尺寸错误,务必和结构确认 |
| Incremental addition | 不勾选 / 按需 | 勾选后是增量导入,用于把新图加到已有图形上 |
| Filled shapes | 不勾选 | 适用于填充区域,机械符号里一般不需要 |
| 图层映射 | 自定义 | 将DXF的图层映射到Allegro的层 |
图层映射是关键一步。例如结构工程师的“OUTLINE”图层,你应该映射到Allegro的Board Geometry -> Outline(或Design Outline),而不是直接映射到其默认层。映射完再导入,图形就已经分层正确,后续编辑就很方便。
4.3 导入后的清理与闭合检查
DXF导入完成后,画布上会出现很多线条。此时要做几件事:
- 删除重复线段:导入的图形常常有重合线段,用Edit -> Delete,再配合查找功能或者手动框选,把重复的东西删掉。
- 处理断点:CAD里的“视觉闭合”和Allegro的“几何闭合”是两回事,很多DXF导入后线段端点没有真正相接,会产生肉眼看不到的微小断口。
- 补全缺失元素:例如倒角、圆角丢失,需要自己用Arc工具修复。
- 完成闭合后,运行一遍Setup -> Outlines -> Board Outline,让Allegro尝试识别板框。如果识别成功,说明外形线闭合了。
如果Board Outline识别失败,大多数情况是断点问题。可以先放大到断点处,看到两根线端部之间有缝隙,然后用Edit -> Vertex或直接修改线段,把端点拖到同一坐标。还有一个小技巧:选中一条线,在属性面板看它的Start/End坐标,找到相邻线的端点坐标,手动输入数值强行对齐。
4.4 为什么我推荐用DXF而不是手动照抄
手动画板框适合简单矩形,一旦结构图带弧形、异形槽、多个圆孔,手动画不仅耗时,而且画出来的曲线精度不够。DXF导入则直接保留CAD里的精确曲线、圆、圆弧。对于复杂外形,DXF是唯一实用高效的做法。
此外,DXF导入后,这些几何数据是矢量化的——圆弧依然是真正的圆弧,圆仍然是圆,后面生成3D STEP、做光绘,精度都能保证。手动去逐点拟合一个弧形,画出来的只能是无数段折线,后期对板厂的DXF输出也会出现精度损失。
5. 上板落地:机械符号放进PCB的完整链路
5.1 放置符号的两种操作路径
机械符号建好后,回到PCB板设计中。放置入口是Place -> Manually,打开Placement对话框。
在放置对话框里,左侧Advanced Settings页勾选 Library;然后在Placement List页,把下拉类型切到Mechanical symbols,你就能看到编译出来的.bsm文件名。选中它,然后鼠标移动到画布,符号就会跟着光标出现在板外,点击放置即可。
这里有个很常见的疑问:既然板框是贴在这块PCB板上的,为什么不能直接双击打开机械符号文件?因为机械符号和PCB主文件是两个独立的数据库,需要“放置”这个动作,把.bsm内容以实例的方式写入主文件。就像你把一个元器件封装放进原理图一样,符号库和PCB文件是解耦的。
5.2 原点、镜像与方位:坐标契约不能乱
放置机械符号时,最关键的是坐标原点。我一般会把机械符号的原点放在板框的左下角或者板的几何中心,并且在CAD预处理、Allegro单位设定时都朝这个约定靠拢。这样放入PCB时,直接把符号放到(0,0),板框就自然地落在坐标系的指定位置。
还有镜像问题。机械符号有时会被要求镜像放置到板子背面。在放置命令的Options面板里,有Mirror选项,勾选后符号会翻到背面。但机械符号的几何翻转很容易导致不对称结构出错,比如螺丝孔偏移到错误侧。我建议:机械符号默认不勾Mirror,只有当设计明确要求“从背面视角看”时才使用,并且放置后务必检查一遍安装孔和板框的相对位置。
方位检查也很重要。放置完成后,用Show Element或测量命令检查板框四个角的坐标是否符合预期。结构工程师如果在DXF里把左上角定为原点,而你想统一到左下角,那就必须在导入前转好。
5.3 验证符号与板内走线、铜箔的关系
机械符号放入文本框后,要到布线阶段才能看出它是否真的“和谐”。比如板框下有一个很大的安装孔,如果PCB顶层有大范围铜箔,而这个铜箔没有避让安装孔,装配时螺丝头可能压到铜箔造成短路风险。
正确做法是:机械符号里的孔如果在Padstack上定义了Anti-pad和Thermal relief,那么整板铺铜会自动避让这些孔位。这也是我推荐用Padstack放安装孔的重要原因——不只是一个图形,还要让它参与整个PCB的电气设计规则。
另外,如果板框边缘有导电铜箔,通常还需要在板框内侧走一圈Route Keepout或让铜箔距板边满足最小安全间距(通常板厂要求0.3mm及以上),这些检查都要在布局阶段做一遍,别等到布线完成再返工。
5.4 后续更新板框时如何迭代
项目中期,结构工程师改了外形,你需要更新板框。操作流程是:
- 在CAD端导出一份新DXF;
- 打开旧的机械符号.dra,重新导入/替换外形线;
- 清理变化的部分(新增的孔位、改动的外形段);
- File -> Create Symbol重新编译;
- 回到PCB文件,删除旧机械符号实例,再重新Place -> Manually放入新的机械符号;
- 检查一下孔位、板框是否对齐,必要时更新其他关联数据。
这个流程里,最容易漏的是第4步。很多工程师改完.dra没重新编译,直接回PCB去删了旧符号再放置,发现放进去的居然还是旧外形,然后百思不得其解。我已经不止一次遇到这种问题了。
6. 我踩过的坑:机械符号相关的几条实战经验
6.1 单位对不上,尺寸凭空放大25.4倍
这是我刚学Allegro时踩过的第一个大坑。当时拿结构图手动画,Allegro默认单位是Mils,我用数字键盘输入100,以为画的是100mm,实际画出的是100mil(2.54mm),后来放大看整块板只有指甲盖大。查了半天才发现单位不对。
从此我养成了一个习惯:凡是和结构相关的文件,无论是手动画还是DXF导入,第一步必须确认单位。如果你在DXF导入框里选了Millimeter,但源DXF实际是Inch画的,导入后整块板的尺寸会缩小25.4倍或者反过来变大25.4倍——这个问题极其隐蔽,因为它不会报错,图形看起来完全正常,只是尺寸不对。
6.2 圆弧和样条线在DXF导入后“变形”
DXF导入时,如果源文件里的曲线是样条线(Spline)而非圆弧(Arc),Allegro可能把它转成一堆密集的短线段,看起来像曲线但实际上是折线。短线段数量一多,文件会变大,速度也会变慢,甚至有些短线段之间还有细微断口。
遇到这种情况,如果只是导个轮廓做参考,直接忽略;如果是做板框,建议在CAD里先把样条线转成圆弧或直线段,然后再导入。
另外还要注意:如果DXF里的圆弧或圆非常小,Allegro可能因为精度设置而把它显示成正多边形。遇到这种情况,可以调整画布的精度设置,或者放大查看确认图形数据没有丢。
6.3 符号放到板上后看不见
这里有三个可能原因。一是机械符号里的图形层在PCB文件里被关闭或颜色太暗;二是放置时误操作了Mirror,符号被翻到板的另一面,而你在当前层视角看不到它;三是最隐蔽的:机械符号里的层与PCB当前设计层不同名。比如你在符号里画在Board Geometry -> Outline,但PCB文件用的层名是Design Outline,放置后图形可能跑到某个隐藏层去了。
所以放置后第一时间,按一下颜色显示预设,看Board Geometry系列层是不是都开着。如果都开着还看不见,就把层列表翻一遍,找到符号实际所在层。我还习惯放完后用Show Element点一下符号,确认它的属性确实是一个Mechanical Symbol实例。
6.4 闭合检查与DRC的关系
板框不闭合,除了影响Board Outline识别,还会导致DRC里出现大量莫名其妙的错误,比如布线时认为板框边界不存在,走线可以随便飞出板外。这是因为Allegro的边界约束依赖板框闭合区域。如果板框没有闭合,你设的板边间距约束全部失效。
我建议在上板前,用Setup -> Outlines里的板框识别/检查工具验证一遍板框闭合性。我的个人习惯是:新建机械符号保存前、DXF导入清理后、每次修改后,各做一次板框识别验证,宁可多查两遍,不要等板回来才发现外形不对。
6.5 个人工作习惯:版本归档
最后再说一个工作习惯问题。机械符号的.dra源文件和.bsm编译文件不要混放在同一个临时目录反复覆盖,我推荐这样的归档方式:板框每改一次,把.dra和.bsm放在一个带日期的文件夹里,比如board_mech_20250612_v1。PCB主文件再引用最新的.bsm。这样如果新一版结构有问题,可以快速回到旧版符号重新比对。
这个习惯在项目时间紧、结构一天改好几稿的时候,能救命。