
刚把Allegro 17.4的板框画完那天我盯着屏幕上的Board Geometry/Outline陷入沉思丝印层要一版外框路由区要内缩0.5mm的边界元件区要再内缩2mm装配图也要一份外形参考……如果全用手工重新描一遍少说得折腾半小时而且每一份都可能跟原始外框差出几个mil后面DRC一跑全是虚惊。后来被同事提醒Allegro里有个Z-COPY命令就是专门干这种把外框按设定偏移复制到其他层的活。这篇文章不是复读官方文档我按自己从16.6一路用到17.4的实际体会把这命令的机制、操作、踩坑和几个进阶玩法一并梳理出来。适合刚接触Allegro、画完板框还不知道怎么派生的新手也适合那些已经会照着画一遍但总被偏移方向、圆弧精度坑到的朋友。1. 被Z-COPY解决的痛点三种外框复制场景Z-COPY这名字很直白Z是零散时间搞定重复劳动的ZCOPY就是复制。它能把已经存在的线、Shape封闭图形按你指定的偏移量复制到另一个Class/Subclass源对象在哪层不重要关键是你想让它变成什么、出现在哪层。新人最容易遇到三类需求全都可以用Z-COPY一把梭。1.1 板框转Route Keepin / Route Keepout做PCB内层走线必备的一个约束区域是Route Keepin意思是走线允许范围就在这里头。板厂对板边距一般都有要求常规做法是从板边往里缩0.5mm到1mm把这块内缩区域画成Route Keepin。手动画的时候直线段还好圆弧倒角、异形缺口一多很容易跟板框对不上。Z-COPY是直接拿板框外形做等距偏移内缩出来的Route Keepin跟原始板框完全平行圆弧、倒角都会一起偏移这才是真正意义上的由外框派生不是重新画。Route Keepout也类似只不过它是禁止走线区。有些设计里会在板内特定区域做禁布比如天线净空区、高压隔离带这些区域的外形往往就是从板框或某个机械层图形复制过来的。用Z-COPY加一个正偏移外扩或负偏移内缩得到一个封闭的禁布区比手动画闭合多边形靠谱得多。1.2 板框转Package Keepin元件摆放范围一般比实际板边再缩一圈方便留出装配边距和走线空间。Package Keepin的派生逻辑跟Route Keepin完全一样区别只是Class选Package Keepin。有些项目会有元件离板边必须≥2mm的硬性要求直接从板框负偏移2mm生成一个Package Keepin最后DRC会替你盯着不需要肉眼检查。1.3 板框转丝印和装配外形外框除了用于约束走线和元件还要在丝印层Board Geometry/Silkscreen画一圈板框线方便装配时目视定位。很多时候还要在Assembly层或者制造说明层放一份外形。这里有个细节丝印外框通常是线不是面。Z-COPY里把Convert to选成Line再给定线宽比如0.2mm就能把原本是封闭Shape的板框变成一条首尾相连的丝印线。对制造资料来说这份丝印外框比你去Layout里重新用Line描一版可靠得多因为它是从板框数据派生出来的不可能出现丝印外框跟实际板框偏差0.3mm这种低级事故。2. 动手前先把Z-COPY的工作机制和17.4面板参数吃透Z-COPY看起来是点一下复制但Options面板里那几个字段每一个都对应一个常见的翻车点。我用17.4的默认界面讲就算你的版本字段叫法略有差异逻辑也逃不开下面这几项。2.1 源对象与目标层Class和Subclass一旦选错全盘皆错Allegro把PCB数据按Class大类 Subclass子类组织比如Board Geometry是大类底下有Outline、Silkscreen、Assembly等等。Z-COPY复制的是对象但对象最终落到哪个子类完全由Options面板里的Class和Subclass决定。很多新手在这翻的第一个车是板框明明在Board Geometry/Outline却想去Outline/All里找。17.4的模板里两种层级都可能有有的是老的Board Geometry风格有的是新的Outline大类风格。做Z-COPY前先搞清楚你板框到底在哪个Class不然就算命令执行了你也可能在错误的层里找不到复制结果。目标层选错更隐蔽。比如你要的是Route Keepin结果在Class下拉里选了Board GeometrySubclass选了个Route_Keepin自己新建的子类。图形复制过去了位置也没错但它只是一个普通二维图形不是真正的布线约束区后续走线DRC压根不认它。判断标准很简单真正的Route Keepin在Class列表里是独立的Route Keepin大类不是某个Board Geometry下的小弟。2.2 Convert to选Line还是选Polygon依据不是个人爱好Z-COPY的Convert to选项通常有Line和Polygon有的版本写Shape两种。很多人不理解我直接给结论目标需要一个封闭区域Route Keepin、Route Keepout、Package Keepin、禁布区——选Polygon。目标需要一圈线丝印外框、装配线、制造标注线——选Line并设线宽。如果你的源对象本身是几段断开的线没有闭合——选Polygon大概率会失败或生成残缺图形。这里有个关键机制只有源对象是合法闭合的Shape时Z-COPY才能把它转换成新的Polygon。如果你的板框是用Line一根一根画出来、终点和起点没有完全接上命令不会报错但它复制过去的可能只是一堆散线或者干脆没有任何反应。后面避坑章节我会专门讲怎么用Compose Shape把断线拼成合法Shape。2.3 Size偏移正负号的真实含义和单位混用的教训Z-COPY的偏移量区域一般是一个带符号的数值核心逻辑对封闭多边形来说很直观正值外扩负值内缩。比如板框是100mm×80mm的矩形Size填-1得到的Route Keepin就是98mm×78mm填1得到102mm×82mm。但要注意这个规律只对最外层轮廓成立。如果板框里带有挖槽、螺丝孔这类内部边界内部边界的偏移方向跟外轮廓相反。这个我在第五节单独讲因为它是异形板最容易踩的坑。单位混用也是高发事故。设计单位是mm时你脑子里想着缩20mil手一快填了20结果缩了20mm板子直接缩没了一半。Allegro是一个单位敏感的工具填数之前先看设计单位或者统一用mil思维。我自己的习惯是单位是mm就全用mm需要mil换算时先心算成mm再填。此外Convert to Line时还会出现Line width字段这个值决定复制出来的线宽。丝印层一般0.1mm~0.2mm制造说明层可以更细但别填0填0复制出来的线会变成零宽度的东西出Gerber时容易被当垃圾对象处理。3. 五分钟实操从外框到Route Keepin的完整流程理论讲了一堆现在走一遍实际操作。我以把板框内缩0.5mm生成Route Keepin为例你照着做一遍后面所有派生场景模块化套用就行。3.1 准备检查确认板框所在层与设计单位第一步不是调命令而是确认三件事板框是不是一个合法的闭合Shape。最简单的方法是直接用菜单Shape Compose Shape别急先做验证用鼠标点板框边缘如果整圈能一起选中、高亮成一个整体说明它是Shape如果只能选到其中一段说明它是断线。板框所在层。打开Display Color/Visibility看Board Geometry下的Outline或者Outline类的All子类是否可见。如果板框是绿色的但你在Options里找不到对应层多半是Class选错了。设计单位。Setup Design Parameter Editor里看Units确定当前是mm还是mil这会直接决定偏移值怎么填。这三步加起来不到一分钟但能避免后面所有命令没反应和结果不对的排查时间。3.2 调出Z-COPY并按路线图设置面板菜单路径是Edit Z-Copy或者在命令框直接键入z-copy回车。命令激活后右侧Options面板会变成Z-COPY的参数区。按这个顺序设置Class选Route KeepinSubclass选AllRoute Keepin默认只有All这一层如果你只想在指定信号层做Keepin有些版本支持建多层但新手先用All最稳妥Convert to选PolygonSize区域填入-0.5单位跟随设计单位如果设计单位是mm就是-0.5mm删除选项默认先别勾Delete existing shapes on same class and subclass这里特别说一下为什么不勾删除选项。Route Keepin这种区域性对象一次通常只生成一个不勾也不会出问题。但后面你做多块禁布区时如果每次都勾了删旧上一次复制出来的东西会被下一次吞掉非常坑。我建议默认不勾需要覆盖旧区域的场景再手动勾上。3.3 拾取源对象并观察动态预览Options设置完鼠标移到画布上单击板框边缘。如果你点的是一个合法闭合Shape屏幕上会出现一个预览轮廓肉眼能看出它在原板框的位置关系是内缩还是外扩。这个预览特别有用别急着右键Done先转一下视角确认预览确实在板框内部。确认无误后右键选择Done或者直接按回车结束命令。如果不满意马上CtrlZ回退重来Allegro的撤销栈对Z-COPY是生效的。如果是断线板框点第一段线时预览可能只是其中一段这时候你会立刻意识到哦原来是断线不会等复制完才发现。这就是为什么要强调先检查源对象。3.4 用Measure验证偏移值复制完别急着走人验证这一步是专业Layout和业余选手的分水岭。在命令框输入measure回车或者点工具栏的量测图标然后先点板框边缘再点新生成的Route Keepin边缘看测出来的距离是不是0.5mm。有个细节Measure测的是你点的两个点之间的距离所以要选在同一个法线方向上比如板框左边中点对应Keepin左边中点这样才是最真实的垂直间距。如果你随便点两个对角点测出来是斜向距离那就自己吓自己了。另外验证完顺便看一眼Options里Route Keepin的Class列表里是不是出现了一个All的子类对象。如果看不到回到Color/Visibility把Route Keepin点亮显示。3.5 把ZC变成快捷键省掉每次菜单点击Z-COPY这个命令用得多但默认没有统一快捷键每次从Edit菜单里翻很烦。我建议在env文件里加个别名这也是热搜里allegro 17.4快捷键设置最常见的需求。17.4装完后在本机用户目录下通常有一个pcbenv文件夹里面有个env文件也有的环境在安装目录的share\pcb\text\env。用记事本打开在文件末尾加一行alias ZC z-copy保存后重启Allegro。之后在命令框输入ZC回车等于直接启动Z-COPY。用alias定义多字符别名不要用funckey去占用单个字母键因为z这类单键很可能跟缩放之类的默认快捷键冲突。如果你用的env文件已经在别的脚本里定义过ZC先用记事本的查找功能搜一下ZC或者z-copy确认没有冲突再添加。4. 避坑指南Z-COPY失败和异常结果的完整排查链路Z-COPY命令本身很简单但新手用起来问题层出不穷。我把几个最高频的故障整理成排查链路按现象→原因→解决的顺序讲这样你以后遇到同类问题可以照着走。4.1 点命令没反应先查板框是不是一条条断线现象Z-COPY执行了Options也设好了点板框边缘却什么都没发生或者只复制出去一小段线。排查链路第一步鼠标点板框边缘看是不是只能选中一截而不是一整圈。如果是那你的板框是Line拼出来的没有闭合。第二步用Shape Compose Shape把断线拼成一个合法Shape。操作逻辑是选中所有断线Find面板里把Lines、Arcs都勾上执行Compose Shape命令会提示你选择要合并的对象选择完成后右键Done然后在封闭区域内点一下Allegro会基于这些线生成一个Shape。第三步拼完后重新做Z-COPY。这里面还有个隐藏坑Compose Shape要求断线之间真正端点相连哪怕有0.001mm的间隙都可能拼不成功。如果拼了好几次都失败先放大到能看清捕捉点的倍数检查每条线的端点有没有重叠。4.2 复制出的区域方向反了偏移符号和断线法向的纠缠现象明明想内缩结果Route Keepin跑到板框外面去了。原因分两种。第一种是你把正负号填反了这个好办改个符号重新来。第二种更隐蔽当源对象不是闭合Shape而是一堆零散Line时Z-COPY对Line做偏移方向是沿每条线的法向走的Line的走向决定了法向朝向哪边。也就是说同样填一个正偏移在不同线段上可能一个往外偏、一个往内偏最后复制出来的东西七扭八歪。所以避坑的核心还是那句话复制成区域对象之前一定要让源对象是合法闭合Shape。Shape的偏移方向是明确的外扩内缩不会出现法向打架的问题。4.3 凹槽和异形区域偏移后自相交现象板框带有深凹槽做外扩时复制出的Shape边缘交叉重叠看起来像一团乱麻。原因偏移量超过凹槽的曲率半径时凹槽两侧的边界会互相穿过产生自相交多边形。这个在几何算法里很常见Allegro不会自动帮你修复。解决办法分情况如果是做内缩Route Keepin这类凹槽一般不会产生自相交放心用。如果是做外扩比如板外的Route Keepout尽量把偏移值拆成小步比如想外扩1mm先扩0.3mm看结果没问题再扩0.3mm分三四次完成。每次复制前把上一次的勾选了删除选项避免叠加出更乱的形状。如果外扩后已经自相交直接Undo重来不要尝试在乱轮廓上修修补补浪费时间且容易留隐患。4.4 Delete existing shapes误删已有Keepout现象你之前在Route Keepout/All里画好了两块禁布区想再补第三块用Z-COPY复制完发现前两块不见了。原因Options里的删旧选项被勾上了命令执行时先把目标层同Class同Subclass的旧Shape全删掉再放置新复制对象。解决办法如果刚发生立刻CtrlZ撤销后把删旧选项取消勾选再重新复制。想彻底避免我建议默认不勾它。真需要覆盖旧区域时手动选定旧Shape删掉再复制新的比依赖自动删除更可控。4.5 圆弧轮廓的精度问题现象板框带了半径为2mm的圆弧倒角复制成Line做丝印外框时圆弧变成了很多小折线转折明显。原因Shape转Line时圆弧是按系统设定的曲线离散精度被切分成小线段。这个精度在Setup Design Parameter Editor的Shape相关参数里控制切得越密越接近圆弧但数据量也越大。对策看用途。丝印层线框对圆弧精度要求不高肉眼可见的小折线在成品板上通常没问题。但如果是拿去做Route Keepin之类的约束区就老老实实复制成PolygonPolygon能保持圆弧的真实几何不会出现小折线。复制成Polygon后如果边缘还有锯齿那是显示分辨率问题不影响数据结构把画布放大多看两级就知道真假。5. 进阶组合拳异形板、挖槽区和多处禁布区的一次到位做法Z-COPY用顺手之后你会开始琢磨更复杂的场景。下面这几个玩法是我在异形板、多孔位板上实际验证过的思路比具体操作更重要。5.1 异形板外框一次内缩/外扩到底行不行异形板最常见的样子是外层是一个带圆弧的异形轮廓内部还有一个大挖槽或者多个安装孔。这种板子做Z-COPY时最迷惑人的一点是内部边界会反向偏移。举例板框Shape里有一个螺丝孔挖槽挖槽边界是板框Shape的内部边界。你把整块板框Z-COPY外扩0.5mm时外轮廓会往外扩但内部挖槽反而会往里缩0.5mm因为内边界的偏移方向跟外轮廓是相反的。这不是Allegro抽风而是几何上的必然Shape的偏移是沿着边界法向外轮廓法向朝外内边界法向朝内。实际设计时如果你要的是挖槽周围0.5mm禁布区直接拿整个板框外扩是得不到的。正确做法是把挖槽单独当成一个独立对象处理或者画完Z-COPY后再用Shape Edit把内边界单独修正。如果挖槽本身是一个单独的机械层Shape那就简单了直接选中它做Z-COPY偏移就是环状扩展正好符合需求。5.2 给安装孔生成一圈禁布区手机板、电源板上螺丝孔周围的禁布区是Z-COPY最舒服的用武之地。前提是每个螺丝孔在机械层里是一个独立的Circle或闭合Shape而不是嵌在板框Shape里的void。如果是独立对象选中它做Z-COPYConvert to选PolygonOffset填你要的间隙值比如0.5mm就能得到一个比孔大一圈的Route Keepout。多个孔可以一起做先在一个孔上点一下再依次点其他孔最后一起Done不用一个个重复命令。如果孔是板框Shape里的void单独选不中这时候别强行用Z-COPY硬刚直接新建一个Route Keepout后画圆环或者用Shape Polygon画一个覆盖圆环区域的Shape。工具选型要灵活不能为了用某个命令而用某个命令。5.3 直线板框断线多先Compose再Copy一劳永逸我见过不少从AutoCAD或结构软件导入的外框几十段Line和Arc首尾相接看起来是闭合的但一选中就是散的。遇到这种别急着用Z-COPY先花几秒钟做一次Compose Shape。操作细节补充一下执行Shape Compose Shape后在Find面板里把Lines、Arcs、Paths都勾上框选整个外框。右键Done后命令会提示你Select point for new shape location之类意思是让你在封闭区域里点一下内部点Allegro就会生成一个新的Shape。生成后这个Shape跟原来的断线是并存的可以把原断线层关掉避免后续误操作。这一步做完后面所有Z-COPY都变得异常简单一个闭合Shape随手一点就是标准的派生区域。这是我在异形板项目里最推荐的动作没有之一。5.4 多块禁布区分批复制怎样避免堆叠有时候一块板上有多个禁布区比如天线净空区一块、高压隔离区一块、安装孔周围好几块。分批复制到同一个Route Keepout/All时最容易出两个问题一是装饰选项误勾导致前面的被删二是Repeat场景下各区域边缘重叠DRC判断时产生奇怪的警告。我的做法是所有禁布区提前在机械层画好统一选中做Z-COPY一次全部复制到目标层。这样它们作为一个批次进入同一个Subclass不涉及多次增量复制也不会出现后复制的一条线划过先复制的区域这种手工操作才会有的错误。复制完一定要跑一遍Tools Database Check确认没有形状错误。如果Board Outline本身是异形带挖槽Database Check能把潜在的自相交和重叠问题揪出来别等DRC爆一大片才回头查。最后再分享一个小经验Z-COPY生成的区域虽然几何上完美继承了板框但它不会记忆源对象。也就是说你后续改了板框Shape已经复制出去的Keepin不会自动跟着更新。所以板框确认冻结之前先别急着批量派生这些约束区域等结构定稿了再做一次完整派生这才是最省事的节奏。我自己吃过几次板框改了0.2mm结果Keepin还是旧形状的亏现在都是把派生动作放在板框锁定之后顺序搞对比什么技巧都管用。