
在 Cadence Allegro 里做 PCB 设计板框、安装孔、定位孔、V-cut、结构限高区这些东西往往是最容易被忽略却又最决定板子能不能顺利加工、能不能装进外壳的部分。很多工程师拿到结构图后直接在 board 文件里 Add Line 画 outline然后把这个 brd 当模板一直往下套等项目多起来就发现结构改一个孔位要打开好几块板子手动挪换器件时还可能误删 outline 线段。所以我现在都坚持把板框和机械要素独立做成一个机械符号Mechanical Symbol再像放元件一样放进 PCB 文件。这篇文章就把我在 Allegro 里建立机械符号的完整流程、设计思路和踩过的坑详细写一遍。无论你是刚转 Layout 的硬件工程师还是画了很多年板子但一直没把机械符号体系搭起来的工程师这篇都值得收藏。1. 机械符号到底是什么为什么建议单独立库1.1 Allegro 里的几种符号机械符号是哪一类新手最容易搞混的就是 Allegro 的符号类型。打开 PCB Editor 新建文件时Drawing Type 下拉框里有很多选项常见的包括 Package symbol、Mechanical symbol、Format symbol、Shape symbol 等。用一句话概括封装符号Package Symbol用来画芯片、电阻、电容这类有电气引脚的元件机械符号Mechanical Symbol用来画板框、安装孔、定位孔、禁布区、V-cut 这类不参与电气连接、但决定板子物理外形的东西格式符号Format Symbol用于图框、标题栏形状符号Shape Symbol用于自定义焊盘形状和铜皮形状。符号类型对象举例是否参与网表生成文件后缀Package Symbol芯片、电阻、连接器封装是.psmMechanical Symbol板框、螺丝孔、V-cut、禁布区否.bsmFormat Symbol图框、标题栏否对应格式文件Shape Symbol异形焊盘、铜皮区域否对应形状文件你可能会问我不建机械符号直接在板子里画 outline 不行吗可以但代价很大。机械符号的本质是把“板子长什么样”这件事从具体的 PCB 设计文件里抽离出来变成一个可复用、可统一管理、可批量更新的独立对象。这才是它最值钱的地方。1.2 用机械符号管板框到底管住了什么用机械符号最直接的好处是复用。比如公司产品有几个标准板框尺寸100×80、120×90、150×100每种板框对应固定的螺丝孔位、禁布区、工艺边这些完全可以做成标准机械符号库。新项目启动时直接把对应符号拖进来几秒钟就完成板框搭建不用每次重新画线、重新对齐孔位。第二个好处是应对结构变更。产品开发中结构改版非常频繁今天挪一个螺丝孔明天改一个圆角半径。如果板框是直接画在 board 文件里的你只能逐个文件去改如果用了机械符号只需在符号源文件里改一次然后在每个引用该符号的 board 里执行一下更新全部同步到位。这个体验和更新封装基本相同效率差距是数量级的。第三个好处是避免误操作。直接画在 board 里的 outline 线段布局布线时很容易被误选、误删。而机械符号作为一个整体实例存在内部图形不会被轻易拖走编辑时也会更明确地提示你正在修改符号定义。说白了这就是用工程化的方式管理物理设计信息而不是靠手和眼睛去保护每一条线。顺便提一句这个思路也适用于封装库。Allegro 的封装制作教程里最关键的一课就是“把常用的东西沉淀成库”机械符号就是“板框层面的库”两者一个管电气一个管物理合在一起才是完整的可复用设计基础。2. 建库前的准备单位、图层、路径一个都不能少2.1 先定单位、精度和格点避免后面全盘重画建立机械符号前最重要的事不是急着画线而是把单位、精度和格点定好。Allegro 支持 mil 和 mm 两种单位结构工程师给的 DXF 通常以 mm 为主所以我个人建议机械符号统一用 mm。如果你在机械符号里用了 mil导入 DXF 时又选了 mm后面就会看到板框放大 39.37 倍到时候再改单位所有坐标、线宽、标注全要重来一遍非常痛苦。单位设置路径是Setup Design Parameter Editor在 Design 页签下可以选 User Units。这里有一个容易被忽略的参数叫 Minimum display resolution也就是显示精度机械符号建议设成小数点后两位也就是 0.01mm 的精度。板框设计不需要像布线那样精确到微米但两位小数足够覆盖绝大多数加工要求。再往下是 Size 和 Extents图纸范围最好设成比板框大两倍左右比如 100×80 的板框Extents 至少设成 300×300不然尺寸标注往哪放都放不下。格点方面手画简单板框时可以用 0.5mm 格点方便坐标取值导入 DXF 后主要靠坐标和对象捕捉不要过度依赖格点对齐。Allegro 的支持格点设置Setup Grids里可以开启 Non-Etch 和 Etch 两套格点机械符号主要关心 Non-Etch。2.2 把图层规划清楚机械符号才不会“落地即乱”机械符号里能画内容的环境跟 board 一样也是 Artwork 层系统。区别在于机械符号里放到某一层的内容将来放进 board 时会映射到 board 的同名层上。这意味着你的图层规划决定了整个项目后期好不好用。我见过有些人建机械符号时随手把板框画在自定义层里比如叫“MY_OUTER”结果放进 board 以后板框没有出现在 Board Geometry/OUTLINE 层导致出 Gerber 时工艺层缺失板厂还得反复确认。这是完全可以避免的坑。常用的规划如下Board Geometry/OUTLINE板框外形线包括直线、圆弧、圆角。Manufacturing/Notes制造说明文字比如板材、板厚、表面处理要求。Dimension 层尺寸标注文字与标注线。Route Keepout/ALL全板或局部禁布区禁止走线和铺铜。Package Keepout/ALL禁止放置元件的区域。Board Geometry/Vcut如果没有就新建一层拼板的 V-cut 线。尽量使用 Allegro 默认层避免自定义层。自定义层不是不能用而是一旦用了后续导出 DXF、转 PADS、转 AD 时版本兼容和层映射都会变复杂不必要地增加沟通成本。2.3 提前配好符号库路径放置时才不抓瞎很多人在机械符号做好、保存好之后兴冲冲打开一个新板子准备放置结果在 Place Manually 里找不到这个符号。最常见原因就是符号库路径没有配置Allegro 根本不知道你的符号存在。需要在 User Preferences 里把符号存放目录加入搜索路径。操作路径是Setup User Preferences Design_paths重点看两项pcb_symbol和pad_path。如果你把机械符号 DRA/BSM 文件放在 D:/lib/symbol把使用的 padstack 放在 D:/lib/pad那么这两个变量都要把对应目录加上。这里有个小经验建一个项目级的库目录不要每次都把符号放到安装目录下。Allegro 安装盘里的默认库路径权限复杂而且软件升级时容易被覆盖。项目自己建一个 lib 目录统一管理封装、机械符号、padstack后续交接、备份、多人协作都方便得多。3. 实操从新建文件到可复用的机械符号3.1 新建 Mechanical Symbol 文件并设置设计参数打开 Allegro PCB Editor执行File New在 Drawing Type 下拉框里选择 Mechanical symbol。Drawing Name 建议用有规则的名字比如 M_BOARD_100X80_R05一眼就能看出来是一块 100×80、圆角半径 5mm 的板子。这个命名习惯真的很重要等到符号库里有几十个文件时你就知道后悔了。进入编辑器后第一件事还是回到Setup Design Parameter Editor确认单位是 mm、精度两位、Extents 足够大。此时你看到的是一个完整的设计环境不是简单的画布“Add Line”“Add Arc”“Place Pin”“Dimension” 这些命令都能用。顺便说一个关于软件版本的小提示。现在有相当多的人还在用 16.6也有人已经切到 17.2、17.4 甚至 22.1。不同版本界面布局有差异但机械符号的建立思路完全一致。如果你打开一个旧版 brd 时没有弹出 Allegro PCB Designer Product Choice通常是 Windows 文件关联被新版本接管了和符号创建无关遇到时从 Allegro 内部 File Open 打开即可。3.2 导入 DXF 结构图把轮廓线规范成板框大部分情况下结构工程师会提供 DXF 格式的结构图里面包含板框、螺丝孔中心线、定位孔、异形结构等信息。Allegro 导入 DXF 的入口是File Import DXF你可以在热词里看到“allegro如何导入dxf”一直是被问得最多的问题可见这个操作的细节非常容易踩坑。导入时首先选择 DXF 文件然后注意 DXF Units 必须和当前设计单位一致。如果 Allegro 是 mmDXF 也选 mm可以得到 1:1 的尺寸。接着是层映射这是最关键的环节。界面左侧是 DXF 文件里的原始层名右侧是 Allegro 的层。一般来说把结构图中的外形层映射到 Board Geometry/OUTLINE把文字和注释层映射到 Manufacturing/Notes把尺寸层映射到 Dimension 层。如果结构图里连孔的中心线都给了建议把中心线映射到 Manufacturing/Notes后面放 pin 时用来做参考。导入完成后立刻用 Show Element 量一下已知长度比如板框一边的长度。和结构图核对无误后再往下走。如果尺寸不对优先怀疑单位选错了。我遇到过很多次 DXF 画的是 mm但我导入时选了 mil结果板框直接大了 39.37 倍屏幕上看不到东西Zoom Fit 后看到一条巨大的线。导入后的轮廓线通常不是完美闭合的。结构工程师的图为了美观往往有很多重复线段、断开线、零碎圆弧需要清理。此时可以先把线段选中统一 Line width 改成 0 或者一个固定小线宽方便后续编辑。Allegro 里对线的闭合性检查可以用Shape Compose Shape来验证选中你认为是板框的轮廓执行 Compose如果提示 “Boundary must be closed”说明轮廓里有断点需要补齐。补齐的方法是把捕捉设置为 Segment 或 Vertex用 Add Line 把断点连起来。3.3 没有结构图也能画手画板框和圆弧轮廓的方法不是每次都有 DXF有些简单原型板直接手画更快。手画板框的常用命令是Add Line在 Options 里把 Active Class 设为 Board GeometrySubclass 设为 OutlineLine width 设成 0。工具会提示“Allegro 的板框线到底应该多宽”业界有两种习惯一种设 0一种设 5~10mil。我个人用 0原因是板框线宽度只影响显示和标注并不直接决定板厂切割路径板厂真正关心的是线所在的层和闭合区域。线宽设为 0 后后续做 Z-Copy、生成 shape、导出 DXF 时都更干净。画线时直接输入绝对坐标比如起点输入 x 0 0下一点 x 100 0再 x 100 80最后 x 0 0就能得到一个矩形轮廓。这样画的线条坐标精确不需要手动拖拽。圆角或圆弧轮廓用Add Arc配合半径和端点绘制。Allegro 的 Add Arc 支持多种方式比如 3-Point、Center/End、Radius在 Options 面板里可以切换。常见的板框圆角建议用 Radius 模式输入半径值选择两条边的端点生成圆弧后再把直线端点接到圆弧端点。虽然步骤比自动工具多但胜在每段线都可控不会因为自动倒角生成一堆碎线。这里再分享一个画圆弧的细节如果在 Options 里找不到合适的 Arctype可以直接在命令框输入坐标加半径参数比如 x 95 80 后用 Arc Radius 捕捉上一条线的端点。多试几次就会顺。有人习惯布线时用 slide 走弧线但机械符号里的圆弧最好在 Add Arc 模式下完成因为它是几何轮廓不是布线轨道。3.4 放螺丝孔、定位孔用 pin 来管理机械孔机械符号里放孔最常见疑问是“孔不放封装里能出钻孔文件吗”。答案是能前提是你得用 pin 来放这个孔并让 padstack 带 Drill 信息。在机械符号编辑环境中执行Layout PinOptions 面板里选好机械孔的 padstack。机械孔的 padstack 通常是一个通孔焊盘比如直径 3.2mm钻孔 3.0mm类型定义为 Mechanical。放置时输入坐标把孔放在结构要求的螺丝孔位置。这样做的最大好处是之后生成 NC Drill 钻孔文件时这些孔会正常出现在钻孔数据里而且它们没有网络属性不会参与原理图网表、不会影响 DRC 电气检查。另一种常见做法是单独做一个安装孔封装符号放在板子上。这种方式适合把安装孔作为通用件反复使用甚至可以在多个板子上用同一个孔位。两种方式没有绝对优劣全看公司封装库习惯。我个人倾向于如果孔位跟着板框走比如板子四角的固定孔做进机械符号最方便如果孔位需要跟随特定接插件或模块那就单独做封装更方便。放置 pin 后建议用Show Element抽查孔坐标是否与结构一致。热词里“allegro怎么看pin数”被搜索很多次其实在机械符号里更关心的是孔数量和坐标用 Query 的 Find 面板选 Symbol/Pin就能查看全部放置的 pin 信息。3.5 用 Z-Copy 生成禁布区再加尺寸标注与制造信息板框画好之后接下来要做的是禁布区。很多设计规则要求板边内缩一定范围禁走线、禁放元件Allegro 里最快速的方法是 Z-Copy。Edit Z-Copy可以把一个闭合区域复制到指定层。操作前先把当前层切换到 Route Keepout/ALL 或 Package Keepout/ALL然后执行 Z-Copy点击板框轮廓就能生成一个和板框完全贴合的禁布区。如果你的场景是板框内缩 5mm 禁布可以在 Options 里设置一个偏移值正负号控制内缩还是外扩。Z-Copy 的前提是轮廓必须是闭合的 shape 或封闭线段所以前面用Shape Compose Shape验证闭合非常关键否则这里会一直选不中。禁布区之外尺寸标注也是机械符号不可少的部分。执行Dimension Linear Dimension在 Options 面板里设置 Text Block 大小和精度然后拾取两条边拉出标注文字。标注放在 Dimension 层将来放进度板时它会跟着机械符号一起显示。刻字、版本号、制造说明用Add Text文字层选 Board Geometry/Silkscreen 或 Manufacturing/Notes 都可以看公司的工艺要求。这里提醒一下机械符号里引用的尺寸标注必须放在标准层。有些工程师为了显示方便把标注放在自定义层结果导出 DXF 时自定义层被过滤结构工程师拿回去的图没有尺寸还得重新手动量线信息传递效率瞬间下降。3.6 保存、自检确认机械符号可用所有内容画完后保存源文件是 .dra系统会同步生成机械符号对应的 .bsm 文件。保存后不要急着拿去用先做两步自检。第一步运行 Tools Database Check勾选 Check All看有没有 ERROR。机械符号虽然没有电气元素但几何数据库异常同样会导致放置失败或显示异常。第二步用 Find 面板筛选 Line 和 Shape数一下 outline 层上的对象数量。一个标准板框outline 层应该有且仅有必不可少的直线、圆弧哪怕多一条很短的重线将来导出 DXF 时都可能出现双线影响板厂识别。自检时还可以顺手查看一下所有 pin 的坐标列表用 Show Element 或Tools Reports里的 Summary Drawing Report确认孔位没有偏差。做完这些第一个机械符号就算正式入库了。4. 把机械符号放进 PCB并在导入导出中保住它4.1 在新板子里放置机械符号并正确刷新机械符号做出来后在新 PCB 文件里放置它入口是Place Manually。打开后先到 Advanced Settings 页签勾选 Library然后在 Placement List 里把类型切换到 Mechanical symbols这时你就能看到之前建好的符号了。输入坐标 0,0点击放置板框就出现在 board 中。这里有个很多人第一次都会犯的错误打开 Place Manually 后默认显示的是 Package symbols找不到机械符号就以为建库失败。其实只要注意列表左上角的下拉菜单把它切换成 Mechanical symbols 就行。放置完成后如果板框没有显示优先检查颜色设置。执行Display Color/Visibility确认 Board Geometry/Outline 层没有处于关闭状态。另外还需要理解一个机制机械符号放进 board 后它是一个实例里面的结构要素会映射到 board 的同名层。机械符号里的 Board Geometry/Outline 线会出现在 board 的 Board Geometry/Outline 层机械符号里的 Manufacturing/Notes 文字也会出现在 board 的对应层。这就意味着你不能直接双击符号内部的线去编辑要修改就只能修改符号源文件然后回到 board 里用Place Update Symbols刷新。刷新操作和更新封装完全一样勾选对应的机械符号后 Refreshboard 里的板框就会自动更新。这个流程我已经在多个项目上验证过结构改孔位、改外形时效率极高根本不需要打开每个 board 手动改。4.2 导出 DXF 回传结构工程师时怎么设置层机械符号放进 board 后如果要把板子信息回传给结构工程师主流方式是导出 DXF。热词里“allegro导出dxf”排名很高说明很多人卡在这一步。执行File Export DXF导出对话框里注意两个设置。第一是单位建议选择 mm除非结构工程师明确要 mil。第二是层过滤把 Etch 层关掉保留 Board Geometry、Dimension、Manufacturing 等层这样导出的文件干净结构工程师打开时不会被一堆布线干扰。这里有一个经验导出前把不需要的层先隐藏起来而不是在导出对话框里盲目全选。Allegro 的 DXF 导出基于可见层或指定层合理控制后DXF 文件体积小、图层清晰、对端易读。如果是回传结构确认建议把尺寸标注层也一并导出这样对方可以直接核对尺寸不需要自己在 CAD 里重新测量。另外提醒一句机械符号中的圆弧在导出 DXF 后可能被拆分成多段折线这是 CAD 软件的显示精度设置问题不是数据错误。只要导入 Allegro 时是完整的圆弧导出 DXF 时精度足够板厂都能正确还原。4.3 转到 PADS 或 AD 时机械符号最容易丢什么“Allegro 转 PADS 文件的方法”和“Allegro 转 AD 提示 not recognized or version is too old”都是高频热搜可见跨工具转换需求很常见。机械符号在转换过程中最容易丢失的就是自定义层信息。Allegro 里的自定义层转入 PADS 或 AD 时经常被射到一个通用层或者直接不显示。最典型的例子是 V-cut 线、拼板工艺边、标注文字如果画的时候放在自定义层转换后十有八九消失。所以我的建议非常明确凡是需要跨工具传递的机械信息全部放到标准层。板框就放 Board Geometry/OUTLINE制造说明放 Manufacturing/Notes标注放 Dimension 层。宁可多花十分钟规划也不要等到转换完再回头查。关于 AD 提示文件版本太旧或无法识别的问题本质上跟机械符号无关而是 brd 文件格式兼容性。如果目标软件是 AD尽量把 Allegro 工程另存为较老版本格式或者先转成中间格式 PADS ASCII再导入 AD。在这个流程里机械符号的层映射同样遵循“标准层优先”原则层越规范转换损耗越小。5. 常见问题排查与避坑经验5.1 DXF 导入后尺寸不对基本是单位搞错了每次有人问我为什么导入板框后尺寸大得离谱我第一反应就是单位。Allegro 单位是 mmDXF 单位如果选成了 mil1mm 会被当成 1mil 处理导入结果会被放大 39.37 倍反过来Allegro 单位是 milDXF 单位选 mm又会出现缩小 25.4 倍的错误。所以导入前一定要把两边的单位统一。如果已经导入完了发现尺寸不对不要试图用 Scale 命令整体缩放因为这个阶段缩容易把标注文字、孔位坐标一起缩乱数据不干净。正确做法是撤销导入重新检查 DXF 文件和 Allegro 单位再次导入。导入后再次用 Show Element 量一条已知边确认无误后再继续。5.2 轮廓不闭合Z-Copy 永远选不中Z-Copy 选不中板框绝大多数情况是因为轮廓线没有闭合。结构工程师的 DXF 里两条线段可能看着是接上的但端点之间其实有一条 0.001mm 的断缝肉眼根本看不到。处理方法是用Shape Compose Shape去试一下如果提示 Boundary must be closed那就是有断点。把捕捉模式开成 Vertex沿着轮廓走一圈把断点找到并补齐。等 Compose Shape 能成功生成 shape再去执行 Z-Copy 就顺了。这个经验直属因为大多数“为什么禁布区生成不了”的提问根因都在“轮廓没闭合”。5.3 机械符号放进来后看不到先别急着重画机械符号放置后不显示主要在三个方面排查按概率排序颜色没开、列表类型选错、层映射不对。颜色问题最常见。用Display Color/Visibility打开确保 Board Geometry/Outline、Dimension 等层可见。列表类型问题就是你在 Place Manually 里选成了 Package symbols看到的当然不是机械符号。层映射问题需要回到机械符号源文件确认没有把内容画在一个奇怪的自定义层里。只要这三步查完九成问题都能解决。5.4 出钻孔文件时少孔问题多半在 padstack机械符号里的螺丝孔没有出现在最终的 NC Drill 文件中原因通常是 padstack 类型不对。如果 padstack 没有定义 Drill 信息或者被定义为纯 SMD 贴片焊盘Allegro 自然不会把它当作钻孔数据输出。解决方案很简单在机械符号编辑环境里把孔位更换成带 Drill 的通孔 padstack并且确认 Class 是 Mechanical 或 Through Hole。放置 pin 之后可以用 Show Element 查看 padstack 的 Drill 属性。这里也顺带回应一下热词“allegro 输出钻孔文件”只要 padstack 正确机械符号里的孔就会自动进入钻孔文件不需要额外设置。5.5 丝印、文字、标注异常的处理热词里“allegro丝印被删除了”经常出现。放在机械符号场景下如果符号里的丝印文字或标注放进 board 后消失首先要检查的不是被删而是层显示和 Text Block 尺寸。机械符号里 Text Block 1 的文字放进 board 后如果板子图形经过了比例缩放或者字库不同就可能显示异常。做法是统一 Text Block 大小或者在 board 里用 Change 命令重新指定文字高度。标注文字忽大忽小也是同样原因。Allegro 的 Text 系统基于 Text Block 定义符号文件和 board 文件的 Text Block 表不一致时就会出现这种问题。建议机械符号建立时就固定一套 Text Block 标准不要每个文件都改。5.6 常见问题速查表现象可能原因解决办法DXF 导入后尺寸放大 39.37 倍DXF 单位与 Allegro 单位不一致统一单位后重新导入Z-Copy 选不中板框轮廓未闭合用 Compose Shape 验证并补齐断点机械符号放进来不显示层颜色关闭或放置列表选错打开层颜色切换 Mechanical symbols钻孔文件少孔padstack 没有 Drill 信息更换带 Drill 的机械通孔 padstack丝印文字像被删了层不可见或 Text Block 异常检查层可见性统一 Text Block转 PADS/AD 后机械层丢失使用了自定义层重新把内容放回标准层再转换最后说一个我自己的小习惯我会把常用板框尺寸做成一整套标准机械符号库每个符号都包含板框、螺丝孔位、禁布区和标注模板。新项目开始不再画板框直接在库里调结构确认变化后只改一个符号再统一刷新。如果你刚开始接触机械符号建议先从当前正在做的项目入手把板框部分抽出来建成第一个符号然后用几次就会真正感受到这套流程的价值。