ARTICLE DETAIL

资讯详情

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

Allegro修改原点坐标的两种核心方法与实战避坑指南

Allegro修改原点坐标的两种核心方法与实战避坑指南 做PCB设计的人十个里得有八个被“原点”这玩意儿坑过。我最近做一块物联网主板结构工程师发来DXF往Allegro里一放板框直接落在坐标(3200,1500)附近0,0原点悬在图纸半空中。刚开始没当回事画到一半出Gerber给板厂对方回邮件说坐标对不上问我要不要重新出一套。那会儿我才意识到原点这个看似不起眼的设置其实贯穿了布线、标注、出图、贴片坐标全流程任何一个环节没对齐后面全是麻烦。这篇就聊清楚Allegro里修改原点坐标的两种核心方法顺带把我实际项目中踩过的坑和总结的技巧一并分享。不管你是刚转Allegro的新手还是被原点问题磨得没脾气的老工程师看完应该都能直接上手解决自己手里的案子。1. 为什么会纠结原点我遇到的三类典型改原点需求1.1 结构DXF导入后原点跑到图纸外这是最高频的场景。结构工程师用SolidWorks或者AutoCAD画板框时CAD图纸的原点通常不在板框上甚至整张图放在离原点很远的象限里。导入Allegro之后板框所在的位置可能已经是几千毫米开外0,0原点根本不在视野范围内。这种情况如果不处理后续做布局、标注、拼板都会很别扭。更麻烦的是结构工程师后续更新DXF时如果两边原点不一致交换文件后板框位置就会错位。我见过有人直接用Move把板框拖到原点附近但拖完发现板框尺寸被拖歪了DRC报了一堆错。正确做法是先把Allegro的原点重新定义到板框的某个关键角点再让结构工程师那边也统一到这个参考点。1.2 设计迭代中需要统一坐标基准做复杂项目时经常会有多个工程师分工协作有人画板框有人摆器件有人铺铜。如果每个人在各自的文件里用了不同的原点基准合并到一块板上时就会非常混乱。最常见的情况是硬件工程师要求某个定位孔是(0,0)而结构工程师给的DXF基准点却是板框左上角。而且不同工程师从图书馆调用的封装、模块、机械符号自带的原点也各不相同。某次做双板叠拼设计我在主板上对好了坐标子板一导入就偏了几百mil查了半天才发现是子板文件的原点跟主板不同子板所有元件坐标都是以一个奇怪的偏移量记录的。这种跨文件协作的场景统一原点是最省事的解法。1.3 出Gerber和贴片坐标文件时坐标参考不一致很多设计在画板阶段根本不关心原点等投板前导坐标文件才发现问题。板厂和贴片厂对坐标文件的第一要求就是“原点要明确”。如果Allegro里面的原点和结构图或者贴片机程序里预设的基准点不匹配SMT产线就得重新改程序弄不好贴错位置就是批量事故。我接过一个小批量订单因为坐标文件里原点指向了板中心贴片机的送板轨道参考的是板边结果一个0402电容贴偏了20多块板。所以现在每块板子在导出Pick and Place文件之前我都会先确认一遍原点在哪、参考点是什么、跟贴片厂的要求是否一致。日常可以在Command窗口输入x 0 0回车光标就会跳到当前原点位置快速确认图面上原点大概落在哪里。2. 方法一用Change Drawing Origin把参考系“挪”到目标点2.1 操作路径与三种定位方式这是Allegro官方提供的原点修改方法菜单位置在Setup - Change Drawing Origin。执行命令之后命令行会提示你选择一个点作为新原点此时的操作方式有三种直接鼠标点击适合“大概位置”的场景但精度不够做产品设计不建议这样用。配合右键Snap Pick To精确捕捉这是主力方案。右键菜单里可以切换捕捉类型比如选择Vertex端点就能点到板框的角点选择Pin就能点某个器件引脚选择Arc/Circle Center就能捕捉圆心。在Command窗口输入绝对坐标比如输入x 2000 1000回车新原点会直接落到当前坐标系里(2000,1000)那个点上。这个方式适合有明确数值要求的场景。举个例子我想把当前板框左下角作为新原点。执行Setup - Change Drawing Origin后右键选择Snap Pick To - Vertex然后点击板框左下角那个顶点整块板的所有坐标都会自动重新计算左下角位置就变成(0,0)了。全程不需要选中任何对象这一点比Move方便很多。2.2 命令行输入坐标的细节当命令行提示Pick new origin point时输入的坐标是相对于旧原点的绝对坐标。比如当前板框左下角在(1200,800)你想让这个点变成新原点有两个思路第一个思路直接鼠标点左下角Allegro自己会算你不用管坐标值是多少。第二个思路如果你明确知道左下角的坐标就是(1200,800)那就在命令行输入x 1200 800回车效果完全一样。这里有个非常实用的技巧如果想快速找一个点的坐标不用记图纸上的标注把鼠标移到那个点附近看界面右下角或者命令行返回的坐标读数就行。Allegro会实时显示光标位置非常方便。输入坐标后如果弹出窗口问是否更新所有对象坐标点Yes或者确认。有些版本在16.6里执行后图元坐标会自动更新不需要额外确认17.2以上的版本交互上可能会多一步确认提示按实际情况处理就行。2.3 改完之后必须留意的显示问题Change Drawing Origin本身是一个参考系变换图元物理位置不变但数据库中记录的坐标值全部变化了。大部分情况下Allegro能正确处理但我遇到过两类特殊情况第一类动态铜皮显示异常。改完原点后有些动态铜皮的边缘线还停留在旧位置看起来像变形甚至错位。这时候需要对动态铜皮做一次更新右键点击铜皮选择Update Dynamic Copper或者到Display - Status面板点击Update DRC铜皮就会重新生成恢复正常。第二类某些特殊模块对象没有同步更新。比如用Sub-drawing方式导入的模块、某些外部参考对象偶尔会出现坐标没跟上的情况。判断方法很简单改完原点后马上执行一次Display - Status的DRC检查再对比几个关键点的坐标值是否正确基本就能发现问题。如果发现个别对象卡在原位置不用手动去拖可以用Edit - Move选中那个对象然后右键Snap Pick To - Symbol Origin再输入x 0 0回车把它甩回原点。这种情况不多见但一旦遇到还是挺折腾的。2.4 16.6与17.x版本的差异不同版本的Allegro在Change Drawing Origin这个功能上行为不完全一致。16.6版本里操作相对简单粗暴改完原点后所有对象坐标自动更新但如果板上有复杂的动态铜箔铜箔边缘偶尔会显示错乱。17.2和17.4版本中坐标重算更彻底软件本身的处理也更智能基本不需要人工干预。不过我在17.4里遇到过一个问题改完原点后某些模块的Rules Region坐标还是按旧原点计算的导致局部设计规则错位。解决办法是把对应区域删掉重新画一遍或者用Move调整。**不同版本遇到显示或DRC问题优先尝试Tools - Update DRC基本能解决90%的异常。**如果还不行再考虑铜皮重铺或者重新放置对象。3. 方法二用Move命令把全板“搬”回原点3.1 Move命令与坐标基准点的完整流程第二种思路不动原点动图。把整块板上所有对象一起选中用Move命令指定一个参考点然后把参考点移动到目标坐标。比如我想让板框左下角放在(0,0)那就全选所有对象把左下角作为参考点移动到坐标(0,0)位置。这个方法的操作路径是打开Find面板点击右上角的All按钮把所有对象类型打开。在图面上框选全部对象。如果板子比较复杂框选容易漏掉边角上的小铜皮或走线更稳妥的方式是在Find面板全开的前提下按快捷键或命令行输入sel all或select all执行全选。执行Edit - Move。右键选择Snap Pick To - Vertex点击板框左下角顶点把它作为移动参考点。在Command窗口输入目标坐标x 0 0回车。整块板会整体移动左下角精确落在(0,0)原点。注意Move命令执行后命令行的提示是Select elements to move这时候如果之前没选中任何对象你就需要用鼠标疯狂框选那就容易漏。所以我的习惯是先全选再执行Move。3.2 全选对象时的Find面板设置避免漏选漏选是Move方法最容易翻车的环节。PCB文件里包含的对象类型非常多走线、铜皮、焊盘、过孔、板框、丝印、标注、Keepin区域、机械符号、光绘标记等。默认状态下Find面板可能只开了其中几类直接框选的话漏掉几个特殊区域几乎必然发生。实际操作中我会在Find面板里先点All全部打开然后执行sel all。但有几种对象要额外判断Route Keepin和Package Keepin这类约束层对象被选中后一般没问题跟着板一起移动是合理的。Board Geometry里的流水号、版本号文字如果这些文本坐标是独立于板框的往往也需要跟着移动所以最好一起选中。Additional Drawings比如Notes、标注线同理一般都需要一起移动。其他模块Mechanical Symbols比如PCB上的安装孔、定位柱这些属于机械符号多半需要一起移动。如果某些对象真的不想跟着移动比如图纸框、说明文本可以在Find面板里关掉对应类。但绝大多数情况下一块PCB的所有对象应该整体移动所以全选反而最安全。移动前还有一个好习惯把Design Parameter Editor里的Extents设计图纸范围适当放大一点避免移动后板子超出图纸边界影响后续操作和输出。3.3 精确捕捉参考点Snap Pick To实战技巧Move命令中参考点的选取直接决定了最终精度我总结了几条实战经验板框角点用右键Snap Pick To - Vertex这个模式下可以捕捉到线段的端点板框的角点就是line或shape的顶点精度极高。圆心如果要以定位孔或者螺丝孔作为基准用Snap Pick To - Arc/Circle Center鼠标靠近圆边就能捕捉到圆心。器件引脚如果要以某个器件的1脚为基准用Snap Pick To - Pin然后把光标移到目标引脚上会出现捕获标记。器件原点如果用Symbol Origin捕捉的是封装自身的原点这个点不一定在器件中心或某个引脚上使用前最好先弄清楚封装原点定义在哪。命令行输入目标坐标时格式是x x坐标 y坐标注意是小写字母x开头坐标之间用空格隔开。比如x 0 0、x 100 200。这个格式在Allegro里是通用的Change Drawing Origin、Move、Copy、Symbol放置等命令中都能用。如果想做相对移动比如整体向右移动50mil可以在输入坐标时用ix 50 0的形式i表示增量x表示沿X轴方向。同理iy 0 50表示沿Y轴正方向移动50。这个技巧在微调整板位置时非常实用。4. 两种方法的本质区别与场景选型4.1 改坐标系 vs 移动物体结果一样、路径不同有人说“两种方法做完效果一样”这话对也不对。从最终文件状态来看确实都能把目标点变成(0,0)但两者处理的是完全不同的东西。Change Drawing Origin改的是坐标系。板子本身没动所有图元的物理位置不变但坐标数值被整体重新计算了。可以把它理解成桌子上的零件都没动你把尺子的零刻度移到了另一个位置重新读数。Move命令改的是物体位置。坐标系完全不动板上的对象被物理移动目的坐标变了对象在空间中的位置也变了。还是那张桌子你拿起整个托盘把零件换了个位置放。这两种操作直接导致了适用场景的差异如果你只是想让“某个点成为新原点”用Change Drawing Origin最干净如果你想把板子整体移动到某个指定坐标用Move更直接。4.2 选型对照表与具体建议对比维度Change Drawing OriginMove命令是否选中对象不需要需要全选操作原理参考系变换物体平移坐标值结果所有对象坐标重新计算选中对象坐标改变适合场景只想改原点定义需要整体平移或部分移动精度控制捕捉或输入坐标捕捉参考点目标坐标风险点极少数模块可能不同步漏选对象导致错位实际项目里我的选型逻辑一般是这样结构DXF刚导入、板框位置已经摆好、只是想重整坐标显示时直接用Change Drawing Origin。板框需要整体移位、或者要和其他模块对齐到某个指定坐标点时用Move。如果既要改原点又要把板挪到某个位置那就两步结合先用Change Drawing Origin改原点再用Move把板框挪到目标坐标。很多工程师习惯只用自己熟悉的一种方法其实两种方法配合起来效率更高。我个人的习惯是能不动板就尽量不动优先用Change Drawing Origin遇到真正要改变板子位置的需求才用Move。4.3 容易混淆的概念Drawing Origin与封装体原点设计中有两个“原点”概念经常被混为一谈第一个是绘图原点Drawing Origin也就是整个brd文件的坐标参考基准贯穿整个设计全过程。第二个是封装原点Symbol Origin是每个器件封装自己的参考点通常在制作封装时定义可以放在器件中心、1脚或其他位置。两者互相独立不能混用。举个例子你从库里面调用一个芯片封装芯片的Symbol Origin可能定义在1脚也可能定义在器件几何中心。放置器件时坐标显示的是Symbol Origin的位置跟Drawing Origin没有任何关系。所以如果你发现某个器件坐标“偏了”先搞清楚是Drawing Origin变了还是封装的Symbol Origin本身就不在预期位置。改Drawing Origin解决不了封装Origin的问题需要进封装编辑器修改或者用Move Snap Pick To - Symbol Origin重新定位。这个区分在做拼板、做模块化设计时特别重要用错了方法会白白浪费很多时间。5. 改完原点后必做的三件事5.1 重新输出Gerber并核对Film Offset改完原点的第一件事不是急着继续画板而是检查Artwork输出设置。Manufacturing - Artwork面板里的每一层Film都有坐标偏移选项。如果你用的是Film Center模式底片会以板中心为基准自动对齐改原点影响不大。但如果你用的是Film Offset或者Underline方式原点的变化会直接影响底片坐标不改的话出图位置就是错的。我有一套固定流程检查Artwork面板里各层的Film Offset设置确认和当前原点匹配。生成一份Preview或者直接跑一次光绘用CAM编辑器打开看一下各层是否能对齐。重点检查顶层丝印、阻焊层、线路层之间的相对位置如果出现整体偏移优先排查Film Offset设置。这个流程虽然繁琐但能避免板厂那边因为坐标问题反复确认。投板前多花十分钟比来来回回沟通一周舒服得多。5.2 重新导出Pick and Place贴片坐标文件File - Export - Placement导出的贴片坐标文件坐标值完全基于当前原点。改了原点之后如果不重新导出贴片厂拿到的还是旧坐标整块板的器件位置全都会偏。导出时我习惯把单位设为mm小数点保留4位。坐标文件里会包含每颗器件的中心坐标、旋转角度、所在层等信息。输出后抽几颗关键器件对比一下在Allegro里用Show Element查看器件的Symbol Origin坐标再到文本文件里核对确保一致。特别是混合组装板正面和背面都有器件背面器件的X/Y坐标是基于原点映射出来的如果原点错误背面的坐标会镜像或者偏移贴片机打出来全是废板。5.3 核对NC Drill钻孔坐标和DXF导出NC Drill钻孔文件的坐标同样基于原点。改完原点后钻孔文件需要重新生成。我在CAM软件里打开钻孔文件和线路层文件叠在一起检查孔位是否与焊盘中心对齐这一步能抓出很多隐藏问题。结构DXF导出也不能忽略。File - Export - DXF导出的结构图坐标和结构工程师那边的CAD坐标必须一致。我通常会把板框的四个角坐标导出来发给结构工程师确认一轮。工程协作上最怕的就是“我以为你坐标系跟我一样”两边各做各的最后对不上。改完原点后主动发一份DXF过去做坐标校准是成本最低的沟通方式。另外还有一个实用检查项用命令行输入x 0 0回车光标跳到原点再把鼠标移到你设定的基准点比如板框左下角看坐标显示是否接近(0,0)。这一步能快速验证原点有没有设置成功。6. 实操中容易踩的坑与个人经验6.1 动态铜皮显示异常的处理顺序我在前面提到过改完原点后动态铜皮偶尔会出现显示错位。这里给一个标准的排查顺序先做一次Update DRC看铜皮是否恢复。如果不行对动态铜皮单独执行右键Update Dynamic Copper。还不行把铜皮删除重铺。多数情况下第一步就能解决。我在17.4版本中还遇到过一次奇怪现象改原点后铜皮的Restricted区域反了DRC一直报短路。那次花了将近半小时才发现是铜皮显示扭曲导致误判Update DRC之后一切正常。所以遇到铜皮相关的DRC报错先别急着改线先看看是不是原点修改引发的连锁反应。6.2 操作前先备份不可逆操作的安全线Allegro虽然有Undo功能但原点修改后的文件状态涉及大量坐标计算一次改动以后再想精确回到改动前的状态其实很困难因为原点的绝对坐标值未必记得清。所以我的习惯是改原点之前先把文件另存一份命名加上bak或者rev_old之类后缀。这个习惯帮过我大忙。有一次我在一块八层板上改原点改完后发现部分模块的坐标计算乱了而且已经存盘退出过一次想撤销都撤销不了。好在有备份文件直接打开旧版重新操作损失控制在十分钟以内。没有备份的情况下这种错误可能要花半天甚至一天来恢复。6.3 多板拼板时的坐标整体校验做拼板设计或者Panel时原点的全局影响格外明显。单板内改原点影响的只是坐标显示拼板文件里如果有多个重复单元每个单元的坐标偏移量都必须保持一致否则在板厂那边做V-Cut或者激光拼割时全部乱套。我的做法是拼板的主文件只设置一次原点所有子板通过相对坐标定位不做多余的单独原点操作。子板文件要改动原点时在子板文件里确认好基准再以模块方式调入主板而不是在主板上直接移动子板的内容。这样每块子板的坐标数据是干净的后续调整起来非常方便。还有一个小技巧在拼板文件里放置一个核对用的Marker比如在(0,0)画一个小十字丝印每次转换文件后对照这个Marker的位置就能快速判断坐标是否发生了整体偏移。6.4 一个反直觉的经验改原点前先想清楚“为什么要改”最后说个反直觉但很重要的经验。改原点是手段不是目的。很多时候你说不准到底应该把原点放到哪个位置这时候最容易犯的错就是“先改了再说”结果改完发现结构那边基准点又不是这个位置了。我现在接到需要改原点的需求会先列一个简单的确认清单这个原点是谁定义的结构工程师、硬件工程师还是板厂后续有哪些流程要依赖这个原点Gerber、坐标文件、钻孔文件还是DXF改完原点后有没有下游环节需要同步更新这三个问题确认清楚再动手改基本不会出大问题。如果项目比较紧急至少也要在邮件或者协作群里跟相关同事同步一下原点变更这件事避免对方还在用旧坐标干活。原点这个功能看起来不大但牵涉的工序却不少。希望这篇文章能把你在Allegro里修改原点坐标的方法、原理、坑点和后续检查讲透。我自己也是在几次返工之后才把这套流程固定下来的现在每次处理原点变更都按同样的节奏走省心很多。如果你在实际操作中遇到我这里没讲到的怪问题欢迎在评论区补充大家一起把Allegro的坑填平。
返回列表