当前位置:首页>python>1A1 型砂轮轮廓的几何建模与 Python 可视化

1A1 型砂轮轮廓的几何建模与 Python 可视化

  • 2026-10-11 05:40:58
1A1 型砂轮轮廓的几何建模与 Python 可视化
点击上方蓝字订阅!

在整体立铣刀的刃磨工艺中,砂轮轮廓的精确描述是仿真与工艺优化的基础。1A1 型砂轮(平形砂轮)的轴向截面轮廓由两段圆弧和一段直线构成,其几何参数直接决定了加工后容屑槽的形状。表1给出的轮廓表达式基于砂轮自身坐标系 ,以轴向坐标  为横轴、径向坐标  为纵轴,完整定义了轮廓上的关键点与分段函数。本文首先剖析该轮廓的数学结构,然后给出一个通用的 Python 实现,该实现能处理任意圆弧半径(包括零半径退化情形),并通过参数调整展示不同轮廓形态。所有代码均独立可运行,仅依赖 NumPy 和 Matplotlib 两个标准库。


轮廓表达式的几何解释

表1中定义了四个关键点:

  • • 点 1 位于砂轮左端面的外径处。
  • • 点 2 位于砂轮外圆柱面与左端圆弧的切点。
  • • 点 3 位于外圆柱面与右端圆弧的切点。
  • • 点 4 位于砂轮右端面的外径处。

其中 为砂轮外半径,为砂轮宽度(轴向长度),和分别为左端和右端的倒圆半径。当时,点 1 与点 2 重合,左端为尖角;同理 时点 3 与点 4 重合。

轮廓分段函数以参数  表示沿轴向的连续变化量:

  • • 轮廓 1~2(左端圆弧):
    当  时,径向坐标 。该式是圆心位于 、半径为  的圆弧方程,其起点为点 1,终点为点 2。
  • • 轮廓 2~3(外圆柱面直线):
    当  时,,即半径恒定,轴向从  延伸至 。
  • • 轮廓 3~4(右端圆弧):
    当  时,,圆心位于 ,半径 ,起点为点 3,终点为点 4。

上述表达式隐含了一个重要约束:,否则两段圆弧将重叠,砂轮结构不成立。在后续的代码实现中,我们假设参数满足该条件。


通用轮廓生成算法

为了稳健地处理  或  为零的情况,我们采用分段采样策略:对每段轮廓,根据其半径是否大于零决定是否生成圆弧点;若半径为零,则相应段退化为一个点,但直线段仍能正确衔接。算法核心步骤如下:

  1. 1. 从点 1 开始,添加起始点。
  2. 2. 若 ,在  上均匀采样,按圆弧公式计算 ,并将这些点追加到轮廓列表;若 ,则不增加额外点(因为点 1 即为点 2)。
  3. 3. 绘制直线段 2~3:从  到 ,若区间长度大于零则均匀采样, 恒为 ;若区间长度为零,则仅添加一个点(此时点 2 与点 3 重合)。
  4. 4. 若 ,在  上采样圆弧;若 ,则无需额外点,因为直线段已经到达 。
  5. 5. 最后确保轮廓终点为点 4。

这样生成的轮廓点集完整且无重复,可用于后续绘图或数值计算。


独立可运行的 Python 代码

以下代码块是一个完整的脚本,它定义了生成轮廓的函数 generate_profile 和绘图函数 plot_profile,并在主程序中根据表 1 提供的实例参数(,,,)进行绘制。用户只需复制整个代码块,保存为 .py 文件并运行,即可在屏幕上看到砂轮轴向截面图。若想观察非零圆角的效果,只需修改主程序中的 gr1 和 gr2 变量值,例如 gr1=5; gr2=3,再次运行即可。

import numpy as np
import matplotlib.pyplot as plt

defgenerate_profile(gR, gb, gr1, gr2, n_pts=200):
"""
    生成1A1型砂轮轮廓点(砂轮自身坐标系)
    参数:
        gR  : 外径 (mm)
        gb  : 宽度 (mm)
        gr1 : 左端圆弧半径 (mm)
        gr2 : 右端圆弧半径 (mm)
        n_pts: 每段插值点数
    返回:
        z, x : 轴向和径向坐标数组
    """

    z_vals = []
    x_vals = []

# 点1 (同时也是起点)
    z_vals.append(0.0)
    x_vals.append(gR - gr1)

# 左端圆弧 (1~2)
if gr1 > 0:
        z_arc = np.linspace(0, gr1, n_pts)
        x_arc = gR - gr1 + np.sqrt(gr1**2 - (gr1 - z_arc)**2)
        z_vals.extend(z_arc)
        x_vals.extend(x_arc)
# 若gr1==0,圆弧退化为点1,无需额外点

# 直线段 (2~3)
    z_start = gr1
    z_end = gb - gr2
if z_end > z_start:
        z_line = np.linspace(z_start, z_end, n_pts)
        x_line = np.full_like(z_line, gR)
        z_vals.extend(z_line)
        x_vals.extend(x_line)
elif z_end == z_start:
# 直线长度为0,仅添加一个点
        z_vals.append(z_end)
        x_vals.append(gR)
# 若z_end < z_start则理论上不会发生,但可做保护:忽略

# 右端圆弧 (3~4)
if gr2 > 0:
        z_arc2 = np.linspace(gb - gr2, gb, n_pts)
        x_arc2 = gR - gr2 + np.sqrt(gr2**2 - (z_arc2 - (gb - gr2))**2)
        z_vals.extend(z_arc2)
        x_vals.extend(x_arc2)
# 若gr2==0,圆弧退化为点4,但直线已到gb,无需额外点

# 确保最后一点为点4 (gb, gR-gr2)
iflen(z_vals) == 0or z_vals[-1] != gb:
        z_vals.append(gb)
        x_vals.append(gR - gr2)

return np.array(z_vals), np.array(x_vals)


defplot_profile(gR, gb, gr1, gr2, n_pts=200):
"""绘制轮廓并标注关键点"""
    z, x = generate_profile(gR, gb, gr1, gr2, n_pts)
    plt.figure(figsize=(8, 6))
    plt.plot(z, x, 'b-', linewidth=2, label='砂轮轮廓')
# 关键点(可能重合)
    plt.plot(z[0], x[0], 'ro', label='点1 / 点2'if gr1==0else'点1')
    plt.plot(z[-1], x[-1], 'go', label='点3 / 点4'if gr2==0else'点4')
    plt.xlabel('轴向位置 z (mm)')
    plt.ylabel('径向位置 x (mm)')
    plt.title(f'1A1型砂轮轮廓 (gR={gR}, gb={gb}, gr1={gr1}, gr2={gr2})')
    plt.grid(True)
    plt.axis('equal')
    plt.legend()
    plt.tight_layout()
    plt.show()


if __name__ == "__main__":
# 表3-5中的实例参数(仅使用结构参数,位姿参数不影响轮廓形状)
    gR = 75.0# mm
    gb = 20.0# mm
    gr1 = 0.0# mm
    gr2 = 0.0# mm

# 绘制当前参数下的轮廓
    plot_profile(gR, gb, gr1, gr2)

# 如需观察非零圆角,可取消下面注释并运行:
# plot_profile(75, 20, 5, 3)   # gr1=5, gr2=3

该脚本完全自包含,导入标准库后即可运行。主程序中默认使用 ,得到的轮廓是一个矩形(从  到  的竖直线,因为左右端面无倒角)。若想探索圆弧倒角的影响,只需调用 plot_profile 时传入非零半径值,例如 plot_profile(75, 20, 5, 3),此时左端圆弧半径 5 mm,右端圆弧半径 3 mm,轮廓将呈现出光滑的圆角过渡。


轮廓参数对形状的影响

从几何表达式中可以看出, 和  控制着砂轮端部的圆角大小。当两者均为零时,砂轮侧面与端面垂直相交,形成尖角;随着半径增大,端部逐渐变得圆润,同时直线段的长度相应缩短(因为  减小)。这种变化直接影响到磨削时砂轮与刀具的接触区域,进而改变容屑槽的曲率分布。在工艺设计中,常通过调整这两个圆角半径来优化排屑性能或避免应力集中。上述代码允许用户直观地观察这些变化,为参数选择提供视觉参考。


总结

本文基于表 1的数学表达式,实现了 1A1 型砂轮轮廓的通用生成算法,并提供了完整的 Python 可视化代码。该代码克服了圆弧半径为零时的退化问题,能够准确描绘任意有效参数下的轮廓形状。通过修改主程序中的结构参数,用户可以快速评估不同砂轮设计对轮廓的影响,从而辅助刃磨工艺的数值仿真与优化。代码的模块化设计也便于将其集成到更复杂的刀具建模系统中,具有实用价值。

 • end • 

陪伴是最长情的告白

 为你推送最实用的资讯 

识别二维码 关注我们 

最新文章

随机文章