胶布拉力试验数据可视化
概述
该技能将胶布拉力试验的原始数据(位移、力值、时间)自动转换为三张标准力学性能曲线图:
- 力-位移曲线 — 直观呈现各试样的拉伸力变化趋势
- 应力-应变曲线 — 归一化对比不同试样的材料力学响应
- 组合对比图 — 双图并排,一目了然
支持任意数量实验号的多曲线叠加对比,自动对齐数据长度、标注最大力值点。
触发条件
当用户出现以下任一意图时,应加载本技能:
- 提供胶布/胶带/膜材的拉力试验数据,要求画图
- 要求"力-位移曲线"、"应力-应变曲线"或"拉伸曲线"
- 提到"拉力机数据"、"万能试验机数据"、"拉伸试验"等关键词
- 请求:将格式化的试验数据(位移、力值、时间数组)转换为标准力学性能图表
工作流程
Step 1: 引导用户填写数据
用户原始请求中可能只提供了模板(位移/力值/时间用 [...] 占位),需要主动引导用户填入实际数据。可提供如下模板供用户填写:
胶布宽度(mm):___
胶布厚度(mm):___(若无则写"未知")
胶布长度(mm):___(仅夹持段参考,可标注)
实验号1:
位移(mm): [逗号分隔数值]
力值(N): [逗号分隔数值]
时间(s): [逗号分隔数值]
实验号2:
...
⚠ 数据完整性检查:
- 每组的位移和力值数组 必须对应(等长或可截断对齐)
- 时间数组为可选项,缺少时不影响图形生成
- 明显长度不一致时在输出中给出警告
Step 2: 编辑脚本中的数据
打开 scripts/tensile_plot.py,在 __main__ 块中修改:
# 1. 胶布几何参数
TAPE_WIDTH_MM = 25.0 # ← 填入实际宽度
TAPE_THICKNESS_MM = None # ← 有厚度填数值,无则 None
# 2. 试验数据
raw_data = [
{
'disp': [0.0, 0.5, 1.0, ...], # 位移数组
'force': [0.0, 1.2, 2.8, ...], # 力值数组
'time': [0.0, 0.5, 1.0, ...], # 时间数组
},
# 更多实验号...
]
# 3. 可选:自定义实验标签
experiment_labels = ['试样A-25℃', '试样B-25℃', '试样C-25℃']
Step 3: 运行脚本生成图形
执行脚本以生成三张 PNG 图像:
python scripts/tensile_plot.py
输出文件(默认以 tensile_ 为前缀):
tensile_force_displacement.png— 力-位移曲线tensile_stress_strain.png— 应力-应变曲线tensile_comparison.png— 双图对比组合图
Step 4: 展示结果
将生成的 PNG 路径通过 present_files 展示给用户,并附上简要文字说明:
- 各实验的最大力值与对应位移
- 曲线趋势的一致性/差异性
- 若有厚度数据可给出抗拉强度
Step 5: 实物仿真动画(可选)
当用户要求"仿真动画"、"实物模拟"、"GIF动图"、"拉力过程动画"时,使用 scripts/tensile_animation.py 生成动画:
# 在独立脚本中调用:
from tensile_animation import generate_tensile_animation
generate_tensile_animation(
disp=disp_array, # 位移数组 ndarray
force=force_array, # 力值数组 ndarray
time_arr=time_array, # 时间数组 ndarray
width_mm=30.0, # 试样宽度 (mm)
thickness_mm=0.4567, # 试样厚度 (mm),None 则按 N/mm 计算
length_mm=100.0, # 试样原始标距 (mm)
label='实验名称',
n_frames=150, # 动画帧数
fps=15, # 帧率
save_path='output.gif',
)
输出 tensile_sim_实验X.gif — 实物仿真动画,包含:
- 试样矩形在拉力下伸长,宽度泊松收缩
- 应力颜色映射:蓝(低)→绿→黄→红(高)
- 上下夹具,下夹具随拉伸下移
- 实时参数面板(时间/位移/力值/应力/应变)
- 力-位移曲线跟踪进度小图
- 进度百分比和最大力值统计
Step 6: 180° 剥离仿真动画(可选)
当用户要求"剥离实验动画"、"180度剥离"、"peel test 动画"、"剥离仿真"时,使用 scripts/tensile_animation_180peel.py:
from tensile_animation_180peel import generate_peel_180_animation
generate_peel_180_animation(
disp=disp_array, # 剥离距离数组 ndarray (mm)
force=force_array, # 剥离力数组 ndarray (N)
time_arr=time_array, # 时间数组 ndarray (s)
width_mm=30.0, # 胶带宽度 (mm)
panel_length_mm=150.0, # 基板总长度 (mm)
label='实验名称',
n_frames=150,
fps=15,
save_path='peel180_output.gif',
)
输出 peel180_sim_实验X.gif — 180° 剥离仿真动画,包含:
- 刚性基板 + 胶带粘接段(水平布局)
- 剥离前沿沿基板移动(红色圆点标记)
- 已剥离胶带段呈现 180° 折返向上形态
- 剥离前沿应力集中颜色映射(RdYlGn_r 色阶)
- 实时参数面板(时间/剥离距离/剥离力/剥离强度/剥离速度)
- 剥离力-距离跟踪进度小图
- 上方"180° 剥离方向"箭头指示
应力计算逻辑
| 条件 | 公式 | 单位 | |------|------|------| | 有厚度数据 | σ = F / (w × t) | MPa (N/mm²) | | 无厚度数据 | σ = F / w | N/mm |
应变按工程应变近似:ε = ΔL / L₀(以最大位移为参考标距)。
图形参数说明
| 参数 | 默认值 | |------|--------| | 图形尺寸 | (10, 6) 英寸 | | DPI | 150 | | 配色方案 | 10 色循环(蓝/红/绿/橙/紫/棕/粉/灰/黄/青) | | 线型方案 | 6 种循环(实线/虚线/点划线/点线/短虚线/长虚线) | | 最大力值标注 | 圆点标记 + 虚线辅助线 + 数值注释 | | 网格 | 开启,虚线样式 | | 中文支持 | 自动检测系统 CJK 字体(Microsoft YaHei / SimHei 等) |
依赖
- Python 3.8+
- numpy
- matplotlib
资源
scripts/
tensile_plot.py— 核心数据处理与绘图脚本。提供process_experiment_data()函数供编程调用,也支持命令行直接运行。tensile_animation.py— 拉力试验实物仿真动画生成脚本。提供generate_tensile_animation()函数,将实验数据转换为动画 GIF。tensile_animation_180peel.py— 180° 剥离试验实物仿真动画生成脚本。提供generate_peel_180_animation()函数,将实验数据转换为剥离过程动画 GIF。
assets/
tensile_force_displacement.png— 力-位移曲线示例输出tensile_stress_strain.png— 应力-应变曲线示例输出tensile_comparison.png— 组合对比图示例输出
微信扫一扫