PCB/FPC 智能拼版:四层级计算链路与多边形放置引擎的设计与实现
PCB/FPC 智能拼版四层级计算链路与多边形放置引擎的设计与实现一、问题背景在 PCB印制电路板和 FPC柔性线路板制造行业板材原材料成本在总生产成本中占比极高。拼版排版这道工序决定了多少面积的产品能从一张基材大板上切出——利用率每提升 1%都是真金白银的利润。但拼版排版的现状是绝大多数工厂仍依赖工程人员凭经验手动排布。问题在于组合空间巨大一块大板排多少行、多少列单板 0° 还是 90° 放置不同工序的工艺边怎么留——排列组合多到人脑无法穷举。异形板难度陡增矩形板是基础题L 形、T 形、十字形的 FPC 软板才是真正的考验。人工做异形相嵌排版出错率极高。四层级嵌套PCB 拼版不是一维问题——从单片Pcs到出货片Set到生产小板WPnl再到基材大板Sheet每一层都对上一层的结果有依赖。本文记录 PCB 最佳化拼版系统的核心算法设计包括四层级计算链路、基于 JTS 的多边形放置引擎、12 种 AB 板策略以及效果验证数据。二、四层级计算链路Pcs → Set → WPnl → SheetPCB 拼版的独特性在于它不是把单板排进大板这么简单而是四层嵌套结构┌──────┐ ┌──────┐ ┌────────┐ ┌────────┐ │ Pcs │───▶│ Set │───▶│ WPnl │───▶│ Sheet │ │ 单片 │ │ 出货片│ │ 生产小板│ │ 基材大板│ └──────┘ └──────┘ └────────┘ └────────┘2.1 Pcs → Set单片组成出货片客户真正需要的是出货片Set一个 Set 上通常拼了多个 Pcs。加上四边的折断边Breakaway Edge才是一个完整的出货单元。// FourLevelCalculator.buildPcsLevel()Set宽度cols ×Pcs宽度(cols-1)× 间距左折断边右折断边Set高度rows ×Pcs长度(rows-1)× 间距上折断边下折断边四个方向的折断边各自独立配置最小宽度 / 最大宽度系统会自动尝试 4 种折断边交换配置选择面积最小的方案// autoReverseBreakaway: 尝试 4 种折断边交换// 例上折断边与下折断边交换、左与右交换找出 Set 面积最小组合同时支持 Set 尺寸约束minWidth/maxWidth, minLength/maxLength防止生成的 Set 超出设备处理范围。2.2 Set → WPnl出货片排入生产小板这一步的搜索空间最大。系统采用 20×20 网格枚举策略// FourLevelCalculator.calcSetToWpnl()for(introwsminRows;rowsmaxRows;rows){for(intcolsminCols;colsmaxCols;cols){// 计算 WPnl 候选尺寸// 每个候选评估 3 种放置策略evaluateStandard(rows,cols);// 标准矩形网格evaluateStaggered(rows,cols);// 花式拼奇偶行偏移evaluateHvMaterial(rows,cols);// 横直料横竖交替}}// 评选标准总 Set 数多者优先相同时利用率高者优先三种放置策略的核心差异策略排列方式适用场景标准矩形行列对齐网格常规矩形板花式拼Staggered奇数行右移 50% 单元宽度FPC 窄条、柔性板横直料HV Material横竖交替放置板材纹向有要求花式拼的列数计算偶数行: cols floor((有效宽度 gap) / (cellW gap)) 奇数行: cols floor((有效宽度 - cellW × 0.5 gap) / (cellW gap))工整的偏移让奇数行凸起嵌入偶数行间隙中减少上下方向的板材浪费。2.3 WPnl → Sheet生产小板排入基材大板最后一层是开料把 WPnl 排列到基材大板上。这层引入了**中裁Center Cut**的概念——对于超长板可以按行/列切分成子区域// 四种中裁模式enumCutMode{NONE,// 标准矩形网格HORIZONTAL,// 水平分区 底部剩余补充VERTICAL,// 垂直分区 右侧剩余补充MIXED// 横竖同时分区形成格子布局}// MIXED 模式计算水平分区数floor((Sheet长中裁宽)/(行数 ×WPnl长(行数-1)× 间距中裁宽))垂直分区数floor((Sheet宽中裁宽)/(列数 ×WPnl宽(列数-1)× 间距中裁宽))总WPnl数水平分区 × 垂直分区 × 行数 × 列数工艺边处理支持 NONE / SINGLE / OPPOSITE / ALL 四种模式由ProcessEdgeUtils统一处理。三、多边形放置引擎异形板的解法矩形板排布是基础题真正拉开差距的是异形板。PCB/FPC 行业大量存在 L 形连接板、T 形驱动板、十字形、弧形等非矩形外形。3.1 为什么不用外接矩形传统做法是把异形板的外接矩形Bounding Box当作占位区域来排。问题很明显——一个 L 形板外接矩形面积可能是真实面积的 1.6 倍L 形板真实面积: 约 6 平方单位 外接矩形面积: 约 10 平方单位 如果用 bbox 排 → 利用率虚高实际浪费 40% 空间解决方案使用 JTS Topology Suite 对真实多边形轮廓进行碰撞检测而非外接矩形。3.2 核心类架构┌─────────────────────────────────────────────────┐ │ MultiUnitPanelOptimizer │ │ 遍历 boardIds × (m,n) 切割组合 │ │ 对每个工作板同时运行条带分配 多边形引擎取最优 │ │ 利用率 Σ(真实多边形面积) / 工作板面积 │ └────────────────────┬────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ StrategySelector.selectAndPlace() │ │ 根据 ShapeClassifier 形状分类自动选择策略 │ │ 并行运行所有适用策略取利用率最优 │ │ │ │ ┌──────────┐ ┌──────────────┐ ┌──────────┐ │ │ │BottomLeft│ │InterleavedRow│ │Staggered │ │ │ │Strategy │ │Strategy │ │Strategy │ │ │ │(贪心底左) │ │(混排行) │ │(错缝排布) │ │ │ └──────────┘ └──────────────┘ └──────────┘ │ │ │ │ 如有 L/T 形单元 → 先运行 MirrorPairStrategy │ │ 拼合形成 CompositeUnit 后再参与排版 │ └────────────────────┬────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ FragmentFiller.fillFragments() │ │ 主排版后 → 计算剩余空间 → 凸分解 → 填充小尺寸单元 │ └─────────────────────────────────────────────────┘3.3 BottomLeftStrategy 核心算法这是最核心的放置策略采用贪心底左放置输入单元请求列表含多边形轮廓、数量、放置板、间距 1. 展开候选变体 每单元 × 4 旋转0°/90°/180°/270°× 2 镜像 → 去重对称项 2. 按面积降序排列大件优先 3. 轮询贪心放置多类型时轮流放置保证每种单元都有代表 a. 候选位置 有效区域原点 每个已放置单元 bbox 的 4 个角 间距偏移 b. 按 y 升序、x 升序排列底左优先 c. 对每个候选位置 - 板材边界检查原始多边形必须在板材内 - JTS 间距检查新多边形与每个已放置多边形的 distance ≥ spacing d. 第一个满足条件的位置即为放置位置 4. 碎片填充主排版后调用 FragmentFiller 填充边角余料// 间距检查的核心JTS distance 方法// 精度 0.001mm满足 PCB 制程要求booleanhasCollisionplacedOutlines.stream().anyMatch(placed-placed.distance(newOutline)spacing);3.4 MirrorPairStrategy镜像拼合L 形和 T 形器件单独排利用率极低~60%。但如果把它们两两镜像配对呢原始 L 形利用率 ~60%大量空隙 ┌─────┐ ┌─────┐┌─────┐ │ │ │ ││ │ │ L1 │ 镜像 → L1 ││ L1 │ ≈ 近矩形 │ │ │ ││ │ └──┘ │ └──┘ │└──┘ │ │ │ │ │ │ │ └──┘ └──┘ └──┘ 拼合后利用率~95%接近矩形算法实现// MirrorPairStrategy 核心逻辑for(Unitunit:lShapeUnits){for(Rotationrot:Rotation.values()){for(Edgeedge:Edge.values()){// 左/右/上/下Polygonmirroredunit.getOutline().mirror(edge).rotate(rot);Polygonunionunit.getOutline().union(mirrored);doublefillRateunion.getArea()/union.getBbox().getArea();if(fillRate0.7){// 拼合后填充率 ≥ 70%// 接受形成 CompositeUnit近矩形复合单元}}}}3.5 形状自动分类ShapeClassifier根据顶点数和凹角数自动分类形状判定规则顶点数策略RECTANGLE4 顶点 或 填充率 0.954标准矩形网格L_SHAPE6 顶点 1 凹角6MirrorPair BottomLeftT_SHAPE8-10 顶点 2 凹角8-10MirrorPair BottomLeftIRREGULAR其他十字形、弧形等不定Interleaved / Staggered3.6 碎片填充主排版完成后还有边角余料可以塞小尺寸单元。FragmentFiller的工作流程1. 计算剩余空间 板材 ⊖ 已放置单元 2. 使用 PolygonDecomposer 将剩余空间做凸分解 Delaunay 三角剖分 贪心合并为凸多边形 3. 网格扫描各凸碎片空间 4. 小单元 × 多旋转尝试 → 优先填入最小碎片四、AB 板拼版12 种策略当两种单板需要混拼在同一张 WPnl 上时系统提供 12 种策略按分割比例[0.25, 0.33, 0.5, 0.67, 0.75]遍历标准 AB 策略8 种序号策略说明1左右分左侧 A 区 右侧 B 区按比例分割2上下分上方 A 区 下方 B 区3交错行A/B 行交替排列4填空隙A 填满标准网格后B 填入剩余空隙5单行交替每行内 ABAB 水平交替6双行交替AABB 行块交替7单列交替每列内 ABAB 垂直交替8自定义间隔N 行 A M 行 B 循环花式 AB 混拼4 种序号策略说明9花式左右分左右分区 奇偶行偏移10花式上下分上下分区 奇偶行偏移11花式交错行交错行 奇偶行偏移12花式双行交替双行交替 奇偶行偏移每种策略下A 板和 B 板各自尝试 0°/90° 旋转4 种组合最终选总单元数最多的配置。五、智能板材推荐另一个实用功能是——不用人工去猜用什么规格的基材大板最划算。系统提供自动推荐// POST /api/v1/schemes/multi-panel/recommend-boards// 算法1.在虚拟无限大板5000×5000mm上紧凑排版得到 footprint2.对每块候选板材枚举(m×n)切割组合评分 scoreutilization ×0.7-normalizedCost ×0.33.生成推荐定制开料尺寸footprint边距向上取整到10mm返回结果包括各候选板材的利用率、推荐切割行列数、评分以及根据排版轮廓推算的定制开料建议尺寸。六、多格式文件解析系统支持三种行业标准格式的自动解析格式版本提取内容DXFR12 ~ 2018工件轮廓、外形坐标、有效加工区域GerberRS-274X / X2 / X3外形边框、工艺边、有效区域、属性信息ODB—Profile 轮廓、工艺层级、生产参数Gerber 解析时区分四种外形识别策略X2/X3 属性标记FileFunction,Profile文件名规则outline.gbr/.gko/.gm1线宽启发式 0.5mm 封闭轮廓优先用户手动指定图层解析时的异常检测非封闭轮廓首尾端点距离 0.01mm → 警告自交多边形 → 拒绝板尺寸 2mm → 警告多余碎线 0.1mm → 自动过滤七、技术架构总览┌──────────────────────────────────────────────┐ │ 前端 (Vue 3 Canvas 2D) │ │ Naive UI · Canvas 渲染 · 拖拽编辑 · 5px吸附 │ ├──────────────────────────────────────────────┤ │ 解析引擎 │ │ DXF/Gerber/ODB 文件解析服务 │ ├──────────────────────────────────────────────┤ │ 算法核心 (Spring Boot 3) │ │ 四层级计算 · 多边形引擎 · 多策略并行 · 板材推荐 │ ├──────────────────────────────────────────────┤ │ 数据层 │ │ PostgreSQL PostGIS (几何数据) │ │ Redis (缓存) · MinIO/OSS (文件存储) │ └──────────────────────────────────────────────┘核心技术栈Vue 3 Spring Boot 3 JTS Topology Suite PostgreSQL/PostGIS Redis Docker Kubernetes。Canvas 2D 可视化支持拖拽编辑、5px 边缘吸附、批量对齐操作。导出方面支持 PDF 方案报告OpenPDF和 DXF 生产图纸LWPOLYLINE 实体可直接对接制造设备。八、效果验证指标数值板材利用率提升10% ~ 20%相比人工参数系统101 可配置字段混合拼版最多支持 4 种单板文件格式DXF R12~2018 / Gerber RS-274X/X2/X3 / ODB碰撞检测精度0.001mmJTS对于一个中型 PCB 工厂来说月消耗基材金额通常在百万级别。利用率提升 10%意味着每月直接节省六位数的原材料成本。九、总结PCB 拼版系统的算法设计面临三个核心挑战层级嵌套Pcs → Set → WPnl → Sheet 四层级不是简单累加每一层的最优解不一定构成全局最优异形处理不用外接矩形、用真实多边形放置是利用率从差不多到逼近最优的关键策略多样性矩形阵列、花式拼、横直料、AB 板 12 策略、镜像拼合——没有万能算法但组合在一起能覆盖绝大多数场景核心代码围绕FourLevelCalculator四层级计算、BottomLeftStrategy多边形底左放置、MirrorPairStrategy镜像拼合、AbPanelOptimizerAB 板优化、FragmentFiller碎片填充五个模块职责清晰、可独立测试。产品详情https://qiancaosoft.com/products/pcb-optimization

相关新闻

PCB 拼版还在靠老法师?这套系统用算法帮你多省 20% 板材

PCB 拼版还在靠老法师?这套系统用算法帮你多省 20% 板材

PCB 拼版还在靠老法师?这套系统用算法帮你多省 20% 板材 摘要:PCB/FPC 制造行业,板材成本占比极高。传统人工拼版依赖工程师经验,利用率瓶颈难以突破,异形板混拼更是难题。本文介绍一套专为线路板行业打造的智能拼版系…

2026/7/23 22:15:17 阅读更多 →
怎么判断滚筒线是不是源头厂家?跑厂十余年,教你避开中间商套路

怎么判断滚筒线是不是源头厂家?跑厂十余年,教你避开中间商套路

做自动化设备这行十多年,跟着不少工厂老板外出考察滚筒线厂家。跟大家说句行业实在话,市面上鱼龙混杂,至少一半对外宣称源头工厂的商家,本质就是中间商。好多客户都踩过这个坑,签完合同之后才发现,设备层层…

2026/7/23 22:15:17 阅读更多 →
【PTrade】PTrade如何过滤ST、停牌和退市股票?完整教程

【PTrade】PTrade如何过滤ST、停牌和退市股票?完整教程

本方案由 EasyQuant AI量化助手 提供。如有更多问题,直接用 EasyQuant AI量化助手 帮您快速解决量化交易编程难题。 问题背景 量化选股后不能直接下单。ST 股票、停牌股票或退市整理标的可能导致无法正常交易,因此策略需要在交易前完成状态过滤。 PTr…

2026/7/23 22:14:16 阅读更多 →

最新新闻

从传统架构到超融合:深圳联众合18年实战经验,助企业构建稳定、安全、高效的IT基础设施

从传统架构到超融合:深圳联众合18年实战经验,助企业构建稳定、安全、高效的IT基础设施

很多企业的 IT 负责人都有过这样的经历:半夜接到报警电话,核心 ERP 系统因为单点故障宕机,生产线被迫停摆;或者是办公电脑老化严重,维护一台就要花半天时间,员工抱怨连连。更让人头疼的是,随着数…

2026/7/23 22:21:21 阅读更多 →
强化学习核心要素与工程实践指南

强化学习核心要素与工程实践指南

1. 强化学习基础概念解析强化学习(Reinforcement Learning)作为机器学习三大分支之一,与监督学习、无监督学习有着本质区别。我第一次接触RL是在开发机械臂控制项目时,传统控制方法遇到瓶颈后转向了这种"试错学习"的方式…

2026/7/23 22:21:21 阅读更多 →
开题反复被导师驳回?一站式论文辅助平台 Okbiye 功能实测

开题反复被导师驳回?一站式论文辅助平台 Okbiye 功能实测

引言 为什么很多人的开题报告初稿提交后,会被导师直接打回重写? 除去选题方向本身的问题,大部分返修集中在框架缺失、国内外研究现状逻辑单薄、研究重难点模糊、格式排版混乱这几类问题上。 从零搭建完整开题框架,搜集文献梳理研…

2026/7/23 22:21:21 阅读更多 →
深度学习 + 生物信息交叉发文 专属 AI 入门学习路线

深度学习 + 生物信息交叉发文 专属 AI 入门学习路线

这条路线完全以「看懂论文、落地 idea、成功发文」为目标导向,摒弃通用 AI 学习的冗余理论,精准匹配生信交叉的领域特点,全程重实操、轻推导,优先解决 “数据读不懂、代码跑不通、论文看不懂、创新找不到” 四大核心痛点。零基础按…

2026/7/23 22:20:20 阅读更多 →
Java集成飞书视频会议:根据员工工号拉会完整指南

Java集成飞书视频会议:根据员工工号拉会完整指南

1. 背景与需求在企业办公场景中,经常需要根据员工的工号自动创建或拉起飞书视频会议。本文介绍如何通过 Java 集成飞书开放平台的视频会议 API,实现根据工号批量邀请参会人、创建并启动视频会议的功能。2. 前置准备2.1 飞书应用配置在飞书开放平台&#…

2026/7/23 22:20:20 阅读更多 →
Windows/macOS 通用 OpenClaw 2.7.9,本地存储 AI 智能体实操步骤

Windows/macOS 通用 OpenClaw 2.7.9,本地存储 AI 智能体实操步骤

🔥前言:Win11 环境运行 OpenClaw 必读说明 OpenClaw(因其图标酷似小龙虾,在社区中常被昵称为"小龙虾")是一款备受关注的本地优先 AI 智能体项目。它基于开源协议开发,能够通过自然语言指令驱动计…

2026/7/23 22:19:20 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻