【排样】亲士套料工具箱

本文涉及知识点

数学 几何

前言

运行环境:AutoCad2013及更高版本,暂不支持中文Cad和BricsCad。

帮助视频:https://edu.csdn.net/course/detail/41448 如果在审核中,请点击:https://www.bilibili.com/video/BV1X4Hm61EWz/

下载地址:https://download.csdn.net/download/he_zhidan/93660109

排样套料工具箱。初版支持AutoCad2013+,基于libnest2d0.4,clipper, nplot,boost。不支持凹多边形,凹多边形被填充凸多边形。不支持孔洞。只支持多义线,非闭合多义性将自动闭合,多义线的弧将用线段模拟。并根据箱子的框高,绘制新箱子,将选择的多义线,移动到箱子中,保留多义性的颜色等属性。

排样是NP-Hard问题,无法在有限时间找到最优解,许多时候明显的最优解都没找到。

排样套料工具箱

一、产品定位

排样套料工具箱是一款面向 AutoCAD 绘图员的自动化排样插件,帮助您把多个零件快速、紧凑地摆放到一张板材上,减少余料浪费,提升材料利用率。初版支持 AutoCAD 2013 及以上版本。

二、核心能力

能力 说明
一键排样 选择多个多义线,自动计算最优摆放位置
自动建箱 根据设定的箱宽箱高,自动绘制新的板材框
搬移零件 把选中的多义线自动移动到箱子中
保留属性 零件的颜色、图层等属性完整保留
多策略可选 提供 DJD 启发式、首次适应两种排样策略
技术内核 基于 libnest2d 0.4、Clipper、nplot、Boost 等成熟开源库构建,算法稳定可靠。

三、使用流程(三步完成)

复制代码
选零件 ------ 在图纸上框选要排样的多义线
设参数 ------ 填写板材尺寸、间距、旋转角度等
点排样 ------ 插件自动计算并生成排样图

整个过程无需手动摆放,几秒钟即可完成过去几十分钟的工作。

四、当前版本的能力边界

为了让您对工具的适用范围有清晰预期,以下限制请务必了解:

✅ 支持的图形

类型 说明
多义线(Polyline) 唯一支持的输入类型
闭合多义线 直接处理
非闭合多义线 自动闭合后再处理
带弧的多义线 弧段用线段模拟(精度可调)

⚠️ 不支持或受限的情况

情况 处理方式
凹多边形 自动填充为凸多边形后再排样
带孔洞的零件 不支持,孔洞会被忽略
圆、椭圆、样条曲线等 不支持,请先转换为多义线
复制代码
说明:凹多边形填充为凸多边形后,排样结果会比实际零件"胖"一些,可能导致板材利用率略低于理论值。如果您的零件有明显的凹形特征,请在排样后人工微调。

五、关于"排样是不是一定能找到最优解"

排样属于 NP-Hard 问题------这是数学上已被证明的结论。

通俗地说:零件数量一多,可能的摆放组合就呈爆炸式增长,任何算法都无法在有限时间内穷举所有方案。 因此:

本工具不保证找到最优解;

许多时候,连肉眼可见的最优解也未必能找到;

但相比人工摆放,工具能在几秒内给出一个明显更好的方案,这已经能带来可观的效率提升。

我们的建议:把工具当作"高效的初稿生成器",排样结果可在此基础上人工微调,兼顾效率与质量。

六、典型收益

对比项 人工摆放 使用本工具
单张板材排样耗时 20~60 分钟 几秒 ~ 几十秒
材料利用率 依赖经验,波动大 稳定提升 5%~15%
一致性 因人而异 标准化输出
可重复性 难复现 参数保存,一键复现

七、适用场景

钣金下料:激光切割、等离子切割、火焰切割

木工开料:板材裁切、家具部件排布

石材/玻璃:异形件排版

广告标识:亚克力、PVC 板排样

操作步骤

一,点击选项卡(或菜单)上的套料按钮。

二,选中需要套料的多义线,非闭合多义线会当成闭合多以线。带圆弧的多义线或通过直线段拟合。弦高 ≤ max ⁡ ( 0.1 , 物品间隙 / 20 ) \le \max(0.1,物品间隙/20) ≤max(0.1,物品间隙/20)。

三,自动生成红色箱体,并将能装箱的物品旋转移动到对应箱体。

原图

紫色:有圆弧的多义线。

绿色:较长的多义线。

青色:凹多边形。

黄色:非简单多边形。

排样后:

基础配置

参数名 含义 对绘图的影响 建议值
DecimalPlaces 保留小数位数 排样结果中坐标值保留几位小数 位数越多越精确,但图纸尺寸标注会显得冗长;位数太少可能造成零件间出现微小重叠 3(毫米精度到千分之一,够用)
MinSpacing 最小间距 两个零件之间必须留出的最小空隙 设太小 → 零件挨太紧,切割时可能碰伤;设太大 → 浪费材料
SelectorType 选择器类型 排样时决定"下一个放哪个零件"的策略 影响排样速度与材料利用率,通常用默认即可 0(DJD 启发式)或 1(首次适应)
BinWidth 箱子宽 排样区域的宽度(通常是板材的宽) 必须与实际板材尺寸一致,否则排样结果无法使用 按实际板材填写,如 1220、1500
BinHeight 箱子高 排样区域的高度(通常是板材的长) 同上,决定排样范围 按实际板材填写,如 2440、3000
TimeoutSeconds 超时秒数 算法最多运行多少秒,超过就停止 设太短 → 排样质量差;设太长 → 等太久 一般 30 秒;零件多时可设 60~120
复制代码
提示:BinWidth 和 BinHeight 就像"一张纸的大小",排样算法要在这张纸上把零件摆下。填错的话,排出来的图在实际板材上放不下。

临界多边形配置

NFP(临界多边形)是排样算法中判断"两个零件能不能靠在一起"的核心工具。这组参数控制 NFP 的计算精度与摆放方式。

参数名 含义 对绘图的影响 建议值
accuracy 精度 NFP 计算时轮廓的近似精度(0~1) 值越大 → 轮廓越精确,但计算越慢;值太小 → 可能造成零件间微小重叠 0.65(默认,够用)
alignment 对齐方式 零件靠拢时按什么方式对齐 影响零件的摆放姿态, 通常用默认 0(默认)
starting_point 起始点 NFP 计算的起始顶点索引 一般不用改,算法会自动选 0(默认)
rotation_angles 可旋转角度 零件允许旋转的角度列表 这是绘图员最需要关注的参数! 列表里的角度就是零件可以尝试的方向 按工艺定:{0, 90, 180, 270} 或加 45、30 等
复制代码
rotation_angles 的通俗解释:假设你有一块零件,{0, 90} 表示"只能正着放或转 90 度放";{0, 45, 90, 135, ...} 表示"每 45 度都能试一次"。角度越多,排样越灵活,材料利用率越高,但计算时间也越长。

启发性配置

这组参数控制"怎么尝试不同的摆放组合",影响排样质量与速度。

参数名 含义 对绘图的影响 建议值
try_reverse_order 尝试反序 是否也尝试"从后往前"排一遍 开启后可能找到更好的方案,但耗时增加 true(默认)
try_pairs 尝试2个一组 是否把两个零件组合起来一起排 开启后对成对零件(如左右件)效果更好 true(默认)
try_triplets 尝试3个一组 是否把三个零件组合起来一起排 开启后可能提升利用率,但速度明显变慢 false(零件少时可开)
initial_fill_proportion 初始填充率 开始时按多大比例"铺满"板材 值越大 → 初始方案越满,但可能错过更优解;值越小 → 探索空间更大 1/3(默认,平衡)
waste_increment 浪费增长 每次迭代允许的浪费增量 值越大 → 算法越"敢"尝试新方案;值越小 → 越保守 0.1(默认)
复制代码
通俗理解:DJD 就像一个"试衣间",try_pairs 是"试试两件一起穿",initial_fill_proportion 是"一开始先穿几件",waste_increment 是"每次允许多浪费多少空间"。参数越激进,试的次数越多,找到好方案的概率越大,但时间也越长。

扩展阅读

计算几何为骨,排样优化为魂
作品一:亲士套料工具箱 作品二: 亲士CAD工具箱
经典文章推荐:二维排样
万物皆数学
查阅鄙人的博文,请点击博文下载学院导航
活到老,学到老。明朝中后期,大约50%的进士能当上堂官(副部及更高);能当上堂官的举人只有十余人。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。

测试环境

操作系统:win7 开发环境: VS2019 C++17

或者 操作系统:win10 开发环境: VS2022 C++17

如无特殊说明,本算法用**C++**实现。

相关推荐
Summer-Bright4 小时前
深度 | OpenAI 甩出 722 篇数学论文,但黎曼猜想并没有被证明
人工智能·数学·openai
databook1 天前
什么是范数?用 NumPy 动手算一遍就明白了
python·数学·numpy
deepseek231 天前
erdosproblems 冻结评论与证明声明拆解:机器证明泛滥后,一个数学网站关掉了评论区
人工智能·数学·大模型
HIT_Weston2 天前
20、【数学】【信息论】信息量为什么是 - log p:可加性如何锁死对数
数学·基础
铸人2 天前
再论勾股定理成立的条件-37
数学·复数
HIT_Weston2 天前
21、【数学】【信息论】熵为什么是 -sum(p*log(p)):信息量的期望
数学·信息论
HIT_Weston4 天前
17、【数学】【基础】泰勒级数是什么:用多项式逼近函数
数学·基础
patrickpdx5 天前
dihedral group 二面体群
数学
lvwangshu6 天前
势能分析(摊还分析)
数据结构·数学·算法