ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Allegro导入DXF结构图与精确放置元件完整指南

Allegro导入DXF结构图与精确放置元件完整指南 做PCB设计这些年几乎每一块板子都是从“照图施工”开始的。结构工程师丢过来一个DXF文件甩一句“板框、定位孔、连接器位置都画好了照着放就行”然后我就得在Allegro里把这个DXF导进去、把散乱的线框变成能用的板框、再把关键器件精确放到结构图上对应的坐标。这套操作如果你是第一次碰Allegro光是搞明白“导进去之后什么都没有”“尺寸差了近40倍”“元件怎么都对不到孔上”这几个问题就够折腾一整天。这篇就把我在Allegro里导入DXF结构图和精确放置元件的完整流程、设置思路、以及踩过的坑一次性讲清楚适合刚开始用Allegro的工程师也适合每次导DXF都要重新查一遍参数的老手。1. 为什么结构DXF比Any层都适合做板框底稿1.1 DXF在PCB设计流程中的真实定位DXF全称Drawing Exchange Format是Autodesk定义的一种CAD数据交换格式结构工程师用AutoCAD画好的板框外形、螺丝孔、开槽、连接器挖孔、限高区域最后都会通过DXF交到硬件工程师手上。Allegro本身也能画板框但结构图上那些复杂的异形轮廓、禁布区、安装孔位手工去Allegro里重画一遍既容易出错又跟不上结构改版的速度。所以“结构出图→DXF导入→生成板框→按图放件”就成了一条默认流程。我见过不少工程师直接把DXF里所有图元一股脑导入Allegro然后让它们躺在默认层里不管了。这样不是不能用但后面做DRC、出光绘、做3D装配时没归类好的垃圾层会反复添乱。正确的做法是引入DXF后按层级和用途重新归类轮廓线进入板框层标注尺寸进入标注层定位孔保留为机械层让图纸信息在Allegro里继续“活着”。1.2 从AD转Allegro的人最容易困惑的点在Altium Designer里导入DXF软件会默认把轮廓丢到Keep-Out层还自动生成板框到了Allegro里这一套行不通——Allegro导入DXF只是把几何图形原样搬进来它不会替你做板框、不会替你分层、更不会帮你对准原点。这是两个工具设计哲学差异最大的一处也是很多刚从AD转过来的同事第一次被卡住的地方。Allegro的思路是“导入只管导入处理全归你”。你需要自己把导入的线框Z-Copy成Outline自己把原点放到结构基准上再把元件精确放置到对应坐标。这个过程听起来麻烦但一旦你掌握它的逻辑会发现它比AD更可控尤其是面对异形板和大量定位特征时。2. DXF导入前的三件小事版本、单位、图层清理2.1 让结构工程师把DXF存成“老版本”Allegro各版本对DXF格式的兼容性一直在提升17.4可以识别新版AutoCAD导出的DXF但实际工作中我吃过太多次“导入后图元变少”或“突然报版本解析错误”的亏。如果文件是从AutoCAD 2018以上导出的建议让结构同事另存为AutoCAD 2000或2004版本的DXF这个版本格式几乎所有EDA工具都能稳定识别。注意DWG和DXF不是一回事。DWG是CAD原生格式Allegro对DWG的支持不如DXF稳定。哪怕结构工程师只发来DWG也最好请他用AutoCAD的“另存为”功能转成DXF再给你这一步能在源头消掉大半兼容性风险。2.2 单位不统一导入必然出大问题DXF本身是没有强制单位属性的它只是一堆坐标数字。结构工程师在CAD里按毫米画图导出DXF时文件里记录的坐标数值比如是“100.5”Allegro导入时如果当前设计单位设置成了mil那这个“100.5”就会被解释成100.5mil实际尺寸直接缩水到原来的约1/39.37。反过来也一样以mil为单位画的图纸被当成mm导入板框会一夜之间放大近40倍。所以导入前先跟结构确认清楚这张DXF是按mm画的还是按inch/mil画的。在Allegro里可以通过Setup → Design Parameter Editor → Design选项卡查看当前设计单位也可以在导入弹窗里临时指定单位。我的习惯是结构图一律按mm导入PCB设计单位也尽量用mm只有高频射频等对英制单位有强依赖的项目才切成mil。中途切换单位虽然Allegro会帮你换算但对齐操作容易产生小数误差。2.3 在AutoCAD里先瘦身Allegro里会轻松很多很多结构图里会带着尺寸标注、剖面线、图框图签、密密麻麻的辅助线这些信息在PCB设计里基本没用导进来只会增加文件体积和视觉干扰。最省事的办法是在AutoCAD中先删掉不必要的内容只保留板框外轮廓线定位孔、螺丝孔圆心或孔轮廓连接器开槽轮廓限高/禁布区边线关键结构基准点如果存在保留的线也不要直接导出建议先用AutoCAD的PEDIT命令把连续的线段合并成一条完整的闭合多段线。这个动作特别重要因为Allegro后面生成板框时闭合多段线能直接Z-Copy成Shape而一堆零散Line组成的轮廓则很容易在Z-Copy时断掉。3. Allegro导入DXF逐项设置与图层映射3.1 导入入口与基础参数打开Allegro PCB设计文件执行菜单File → Import → DXF弹出DXF导入对话框。不同版本界面略有差异但核心参数是一致的。先看“DXF file”路径选择选好文件后下面有几个选项需要逐项过一遍Incremental addition这个选项决定重复导入时是追加还是覆盖。我建议日常不勾选因为一旦勾选同一个DXF文件导入多次图形会叠加在一起出现重叠线段后很难排查。Drawing units按DXF原图单位选择通常选Millimeters。这里选错是“板框尺寸不对”最常见的根因。Filled polygons默认可以不勾。不勾选时闭合多段线会以线框方式导入勾选后则会生成带填充的多边形文件会更臃肿而且填充多边形可能与后续Z-Copy生成Shape冲突。我一般先按线框导入需要实体Shape时再用其他命令生成。设置完成后点击ImportAllegro控制面板会输出导入日志显示读入了多少条Line、多少条Arc、多少条Text、多少条Polygon。如果日志显示导入了大量图元但屏幕上却什么都看不到十有八九是图层没打开或者图形落在离原点很远的位置先用View → Zoom Fit看一眼。3.2 把DXF图层映射到Allegro的Class/SubclassAllegro里所有图形都必须挂在某一层Class/Subclass上DXF导入也不例外。默认情况下DXF中所有图层会被映射为一个统一的“DXF”层这种堆一起的做法管理起来很痛苦。更专业的做法是点开Edit layer mapping一张一张图层分别映射。左侧是DXF源图层名右侧是Allegro目标Class/Subclass。我的标准映射参考如下DXF图层名结构图常见Allegro Class/Subclass用途0 或 OUTLINEBoard Geometry / Outline板框外形最后生成ShapeMECH 或 MECH_ABoard Geometry / Other机械结构标识、限高线HOLE 或 MT_HOLEBoard Geometry / Dimension定位孔标注方便量测SILK 或 SILKSCREENBoard Geometry / Silkscreen_Top需要保留的丝印图形DIM 或 DIMENSIONBoard Geometry / Dimension尺寸标注文本不需要的辅助层不映射或映射到临时层减少视觉干扰映射时可以把DXF中所有标注尺寸统一映射到Board Geometry/Dimension即使将来要删也可以整层关闭或整层删除。映射表设置好之后“Save mapping to file”保存一份.map文件下次结构图改版再导入时直接加载这份映射就不需要重新配一遍图层了。3.3 导入后的第一眼检查导入完成不要急着画板框先验证图纸有没有“无损到达”。我习惯按这几步做快速检查用Color/Visibility打开刚才映射的层确认图形可见。打开Show Measure或Reports → Measure量一下板框最长的边和结构图标注尺寸对比误差超过0.01mm就要警惕单位或视图比例出问题。检查孔位圆心是否真的在期望坐标上方法是用Show Element点击一个定位孔的圆弧或圆查看其圆心坐标是否与结构图一致。检查是否有重复线段和重叠图元如果有在Allegro里用Edit → Delete配合Find面板按图层清理或者返回CAD用OVERKILL命令清理后再导。4. 从线框到真实板框Z-Copy与坐标基准统一4.1 用Z-Copy把轮廓线变成Outline ShapeDXF里导入的板框轮廓哪怕图层已经映射到了Board Geometry/Outline它在一开始也只是线框Line/Arc不是真正的Shape。Allegro里要把它变成真正的板框Shape让软件识别为板子外形就需要用Z-Copy。执行菜单Edit → Z-Copy在Options面板里设置Source: 选择DXF轮廓所在的Class/Subclass比如Board Geometry/OutlineTarget: 选择Board Geometry/Outline也可以先放到一个临时层比如Board Geometry/1_Outline确认无误后再复制过去Copy to subclass: 按你的目标层选择Offset: 输入0如果后续需要板框外扩再填正值或负值设置完成后点击轮廓线上任意一段Allegro会自动把闭合边界复制为一个Shape。如果轮廓是断的、由零散线段组成Z-Copy可能会只抓取部分线段甚至报“shape processing failed”。这时回到上一节说的在CAD里用PEDIT合并线段是最干净的解法如果已经导入进来了可以尝试Shape → Compose Shape手动选取一圈线段来生成闭合Shape。4.2 把原点统一到结构基准点结构图通常有自己的设计原点而这个原点一般不在板框左下角可能在板框中心、某一个安装孔上甚至随意放在图框外面。PCB设计的原点通常在板框左下角或者某个关键定位孔的中心。所以导入后要统一基准。统一基准有两种做法做法一移动所有导入图形。先在DXF上选一个已知基准点比如左下角第一个安装孔的圆心用Show Element读出它在Allegro里的当前坐标x1, y1然后利用Edit → Move选中所有DXF图形层在命令行输入x -x1 -y1把这些图形整体平移让该基准点落到(0,0)。这种方式保留了设计原点出坐标文件和光绘时都以(0,0)为参考工厂最习惯。做法二改变Allegro设计原点。执行Setup → Change Drawing Origin用鼠标精确捕捉或直接输入坐标把设计原点重新定义到DXF的基准点上。这个方法改起来快不需要移动图形但之后的坐标导出会以新原点为准要特别注意不要和结构图自身坐标系搞混。我个人更推荐做法一因为PCB光绘文件和贴片坐标文件默认都以设计原点为参考把图形整体移动到零点可以让制造端少一次坐标换算。移动之后记得再用Measure量一下基准孔位置确认是(0,0)。4.3 板框画好后别忘了对比一次层叠DXF结构图不仅提供外形还隐藏着板厚、禁布区等结构信息。板框Shape生成之后我建议把DXF层的线条保留在一个专门的机械层不删一方面方便后续和结构迭代对比另一方面做DRC时可以作为装配参考。很多新手导入完就把DXF层删掉等结构改版时后悔都来不及。5. 精确放置元件的三条路线手输坐标、Snap对齐、批量导入5.1 路线一Placement Edit模式下直接手输坐标对单个关键元件连接器、定位柱、主芯片最直接的方式就是手动输入精确坐标。先确认Allegro已经导入了网表也就是元件列表里有这些位号然后进入放置编辑模式点击右边工作栏的Placement Edit图标或者按快捷键。在Find面板里只勾选Symbols然后选择目标元件。选中元件后执行Move命令直接在命令行输入绝对坐标格式是x 坐标 坐标。比如当前设计单位是mm要把元件放到X10.5mm、Y20.3mm的位置就输入x 10.5 20.3回车后元件会带着预览状态贴到目标坐标此时右键选择Rotate可以在Option面板输入旋转角度比如连接器需要转90度就填90再右键Done完成放置。如果是要相对当前位置移动一段距离可以用增量坐标ix 2.5 0表示X方向增加2.5单位iy 0 -1.2表示Y方向减小1.2单位。这个技巧在把整排连接器按0.5mm间距排开时非常好用。这里有个很容易踩的坑命令行的坐标单位永远跟随当前设计单位。如果你设计单位是mil那x 10.5 20.3就会被理解为10.5mil、20.3mil而不是10.5mm。所以输入前先看一眼屏幕下角的单位显示。5.2 路线二用Snap对齐DXF上的孔位手输坐标适合知道准确数值的情况但有时候结构只给了DXF图纸孔位坐标没有单独标出来或者想快速把器件引脚对准DXF上的某个圆形开孔。这时可以用Snap捕捉方式。在Move命令状态右键Snap pick to选择Symbol Pin然后在器件上点击某个关键引脚比如连接器的1脚此时Allegro会用这个引脚作为拖拽参考点。接着再右键Snap pick to选择Segment Vertex或者Arc/Circle Center点击DXF上的孔位图元。如果孔是圆或圆弧选择圆心捕捉器件引脚就会精确落到孔中心。这种方法特别适合处理异形定位结构不用记坐标直接在图上抓就行。但要注意如果DXF中的孔是由两个半圆弧组成的圆心捕捉有时会不稳定。所以对要求很高的定位孔我更建议用5.1的坐标方式确保万无一失。5.3 路线三用Placement文件批量精确放置当板上有几十个连接器或者整板器件都需要按结构坐标摆放时一个一个Move效率太低还容易手滑输错。Allegro的Placement导入导出功能就是专门解决这类问题的。先从当前PCB导出放置文件File → Export → Placement生成一个文本文件里面的每一行就是一个元件基本格式如下REFDES,DEVICE,VALUE,X,Y,ROTATION,SIDE U1,LQFP48,MCU,10.5,20.3,90,TOP U2,0603C,0.1uF,12.0,25.5,0,TOP J1,CONN8,CONN,45.2,18.8,270,BOTTOM拿到这个文件后用Excel打开把X、Y、ROTATION、SIDE按结构图纸的坐标表批量更新保存为文本文件再执行File → Import → Placement导入。Allegro会根据位号把每个元件移动到文件中指定的位置和角度。用Placement文件有几点必须提醒文件头有单位注释导入前确认和当前设计单位一致。位号必须是Allegro里真实存在的器件位号否则导入会报warning并跳过。顶层TOP和底层BOTTOM不要写错写反了器件会瞬间镜像到反方向。如果你的元件原点不在几何中心文件里的坐标代表的是元件原点坐标不是外形中心坐标。放置前先确认元件封装的原点设置否则同一个坐标放进去实物位置可能和结构图差半个身位。Excel支持公式所以批量计算坐标、批量改角度非常方便。比如你想把某排电阻统一旋转90度直接在Excel里把ROTATION列改成90再导入即可比在Allegro里一个个选中去转快得多。5.4 放置完之后再做的检查不管用哪种方式放置元件最后都要做一轮坐标核对。我一般会执行File → Export → Placement再次把所有坐标导出来和结构BOM表或装配图逐项比对尤其是在“手动输入坐标”这种容易出错的环节之后不要偷懒。这一步能省下后面打样回来发现接插件位置对不上、整块板报废的巨款。6. 我在DXF导入和元件定位上踩过的坑坑现象根因解法导入后板框尺寸比结构图小39.37倍量测尺寸对不上明显缩小DXF按mm画Allegro里按mil导入重新导入Drawing Units选Millimeters导入后图形看不见屏幕上空白Zoom Fit后也没有图层映射到了未打开的Subclass或图形出现远处Color/Visibility打开所有机械层再Zoom FitZ-Copy无法生成板框选中轮廓线后只复制出一段或报错轮廓不是闭合多段线由零散线段组成回CAD用PEDIT合并或用Shape→Compose Shape手动闭合放置元件孔位偏差0.5mm器件引脚中心与DXF孔中心差半个孔距元件封装原点不在pin1或几何中心移动时错用外形中心修改封装原点或在Move时Snap到具体Symbol Pin再对齐旋转方向反了连接器角度与结构图差180度导入Placement文件时ROTATION符号理解错误建议先在PCB上放一个测试件验证角度正反再批量导入重复导入出现双重重影图形叠在一起看不出来但删除时删不干净勾选了Incremental addition后多次导入不勾Incremental addition或导入前手动删除旧DXF层6.1 “导进去啥都没有”别急着重装软件这是一个很常见的新手时刻实际上九成以上是图层可见性问题。Allegro默认可能只打开了Top、Bottom、Outline等少数层而DXF导入后的图形被映射到了没有打开颜色的层。处理办法是打开Color/Visibility对话框在Board Geometry里把对应Subclass的颜色打勾或者干脆先全开View → Color/Visibility检查一遍。如果全开还是看不见再看控制面板的导入日志。如果日志显示导入0个图元那就不是显示问题而是DXF文件本身没被Allegro识别这时先回到第2节检查DXF版本。6.2 关于“原点”这件事习惯越早建立越好在PCB设计中原点是最容易被忽略却又最致命的参数。DXF导入、元件放置、坐标导出、光绘输出每一步都在和原点打交道。我的建议是每接到一个新板子开工之前就在一个固定位置比如板框左下角设好原点并把原点坐标标注在项目文档里。结构工程师说“我把孔位放在X100 Y50”你要能立刻知道这个坐标相对板框左下角在哪个位置而不是拿着图满屏幕找。6.3 版本升级后默认参数可能不一样从Allegro 16.6换到17.2再换到17.4导入DXF的对话框每次都有点变化但核心参数没有本质区别。唯一明显不同的地方是新版本对图层映射的默认行为更“聪明”了但同时也可能把你以为会映射到你常用层的东西放到奇怪的地方。升级版本之后第一块板子建议先在测试文件里导一次DXF把配置和参数确认好再进正式项目免得在设计到一半时发现图层全部乱套。6.4 最后分享一个我自己的习惯我的工作目录里一定保留一份“DXF导入模板.map”层映射文件、一份“Placement导入模板.txt”格式说明文件。每次结构改版发来新图纸我导入DXF时直接Load映射放置器件时直接用Excel套模板改坐标整套流程从拿到DXF到完成主要器件定位基本可以控制在一个小时以内。你可以根据自己公司的结构图分层习惯也做一份专属模板这东西一次性投入长期受益。DXF导入和精确放置元件说到底是“规范流程”的问题不是操作复杂的问题。只要把单位、图层、原点这三个底子打好再用Placement文件做批量精确放置Allegro的导入定位流程其实可以做到又快又稳。希望这篇文章能让你少走几趟弯路下次再接到结构图直接就可以开工。
返回列表