多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Altium Designer导入DXF与自定义板框完整指南

Altium Designer导入DXF与自定义板框完整指南 1. 从结构工程师发来一个DXF说起搞硬件的人大概都遇到过这种场景项目刚立项结构工程师在群里甩过来一个DXF文件附一句“板框按这个来螺丝孔位置都标好了”。你打开Altium Designer信心满满地准备把板框画出来结果导入之后发现——要么线条跑到机械层外面去了要么尺寸对不上要么板框根本闭合不了铺铜的时候直接报错。更让人头疼的是明明在CAD里看着是封闭的轮廓到了AD里就是选不中、连不上最后只能手动描一遍费时费力还容易出错。这篇文章就是来解决这个问题的。我会把Altium Designer导入DXF文件、自定义板框的完整流程拆开讲清楚包括DXF文件的前期处理、导入时的参数设置、板框的重新定义、常见报错的排查思路以及我自己踩过的几个印象比较深的坑。不管你是刚接触PCB设计的新手还是已经画过几块板子但每次导入DXF都要折腾半天的老手应该都能从里面找到有用的东西。关键词里提到了Altium Designer、DXF、板框、PCB、机械层这几个词基本覆盖了整个操作链路。我会围绕这条链路把每一步的“为什么”和“怎么做”都讲透而不是只丢几个步骤让你照着点。因为实际项目中结构给过来的DXF千奇百怪只有理解了底层逻辑遇到变形的情况才能自己判断怎么处理。2. DXF文件在PCB设计里到底扮演什么角色2.1 结构约束与电气设计的交汇点PCB设计从来不是纯电气的事。一块板子最终要装进外壳里要和螺丝柱、卡扣、接口开孔对齐这些机械层面的约束往往由结构工程师在CAD软件里确定然后以DXF格式传递给PCB工程师。DXF是Drawing Exchange Format的缩写它是一种通用的二维图纸交换格式AutoCAD、SolidWorks、Pro/E等软件都能导出。结构工程师用它来画板子的外形轮廓、定位孔、禁布区、连接器开孔位置PCB工程师拿到之后把它导入Altium Designer作为板框和布局的参考基准。这里有个很关键的认知DXF文件本质上只是一堆二维线条的集合它不包含任何“这是板框”“这是螺丝孔”的语义信息。你在CAD里画的封闭多段线导入AD之后可能变成几十条独立的线段也可能因为图层映射错误跑到别的层去。所以导入DXF不是简单的“文件→导入”就完事中间需要做图层映射、单位确认、线条闭合性检查等一系列操作。2.2 为什么不能直接在AD里画板框有人可能会问既然导入DXF这么麻烦我直接在AD里用绘图工具画板框不行吗当然可以但前提是你得知道准确的尺寸和坐标。结构工程师给的DXF里包含了精确的孔位坐标、外形圆角半径、接口开孔尺寸这些数据如果靠手动输入不仅效率低而且极易出错。尤其是板子外形不规则、有多个圆弧和斜边的时候手动绘制几乎不可能做到和结构件完全匹配。另外DXF文件在项目迭代中是可以复用的。结构改版之后重新导出一份DXF发过来你只需要重新导入、重新定义板框就行不需要从头画一遍。所以掌握DXF导入的正确方法本质上是在建立一套可复用的工作流而不是每次都在做重复劳动。2.3 机械层与Keep-Out层的分工在Altium Designer里板框通常画在机械层Mechanical Layer比如Mechanical 1。机械层不参与电气规则检查它只是物理形状的描述。而Keep-Out层用来定义禁止布线区比如螺丝孔周围不能走线、天线区域不能铺铜这些约束通常也来自结构要求。导入DXF的时候结构图里的板子外形一般映射到机械层螺丝孔和禁布区可以映射到Keep-Out层或者另外的机械层具体怎么分配取决于你的设计习惯和公司规范。我个人的做法是板子外形放在Mechanical 1螺丝孔和定位孔放在Mechanical 2禁布区放在Keep-Out层。这样层次清晰后续要修改板框或者调整禁布区的时候不会互相干扰。当然这不是唯一正确的做法关键是团队内部要统一避免不同人画的板子层定义不一样后期维护起来很痛苦。3. 导入前的DXF预处理别急着往AD里拖3.1 在CAD端就做好的三件事很多人拿到DXF直接往AD里导入结果各种报错然后回头去改来回折腾。其实如果能在CAD端先做几步预处理后面会顺利很多。这三件事是我强烈建议在导入前确认的第一确认DXF的版本。Altium Designer对DXF的版本兼容性总体不错但太新的版本比如AutoCAD 2018之后的某些格式偶尔会出现解析问题。如果不确定可以让结构工程师另存为AutoCAD 2000/LT2000 DXF格式这个版本兼容性最好基本不会出幺蛾子。第二清理无关图层。结构工程师的CAD文件里往往有很多标注、文字、辅助线、图框这些在PCB设计里完全用不到。导入之前让对方把无关图层删掉或者冻结只保留板子外形、孔位、禁布区相关的线条。如果对方不方便改你也可以在AD导入时通过图层映射把不需要的层忽略掉但提前清理能减少很多干扰。第三检查线条是否闭合。板框必须是一个闭合的轮廓否则AD无法识别为有效的板子形状。在CAD里可以用PEDIT命令把多段线合并或者用BOUNDARY命令生成闭合边界。如果线条有重叠、断点、微小间隙导入AD之后就会变成一堆碎线铺铜和规则检查都会出问题。3.2 单位与坐标原点的对齐DXF文件本身不强制指定单位它只是一个数值集合。AD在导入的时候会让你选择单位是mil还是mm这个选择必须和CAD端导出时的单位一致否则尺寸会差25.4倍。我遇到过好几次结构工程师用mm画图导出时没注意我导入时默认选了mil结果板框直接大了二十多倍铺铜铺到天上去。坐标原点的问题也类似。CAD里的原点可能在板子左下角也可能在图纸的某个随机位置。导入AD之后板框可能出现在离原点很远的地方导致你在PCB视图里找不到它。解决办法是在CAD里把板框的一个角点移动到原点附近或者在AD导入时勾选“重新定位”选项让导入后的图形自动居中。不过自动居中有时会引入微小的坐标偏移如果对孔位精度要求高最好还是在CAD端就把原点对齐好。3.3 一个容易被忽略的细节圆弧的精度板框如果有圆弧角CAD里通常是用多段线拟合的。导出DXF的时候圆弧会被离散成很多小线段。如果离散精度设得太低导入AD之后圆弧看起来是一段一段的折线不仅影响美观还可能导致板框闭合性检查失败。在CAD导出DXF时把“圆弧分段精度”调高一些让圆弧更平滑。AD这边对圆弧的处理能力其实不错只要导入的线段足够密它就能识别出近似圆弧的形状。4. Altium Designer导入DXF的完整操作链路4.1 导入入口与文件选择在AD里导入DXF的入口有两个一个是File → Import → DXF/DWG另一个是在PCB编辑状态下通过Place → Drawing Tools或者直接拖拽文件到PCB窗口。我习惯用File菜单里的导入因为可以看到完整的导入向导参数设置更直观。选择文件之后AD会弹出导入配置对话框。这里有几个关键参数需要设置单位选择必须和CAD端一致mm还是mil选错了尺寸全错。图层映射AD会列出DXF里所有的图层你需要为每个图层指定导入到AD的哪个层。板子外形映射到Mechanical 1孔位映射到Mechanical 2禁布区映射到Keep-Out Layer。导入模式可以选择“导入到当前PCB”或者“新建PCB”。如果是第一次导入板框建议新建一个PCB文件避免和已有设计冲突。定位选项可以选择“绝对坐标”或者“相对坐标”也可以勾选“居中导入”。如果CAD端已经对齐了原点用绝对坐标就行。4.2 图层映射的策略与常见错误图层映射是导入DXF最容易出问题的地方。DXF里的图层名称五花八门结构工程师可能用“0”“轮廓”“OUTLINE”“板框”等各种命名。AD导入时会把这些图层列出来你需要手动指定每个图层对应的AD层。常见的错误有这么几种一是把所有图层都映射到同一个机械层结果板框和孔位混在一起后续没法单独编辑二是把板框映射到了Keep-Out层导致板子边缘不能铺铜但实际上你只是想要一个外形轮廓三是忽略了某些图层导致部分线条丢失板框不完整。我的建议是导入之前先在CAD里把图层整理好板框一个层、孔位一个层、禁布区一个层命名清晰。导入时逐一映射不要图省事全选。如果DXF图层太多可以在导入对话框里取消勾选不需要的层只保留必要的。4.3 导入后的初步检查导入完成之后不要急着定义板框。先做几项检查第一切换到Mechanical 1层看看板框线条是否完整、闭合。可以用快捷键ShiftS切换到单层模式方便观察。如果发现线条有断点用Edit → Select → Connected Copper或者手动检查把断点补上。第二测量关键尺寸。用Reports → Measure Distance或者快捷键CtrlM量一下板框的长宽、孔位间距和结构图纸对照。如果尺寸不对说明单位或者比例有问题需要重新导入。第三检查孔位是否在正确的位置。螺丝孔、定位孔的位置偏差会直接影响装配必须和结构确认。如果发现偏移可能是CAD原点没对齐或者导入时定位选项设置不对。4.4 从线条到板框重新定义板子形状导入的DXF线条只是普通的绘图对象AD不会自动把它识别为板框。你需要手动定义板子形状。操作方法是切换到Mechanical 1层选中板框轮廓的所有线条然后执行Design → Board Shape → Define from selected objects。AD会自动根据选中的闭合轮廓生成板子形状。这里有个关键点选中的线条必须构成一个闭合的轮廓而且不能有重叠或者交叉。如果轮廓不闭合AD会提示错误板子形状定义失败。遇到这种情况需要回到线条层面把断点补上或者用Design → Board Shape → Define from selected objects之前先用Tools → Convert → Create Region from Selected Primitives把线条转成Region再定义板框。板框定义好之后原来的DXF线条还在机械层上可以保留作为参考也可以删除。我通常保留一份在Mechanical 1层方便后续对照结构图修改。5. 板框自定义不只是画个外形那么简单5.1 板框与铺铜、规则检查的联动板框定义好之后铺铜的时候AD会自动以板框为边界。如果板框有缺口或者不规则形状铺铜也会跟着变形。所以板框的准确性直接影响到铺铜质量和电气性能。另外设计规则里的“板子边缘间距”规则也是基于板框来检查的如果板框画错了走线可能离板边太近生产出来容易出问题。我一般会在板框定义好之后先设置好板边间距规则比如走线离板边至少0.3mm铺铜离板边至少0.5mm。这些规则在Design → Rules → Manufacturing里设置然后运行设计规则检查看看有没有违规。5.2 异形板框的处理技巧有些板子不是简单的矩形可能是圆形、椭圆形、带缺口的不规则形状。这种异形板框在导入DXF之后定义板子形状的时候更容易出问题。常见的情况是圆弧和直线连接处有微小间隙导致轮廓不闭合。处理方法是在CAD里就把异形轮廓用多段线画好确保首尾相连。导入AD之后如果还是有间隙可以用Edit → Move → Drag或者Edit → Move → Move Vertices手动调整顶点把间隙消除。AD的板框编辑功能其实挺强的在Board Shape模式下可以直接拖动顶点、添加删除顶点比重新导入DXF还快。另外异形板框的铺铜需要特别注意。AD默认的铺铜是矩形填充遇到异形板框会自动裁剪但有时候裁剪得不干净会有铜皮伸出板框外面。这时候需要手动调整铺铜边界或者用Polygon Pour Cutout挖掉多余的部分。5.3 螺丝孔与禁布区的同步处理结构DXF里通常还会包含螺丝孔和禁布区。螺丝孔一般是圆形的导入之后可以在Mechanical 2层看到。这些孔不需要定义成板框的一部分但需要在PCB上打孔。做法是在对应位置放置Pad或者Hole孔径和位置与DXF对齐。如果是非金属化孔把Pad的Plated属性去掉就行。禁布区通常映射到Keep-Out层导入之后需要确认线条是否闭合。Keep-Out层的闭合区域会自动阻止铺铜和走线但如果线条不闭合禁布效果就会失效。我遇到过好几次Keep-Out层线条有缺口结果铺铜直接铺到螺丝孔上面去了后来养成习惯导入之后一定用Design → Rules → Keep-Out检查一遍。6. 那些年我踩过的DXF导入坑6.1 单位选错导致板框放大25.4倍这是最经典也最容易犯的错误。CAD端用mm画图导出DXF时单位是mm导入AD时手快选了mil结果板框直接放大25.4倍。更麻烦的是如果你没及时发现后面所有布局都基于错误的板框等发现的时候已经来不及了。避免方法导入时养成习惯先看一眼CAD图纸的单位标注或者导入后立刻用测量工具量一下板框尺寸和结构图纸对照。如果发现不对撤销重新导入不要试图用缩放功能去修正因为缩放会引入舍入误差孔位可能对不上。6.2 线条不闭合导致板框定义失败前面提到过板框必须闭合。但实际项目中结构给的DXF经常有微小间隙尤其是在圆弧和直线的连接处。这些间隙在CAD里可能看不出来导入AD之后放大才能发现。排查方法在AD里切换到单层模式放大板框的每个角点检查线条是否首尾相连。如果发现断点用Edit → Move → Drag把端点拖到一起或者用Place → Line补一段线。补线的时候注意捕捉功能要打开确保端点精确对齐。6.3 图层映射错误导致线条跑到别的层DXF里的图层名称如果和AD的默认层名不匹配导入时容易映射错。比如结构工程师把板框画在“0”层导入时如果没注意可能映射到了Top Layer结果板框线条变成了铜箔走线铺铜的时候直接短路。避免方法导入前先问清楚结构工程师每个图层的含义或者在CAD里把图层重命名改成容易识别的名字。导入时仔细核对每个图层的映射目标不要一路点“Next”。6.4 导入后找不到板框的尴尬有时候导入成功但PCB视图里看不到板框。原因可能是板框被导入到了很远的坐标位置或者被其他对象遮挡了。解决办法用快捷键V → DView → Fit Document让视图适应所有对象如果还是看不到用Edit → Select → All选中所有对象看看状态栏显示的坐标范围判断板框跑到哪里去了。如果是坐标偏移问题可以在导入时勾选“重新定位”选项或者导入后手动把板框移动到原点附近。AD的Move → Selection功能可以整体移动选中的对象移动时输入精确的坐标偏移量比鼠标拖拽准确。7. 从DXF到最终板框的验证清单7.1 尺寸与位置的双重校验板框定义好之后我会做两轮校验。第一轮是尺寸校验用测量工具量板框的长宽、对角线、圆弧半径和结构图纸逐项对照。第二轮是位置校验量螺丝孔到板边的距离、连接器开孔的位置确保和结构件匹配。这两轮校验做完基本可以排除大部分导入错误。如果项目对装配精度要求高还可以把PCB的3D视图打开和结构件的3D模型做干涉检查。AD支持导入STEP格式的3D模型把外壳模型导进来看看板子能不能放进去、接口对不对得上。这一步在早期发现干涉问题比打样回来再改要省太多时间。7.2 设计规则检查的针对性配置板框确认无误之后需要配置设计规则。和板框相关的规则主要有两个一是板边间距规则控制走线和铺铜离板边的距离二是Keep-Out区域规则确保禁布区不被违反。这两个规则在Design → Rules → Manufacturing和Design → Rules → Keep-Out里设置。设置完之后运行Design → Rule Check看看有没有违规。如果有违规根据报告定位到具体位置判断是板框画错了还是规则设得太严。有时候板框有尖角或者窄边走线很难满足间距要求这时候可能需要和结构协商修改板框或者调整规则参数。7.3 输出制造文件前的最终确认在输出Gerber之前最后确认一遍板框。把Gerber文件用CAM工具打开看看板框层是否清晰、闭合孔位是否准确。如果有条件让结构工程师也确认一下毕竟板子最终是要装进他们的外壳里的。另外如果板框在项目过程中修改过记得同步更新所有相关的设计文件包括原理图里的板框标注、BOM里的结构件信息、装配图里的板子外形。这些细节看起来琐碎但实际生产中经常因为信息不同步导致装配问题。8. 一些提高效率的个人习惯8.1 建立DXF导入的模板工程如果团队经常做类似的项目可以建一个模板PCB文件里面预设好机械层、Keep-Out层的层定义导入DXF的时候直接套用省去每次配置图层映射的时间。模板里还可以预设好板边间距规则、铺铜规则导入板框之后直接跑规则检查效率提升很明显。8.2 和结构工程师约定好DXF导出规范很多导入问题其实可以在源头避免。和结构工程师约定一个DXF导出规范统一用mm单位、统一图层命名、板框用闭合多段线、导出前清理无关图层、圆弧精度调高。这些要求写进部门的设计规范里新项目直接照做能省掉大量沟通和返工。8.3 保留一份导入日志我习惯在项目文件夹里放一个文本文件记录每次DXF导入的参数单位、图层映射、导入时间、修改内容。项目后期如果发现板框有问题可以回溯到当时的导入记录快速定位是哪个环节出的错。这个习惯看起来有点强迫症但在多版本迭代的项目里真的能救命。板框是PCB设计的地基DXF导入是打地基的第一步。这一步做扎实了后面的布局布线、铺铜、规则检查都会顺畅很多。希望这篇内容能帮你少走一些弯路把更多精力放在真正重要的电气设计上。
返回列表