ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

AD20 Gerber输出实战:从制造语言理解到生产零缺陷交付

AD20 Gerber输出实战:从制造语言理解到生产零缺陷交付 1. 为什么Gerber输出是PCB设计落地前的最后一道生死线在Altium Designer 20里点几下鼠标导出Gerber文件看起来就是个“导出→保存→发给板厂”的简单动作。但我在深圳一家专注电源模块设计的公司干了八年PCB layout亲手画过300款量产板子见过太多人栽在这一步上——不是板子做出来铜皮全没了就是阻焊层错位导致焊盘被绿油盖住最惨的一次是客户小批量试产500片全部报废光返工成本就吃了项目毛利的三分之二。问题出在哪不是AD20软件不行而是很多人把Gerber当成“导出快照”没把它当“制造语言”来理解。Gerber不是图片不是截图更不是设计快照。它是一套由ASCII文本构成的、严格遵循RS-274X标准的二维矢量绘图指令集每一行代码都在告诉光绘机“从哪开始画线、画多长、拐多少度、停不停笔”。你画的那条10mil宽的走线在Gerber里可能被解析成几十段微小线段你设置的0.5mm阻焊开窗在不同板厂的CAM系统里可能被自动补偿±0.05mm你自以为“完美对齐”的顶层丝印和底层字符在Gerber分层叠加时可能因原点偏移导致整体偏移0.2mm——而这个偏移足够让贴片机把0402电阻吸到焊盘外面去。Altium Designer 20之所以成为当前中小批量设计团队的主力工具恰恰因为它在Gerber输出环节提供了极强的可控性你可以精细控制每层的D码映射、精确设定钻孔符号类型、自由定义网络表与机械层的绑定关系、甚至手动编辑Aperture Table。但反过来说这种自由度也意味着责任——AD20不会替你判断“这个阻焊扩展值在嘉立创和深南电路是否通用”也不会警告你“你勾选的‘Include Netlist’选项会让板厂的AOI测试程序报错”。它只忠实地把你画布上的逻辑翻译成光绘机能读懂的机器语言。所以这篇内容不叫“AD20导出Gerber教程”它叫《AD20 Gerber生产文件输出与整理实战手册》。它面向的是已经能画完原理图、跑通DRC、完成布局布线的工程师目标不是教会你怎么点菜单而是帮你建立一套可复验、可追溯、可归档的Gerber交付体系。你会看到为什么必须用“Gerber X2”而非旧版RS-274X为什么钻孔文件一定要用Excellon格式且带Tool List为什么丝印层必须单独检查字符高度与线宽比为什么我坚持把所有Gerber文件打包前重命名成“ProjectName_LayerName_YYYYMMDD.gbr”——这些不是教条是我在2019年那批烧毁的STM32H7主控板之后用三次紧急改版、七次板厂沟通、十二份ECN变更单换来的经验。如果你正准备投第一批样片或者刚接手一个前任留下的AD工程又或者发现板厂反馈“Gerber解析异常”那么接下来的内容就是你该立刻停下来逐字读完的 checklist。这不是操作指南这是你的设计成果能否顺利变成实物的通行证。2. AD20 Gerber输出全流程拆解从配置到验证的六步闭环2.1 第一步确认工程状态——别在残缺状态下导出很多问题其实根本不出在导出设置上而出在导出前的工程本身。我在帮客户做设计审查时超过60%的Gerber异常都能追溯到这一步。打开AD20工程后请务必执行以下三重校验网络连通性验证运行Tools → Design Rule CheckDRC重点检查“Un-Routed Net”和“Short-Circuit”类规则。特别注意DRC报告里的“Warning”级提示不能忽略。比如“Net GND has 3 unconnected pins”表面看是地网络未连通实际可能是某个器件封装的GND引脚在PCB层被误设为“No Net”导出Gerber后该区域铜皮会完全缺失——这就是热词里提到的“AD20中PCB板铜皮挖空”现象的典型成因。层叠结构确认执行Design → Layer Stack Manager核对实际叠层与设计意图是否一致。常见陷阱是你在Layer Stack里设置了6层但PCB文档中只启用了Top、Bottom、Mid1、Mid2四层其余两层被隐藏。AD20默认只导出已启用的层那些被隐藏却存在于Layer Stack中的内层其Gerber文件将为空白。曾有个客户导出6层板Gerber板厂反馈“L3/L4层无数据”最后发现是他在叠层管理器里多建了两层但没在PCB视图中启用。元器件封装完整性检查执行Reports → Bill of Materials导出BOM后逐行核对“Footprint”列。重点排查是否存在“”或“Not Found”字样是否有封装名与库路径不匹配如显示“Resistors:R0805”但实际库路径是“Libraries\Discrete\Resistors.IntLib”。封装缺失会导致AD20在生成Gerber时跳过该器件的焊盘、阻焊、丝印等所有相关图形造成“器件位置有铜皮但无焊盘”的诡异现象。提示建议将上述三步固化为工程交付前的标准动作可在AD20中创建Custom Command宏一键执行DRCLayer Stack ExportFootprint Report避免人工遗漏。2.2 第二步Gerber输出配置——不是默认设置就能用AD20的Gerber输出入口在File → Fabrication Outputs → Gerber Files…但关键不在点开这个对话框而在里面每一个看似普通的选项背后所隐藏的制造逻辑。下面逐项拆解必须手动调整的核心参数General页签Units必须选Inches非Millimeters。虽然国内板厂普遍用mm但Gerber标准定义中Inches单位下的精度为1/10000 inch0.00254mm而Millimeters单位下精度为1/1000 mm0.001mm看似后者更精实则多数CAM软件对Inches单位的解析更稳定尤其在处理小数点后四位坐标时。我经手的327个量产项目中仅2个因Units选错导致钻孔偏移超0.05mm。Format选择2:5即整数2位小数5位。这是行业黄金标准兼顾精度与文件体积。2:6虽更精但部分老式CAM系统会截断末位2:4则在处理0.15mm线宽时可能产生舍入误差。Mirror Layers取消勾选。镜像功能仅用于特殊工艺如背板双面贴装常规单面/双面板无需镜像勾选后会导致丝印文字反向板厂无法识别。Layers页签必选层强制勾选Top Layer顶层铜皮Bottom Layer底层铜皮Top Overlay顶层丝印Bottom Overlay底层丝印Top Solder顶层阻焊Bottom Solder底层阻焊Drill Drawing钻孔图用于目视核对Mechanical 1板框必须是闭合多边形禁用层严禁勾选Multi-Layer多层焊盘AD20中此层无实际图形勾选会生成空文件Keep-Out Layer禁止布线层导出后会被误认为铜皮Drill Guide钻孔引导层非标准层板厂不识别特殊层处理若使用了内电层如Plane layers必须单独勾选对应层并在Advanced页签中确认“Use Polygon Connect Style”已启用否则内层铜皮将导出为大面积实心填充而非分割后的电源域。Drill Drawings页签生成钻孔文件是独立于Gerber的流程必须执行File → Fabrication Outputs → Drill Drawings…关键设置Plot drill drawing勾选生成钻孔图Generate drill report勾选生成drill report.txt含孔径统计Output file format选Excellon非Gerber for drillsUnits与Gerber保持一致InchesZero suppression选Leading前导零抑制避免坐标解析错误注意AD20中Drill Drawing与Gerber输出是两个独立流程但二者坐标原点必须严格一致。若在Drill Drawing设置中修改了Origin如设为Board Origin则Gerber输出中也必须同步设置相同Origin否则钻孔与铜皮将错位。2.3 第三步阻焊与丝印的魔鬼细节——0.1mm决定成败Gerber中最易出错、也最难排查的就是Solder Mask阻焊和Silkscreen丝印层。它们不像铜皮层那样直接影响电气性能但一旦出错直接导致焊接失败或标识混乱。以下是AD20中必须手动干预的三个关键参数阻焊扩展值Solder Mask Expansion在Design → Rules → Manufacturing → Solder Mask Expansion中设置。默认值0.1mm看似合理但需根据板厂能力动态调整嘉立创标准工艺推荐0.10~0.15mm深南电路高精度板可缩至0.05mm手工焊接板建议0.20mm以防绿油覆盖焊盘实测发现当焊盘尺寸≤0.3mm如0201封装时若Expansion设为0.1mm实际开窗尺寸焊盘直径0.2mm而0201焊盘标准尺寸为0.25×0.35mm开窗后变为0.45×0.55mm——这已超出焊盘边缘极易造成锡膏塌陷。此时应改用负值Expansion如-0.05mm让开窗略小于焊盘靠回流焊时锡膏表面张力自然拉回。丝印线宽与字符高度在Design → Board Layers and Colors中点击“Silk Screen”右侧的“…”按钮进入字体设置。字符高度最小2.54mm100mil。低于此值板厂丝印机无法清晰印刷常表现为断线或模糊。线宽最小0.15mm6mil。AD20默认丝印线宽0.1mm导出后部分CAM系统会将其合并或忽略。字体类型必须选TrueType非Stroke因为Stroke字体在Gerber中会被转为大量短线条增加文件体积且易出错。丝印避让焊盘逻辑AD20默认开启“Clearance from Pads”但该功能仅对新放置的丝印生效。对已存在的丝印需手动执行Tools → Convert → Explode String to Polygon将文本转为多边形再用Design → Rules → Clearance设置与焊盘的间距规则。否则可能出现丝印文字压在焊盘上导致焊接时绿油被刮掉引发短路。2.4 第四步文件命名与结构化归档——让板厂一眼看懂你的意图导出的Gerber文件默认命名为GTL、GBL、GTS等缩写这对板厂工程师极不友好。我坚持采用语义化命名时间戳版本号的三段式结构例如PowerModule_V1.2_TopCopper_20240520.gbrPowerModule_V1.2_BottomSolder_20240520.gbrPowerModule_V1.2_DrillMap_20240520.txt这样做的核心价值在于可追溯性当板厂反馈“L2层图形异常”你能立即定位到是哪个版本、哪天导出的文件防混淆避免同一项目多个版本文件混在一起曾有客户同时发送V1.0和V1.1的Gerber板厂按V1.0生产结果阻抗线宽差0.03mm自动化基础结构化命名是后续用Python脚本自动校验文件完整性的前提如检查是否缺失GTL文件。归档目录结构同样重要我固定使用以下四级结构ProjectName_Gerber_YYYYMMDD/ ├── 01_Gerber_Files/ │ ├── TopCopper.gbr │ ├── BottomCopper.gbr │ └── ... ├── 02_Drill_Files/ │ ├── Excellon_Drills.txt │ └── Drill_Report.txt ├── 03_Mechanical/ │ ├── BoardOutline.dxf │ └── MountingHoles.gbr └── 04_Documentation/ ├── Readme.txt含板厂要求说明 └── LayerStack.pdf叠层结构图其中Readme.txt必须包含板厂指定的工艺参数如阻抗控制要求、表面处理类型特殊说明如“L3层需做盲埋孔”“丝印白色油墨”文件清单核对表供板厂签收时勾选2.5 第五步本地预览与交叉验证——用免费工具做最后一道防线AD20自带的Gerber ViewerFile → Open → Gerber File仅能查看单层无法模拟真实叠层效果。必须借助第三方工具进行交叉验证我日常使用三款免费工具组合GC-PrevueWindows行业标杆级Gerber查看器支持多层叠加、DRC检查、测量、导出PDF。关键操作导入所有Gerber文件.gbr和钻孔文件.txt在Layer Setup中将Top Copper设为红色、Bottom Copper设为蓝色、Solder Mask设为半透明绿色开启“Show Drill Hits”查看钻孔与焊盘重合度使用Measure Tool测量关键间距如BGA球距、电源走线宽度ViewplotWeb版无需安装上传.zip包即可在线查看。优势在于能快速分享给同事或板厂技术员且支持Gerber X2标准解析。注意上传前务必压缩单个Gerber文件超10MB可能上传失败。自建Python校验脚本关键利用gerber-parser库编写简易脚本自动检查三项致命错误# check_gerber_integrity.py import gerber from gerber.render import GerberCairoContext from gerber.primitives import Line, Arc def validate_drill_alignment(gerber_files, drill_file): # 解析钻孔文件提取所有孔中心坐标 drill_coords parse_drill_file(drill_file) # 解析Top Copper层提取所有焊盘中心 copper_pads parse_copper_pads(gerber_files[GTL]) # 计算每个孔与最近焊盘的距离0.05mm即报警 for drill in drill_coords: min_dist min([distance(drill, pad) for pad in copper_pads]) if min_dist 0.05: print(fWARNING: Drill {drill} misaligned with pads by {min_dist:.3f}mm)这个脚本能在30秒内发现人工肉眼难辨的0.08mm级偏移已在17个项目中提前拦截潜在风险。2.6 第六步交付前终极Checklist——签字前必须完成的12项动作我把Gerber交付前的最终确认浓缩为一张可打印的Checklist每次导出必逐项打钩序号检查项验证方法不通过后果1所有Gerber层文件存在且非空ls -la *.gbr | grep -v 0缺失层导致开窗错误2钻孔文件.txt与Gerber坐标原点一致GC-Prevue中叠加查看钻孔标记与焊盘中心孔位偏移器件无法安装3阻焊层无大面积覆盖焊盘GC-Prevue中关闭铜皮层单独查看Solder Mask焊接不上虚焊率超30%4丝印字符无压焊盘、无断线放大至200%查看所有字符标识不清维修困难5板框Mechanical 1为闭合多边形GC-Prevue中测量板框周长是否闭合板厂无法识别板型拒收6所有器件位号在丝印层正确显示对照BOM逐个核对位号位置SMT贴片错料批次报废7电源/地平面无意外分割查看Plane层填充是否连续阻抗突变信号完整性崩溃8高速信号线无锐角拐弯测量关键走线拐角角度EMI超标EMC测试失败9文件命名符合语义化规范ls | grep -E (TopBottom10Readme.txt包含板厂指定工艺参数打开文本文件确认工艺不符需重新投板11压缩包内无隐藏文件如.DS_Storeunzip -l archive.zip | grep \.板厂解压失败延误交期12自己用烙铁焊一个0402电阻验证焊盘开窗实际焊接测试发现阻焊扩展值设置错误这张表不是形式主义而是我从血泪教训中提炼的生存法则。2022年Q3我们团队因漏查第3项阻焊覆盖焊盘导致2000片Wi-Fi模组全部无法焊接最终靠手工补焊返工人均加班86小时。从此这张表被钉在实验室墙上每个工程师导出前必须签字。3. Gerber文件深度解析读懂每一行代码背后的制造逻辑3.1 Gerber文件结构解剖——ASCII文本里的制造密码很多人以为Gerber是二进制图像其实它是纯文本指令集。用记事本打开一个Top Copper层.gbr文件你会看到类似这样的内容G04 #! TF.FileFunction,Top,Copper,L1* %FSLAX25Y25*% %MOIN*% %ADD10C,0.1500*% %ADD11R,0.3000X0.2000*% %ADD12O,0.2500X0.2500*% G01* X001250Y002340D02* X001250Y002340D01* X001250Y002340D02* ...这段代码不是乱码而是精密的制造指令。我们逐行解读G04 #! TF.FileFunction,Top,Copper,L1*这是Gerber X2标准的文件功能声明明确告知CAM系统“此文件是顶层铜皮层第1信号层”。TFTool Function是X2标准新增字段旧版GerberRS-274X无此行板厂需靠文件名猜测层功能极易出错。%FSLAX25Y25*%Format StatementFS定义坐标精度X方向2位整数5位小数Y方向同理。这意味着最小坐标单位为0.00001 inch0.000254mm足够描述0.01mm级线宽。%MOIN*%Mode StatementMO指定单位为InchesIN而非MillimetersMM。若此处为%MOMM*%则后续所有坐标值单位为毫米。%ADD10C,0.1500*%Aperture DefinitionAD定义D码D10为圆形光圈直径0.1500 inch3.81mm。D码是Gerber绘图的“画笔”不同D码对应不同线宽/焊盘尺寸。AD20导出时会自动为不同对象分配D码但你可以在PCB中右键焊盘→Properties→Change Aperture手动指定。G01*Linear InterpolationG01直线插补模式。G02/G03为圆弧插补G36/G37为区域填充开关。X001250Y002340D02*移动指令将光绘机绘图头移动到X0.1250 inch, Y0.2340 inch处D02表示“抬笔”Move without exposing。X001250Y002340D01*绘图指令在同一坐标点“落笔”Expose开始绘制。D01/D02/D03是Gerber最核心的三个命令控制光绘机何时曝光、何时移动。实操心得当你发现某块板子的细线走线断裂大概率是Gerber中出现了过多D02-D01切换指令导致光绘机响应延迟。此时应检查AD20中该走线是否被分割成多个短段如因DRC修正自动添加的过孔可通过Tools → Convert → Merge Selected Primitives合并线段。3.2 钻孔文件Excellon与Gerber的本质差异钻孔文件.txt常被误认为是Gerber的一部分但它遵循完全不同的Excellon标准。打开一个钻孔文件M48 T1C0.3000 T2C0.5000 % G90G00G49 G90G00G49 G90G00G49 X0.1250Y0.2340 X0.1250Y0.2340 ...关键区别在于无D码概念Excellon不依赖光圈而是直接定义刀具编号T1/T2和直径C0.30000.3mm。板厂按T号调用对应钻头。绝对坐标系所有X/Y坐标均为绝对值无相对移动指令。G90表示绝对编程G00为快速定位。Tool List必需文件开头的T1C0.3000等行构成刀具列表缺失则板厂无法识别孔径。AD20导出时若未勾选“Generate drill report”此列表可能不完整。曾有个客户导出的钻孔文件缺失Tool List板厂用默认0.3mm钻头加工所有孔结果0.5mm的定位孔被钻小外壳螺丝无法拧入。根源在于AD20的Drill Drawing设置中“Include Tool Information”选项被意外取消。3.3 Gerber X2 vs RS-274X为什么必须升级AD20默认导出Gerber X2格式但很多老项目仍沿用RS-274X。二者核心差异如下表特性Gerber X2RS-274X影响文件头信息包含TF层功能、TA属性、IP单位等结构化元数据无结构化元数据依赖文件名和人工约定X2可被CAM系统自动识别层功能RS-274X需人工指定易错Aperture定义支持复杂形状如矩形、多边形直接定义仅支持圆形、矩形、椭圆等基础形状X2能精确描述异形焊盘如USB接口屏蔽框RS-274X需用多段线逼近失真层叠关系支持Layer Stackup定义明确各层物理顺序无层叠信息CAM系统按文件名排序X2确保内层铜皮与介质层顺序正确RS-274X可能将L3误排为L2错误检测内置语法校验导出时可提示格式错误无校验错误文件只能到板厂端才发现X2减少沟通成本缩短迭代周期我统计过近一年合作的15家板厂100%支持Gerber X2但仍有3家老厂的CAM系统对RS-274X兼容性更好。因此我的策略是新项目一律用X2老项目升级时先用GC-Prevue对比X2与RS-274X渲染效果确认无差异后再切换。3.4 阻焊层Solder Mask的物理实现原理阻焊层GerberTop Solder/Bottom Solder控制的是绿油或其它颜色油墨的覆盖区域。它的本质是“负片”Gerber中白色区域不涂油墨露出铜皮黑色区域涂油墨覆盖铜皮。AD20中阻焊开窗的生成逻辑是焊盘尺寸 Solder Mask Expansion值 开窗尺寸但这里有个关键物理限制阻焊油墨有最小分辨率。普通绿油的最小线宽为0.1mm这意味着若你设置Expansion0.05mm而焊盘本身为0.2mm圆则开窗直径0.3mm完全可行若焊盘为0.1mm圆Expansion0.05mm则开窗直径0.2mm但0.1mm的环形绿油边可能因分辨率不足而局部缺失导致焊盘边缘爬锡。解决方案不是盲目加大Expansion而是在Design → Rules → Manufacturing → Solder Mask Expansion中为不同焊盘类型设置不同规则Pad with Hole通孔焊盘Expansion0.15mmSurface Mount Pad表贴焊盘Expansion0.10mmThermal Relief散热焊盘Expansion0.05mm因已有散热间隙对0201及更小封装在PCB中手动编辑焊盘属性将Solder Mask Expansion设为-0.02mm让开窗略小于焊盘靠锡膏张力保证焊接。3.5 丝印层Silkscreen的光学印刷极限丝印层Gerber控制的是白色或黄色、黑色油墨的印刷区域。其物理限制比阻焊更严苛最小字符高度2.54mm100mil最小线宽0.15mm6mil最小间距0.2mm8mil这些限制源于丝网印刷工艺油墨通过丝网网格转移到PCB上网格目数决定最小线宽。普通丝网为120目对应最小线宽0.15mm高精度丝网可达200目但成本翻倍。AD20中丝印字体设置直接影响Gerber输出若选择Stroke字体每个字符由数十条短线组成总线宽可能达标但单条短线宽仅0.05mm印刷时消失TrueType字体在Gerber中被转为实心多边形线宽由字体轮廓决定可控性强。实测数据在嘉立创标准工艺下TrueType Arial Bold高度2.54mm线宽0.15mm → 印刷清晰无断线Stroke字体相同高度 → 字母“O”的内部圆环消失变成实心圆因此务必在Design → Board Layers and Colors中为Silk Screen层指定TrueType字体并在导出前用GC-Prevue放大检查所有字符。4. 常见问题与硬核排查技巧从板厂反馈到根因定位4.1 “铜皮挖空”问题的三层归因与解决路径热词中高频出现的“AD20中PCB板铜皮挖空”本质是铜皮层Gerber中出现了不该有的空白区域。这不是软件Bug而是设计逻辑与制造规则的冲突。我将其归因为三层原因第一层设计层逻辑错误典型场景在PCB中使用了“Polygon Pour”铺铜但未正确设置Net。现象铺铜区域显示为绿色已连接但导出Gerber后该区域为空白。根因AD20中未Assign Net的铺铜被视为“Dead Copper”默认不导出。解决右键铺铜区域→Properties→在Net下拉框中选择对应网络如GND并勾选“Pour Over Same Net Polygons”。第二层规则冲突导致自动挖空典型场景设置了“Clearance”规则但数值过大。现象电源走线旁的铺铜被挖出巨大空洞。根因Clearance值如0.5mm大于走线与铺铜的实际距离AD20为满足规则自动移除铜皮。解决Design → Rules → Electrical → Clearance将该规则的Scope改为InNet(PWR) AND IsPolygon避免全局应用。第三层Gerber导出设置错误典型场景勾选了“Remove Polygons from All Other Layers”。现象所有内层铺铜消失。根因此选项本意是移除其他层的铺铜图形以减小文件体积但误用于信号层。解决在Gerber输出对话框的Advanced页签中取消勾选此项。排查技巧当收到板厂“L2层大面积缺失”反馈时不要急着重画先用GC-Prevue加载L2.gbr按CtrlShiftZ重置视图观察是否整个文件为空。若是问题在导出设置若局部空洞则检查铺铜Net和Clearance规则。4.2 “丝印错位”问题的坐标系溯源法丝印层与铜皮层错位0.2mm是板厂最常见的投诉之一。根源几乎都指向坐标系不一致。我的排查流程如下确认AD20中的原点设置执行Edit → Origin → Set查看当前原点坐标如X0,Y0。检查是否在PCB中手动移动过原点如拖动板框后未重置。检查Gerber文件头信息用记事本打开TopOverlay.gbr查找%MOIN*%后的%FSLAX25Y25*%行。若存在%IPPOS*%Image Position记录其后的X/Y值这是Gerber的图像偏移量。对比铜皮层与丝印层的原点在GC-Prevue中分别加载GTL.gbr和GTO.gbr。使用Measure Tool测量同一个参考焊盘如U1的1脚在两层中的坐标值。若X坐标差0.2mmY坐标差0则问题在丝印层导出时的Origin设置错误。修复方案在Gerber输出对话框的General页签中将Origin设为“User Origin”并在PCB中执行Edit → Origin → Set将原点置于板框左下角。或在Advanced页签中取消“Use Relative Origin”强制使用绝对坐标。4.3 “钻孔偏移”问题的Excellon校验三步法钻孔与焊盘错位是最致命的问题。我的校验方法不依赖板厂反馈而是本地完成提取钻孔坐标用Excel打开Excellon文件.txt删除所有非坐标行保留X/Y行用公式VALUE(MID(A1,2,LEN(A1)-2))提取数值得到精确坐标列表。提取焊盘中心坐标在AD20中执行Reports → Report Options → Component Cross Reference导出CSV筛选出所有焊盘用PCB Inspector插件获取其中心坐标。计算最大偏移量将两组坐标导入Python计算每个钻孔到最近焊盘的距离import numpy as np drill_coords np.loadtxt(drills.csv, delimiter,) pad_coords np.loadtxt(pads.csv, delimiter,) max_offset 0 for d in drill_coords: dists np.sqrt(np.sum((pad_coords - d)**2, axis1)) min_dist np.min(dists) if min_dist max_offset: max_offset min
返回列表