Skip to content

Hu3367/StructuralForceDiagrams

Repository files navigation

内力图生成器

项目简介

这是一个用于绘制结构力学图表的程序,可以根据用户输入的参数自动计算并绘制梁结构的内力图(弯矩图、剪力图和轴力图)。

功能特性

支持的梁类型

  • 简支梁:两端铰接支撑的梁
  • 悬挑梁:一端固定,另一端自由的梁
  • 连续梁:多跨连续的结构梁

支持的功能

  • 设置节点约束类型(铰接、刚接)
  • 设置节点荷载(集中力、集中力矩)
  • 设置荷载位置
  • 设置梁的长度和跨数
  • 自动计算并绘制内力图

输出图表

  • 弯矩图(M图):显示梁各截面的弯矩值
  • 剪力图(V图):显示梁各截面的剪力值
  • 轴力图(N图):显示梁各截面的轴力值

安装说明

环境要求

  • Python 3.7 或更高版本

安装步骤

  1. 安装依赖包:
pip install -r requirements.txt
  1. 运行程序:

方式1:GUI界面(推荐)

python gui_main.py

方式2:命令行界面

python main.py

使用方法

GUI界面使用(推荐)

  1. 启动GUI程序

    python gui_main.py
  2. 创建梁结构

    • 选择梁类型(简支梁、悬挑梁、连续梁)
    • 输入梁的长度(米)
    • 输入跨数(连续梁使用)
    • 点击"创建梁"按钮
  3. 设置支撑(可选):

    • 输入支撑位置(米)
    • 选择支撑类型(铰接或固定)
    • 点击"添加支撑"按钮
    • 可以在支撑列表中删除不需要的支撑
  4. 添加荷载

    • 选择荷载类型(集中力或集中力矩)
    • 输入荷载大小(kN 或 kN·m)
    • 输入荷载位置(米)
    • 点击"添加荷载"按钮
    • 可以添加多个荷载
  5. 计算并绘制

    • 点击"计算并绘制"按钮
    • 程序将自动计算并显示弯矩图、剪力图和轴力图
    • 查看支座反力结果
  6. 语言切换

    • 在界面顶部选择语言(中文/英文)
    • 界面和图表标签将自动切换

命令行界面使用

  1. 启动程序后,选择梁的类型(简支梁、悬挑梁、连续梁)
  2. 输入梁的基本参数:
    • 梁的长度(米)
    • 跨数(对于连续梁)
  3. 设置节点约束:
    • 选择每个节点的约束类型(铰接或刚接)
  4. 添加荷载:
    • 选择荷载类型(集中力、集中力矩)
    • 输入荷载大小(kN 或 kN·m)
    • 设置荷载位置(距离左端的距离,米)
  5. 程序将自动计算并显示内力图

参数说明

梁类型参数

  • 简支梁:两端铰接,中间可设置荷载
  • 悬挑梁:左端固定,右端自由,可设置荷载
  • 连续梁:多跨连续,每跨可独立设置约束和荷载

约束类型

  • 铰接:允许转动,限制平动
  • 刚接:限制转动和平动(固定端)

荷载类型

  • 集中力(F):单位:kN,向下为正
  • 集中力矩(M):单位:kN·m,顺时针为正

技术实现

计算方法

  • 核心库:使用 anaStruct 库进行2D结构分析
  • anaStruct 是一个专业的结构分析库,使用有限元方法进行结构计算
  • 支持静力分析、内力计算和可视化

文件结构

内力图生成器/
├── gui_main.py             # GUI主程序(推荐使用)
├── main.py                 # 命令行主程序
├── beam_anastruct.py       # 基于anaStruct的计算和绘图模块
├── beam_calculator.py      # 原始计算模块(保留兼容)
├── beam_plotter.py         # 原始绘图模块(保留兼容)
├── example.py              # 快速示例脚本
├── requirements.txt        # 依赖包列表
└── README.md              # 项目说明文档

GUI界面特性

  • 图形化操作:直观的界面,无需编程
  • 实时预览:添加支撑和荷载后立即显示
  • 多语言支持:支持中文和英文界面切换
  • 图表显示:自动绘制弯矩图、剪力图、轴力图
  • 结果查看:显示支座反力等计算结果
  • 无网格显示:图表清晰,无网格干扰

快速开始示例

示例1: 使用GUI界面(推荐)

运行GUI程序:

python gui_main.py

然后按照界面提示:

  1. 选择梁类型(简支梁/悬挑梁/连续梁)
  2. 输入梁的长度和跨数
  3. 点击"创建梁"
  4. 添加支撑和荷载
  5. 点击"计算并绘制"查看结果

示例2: 使用anaStruct编程接口

from beam_anastruct import BeamAnastruct
import matplotlib.pyplot as plt

# 创建分析器(支持中英文)
analyzer = BeamAnastruct(language='zh')  # 或 'en' 英文

# 创建简支梁,长度6米
analyzer.create_beam('simply_supported', length=6.0)

# 添加荷载:中间位置受10kN向下集中力
analyzer.add_load('force', 10.0, 3.0)

# 求解
analyzer.solve()

# 绘制所有内力图(无网格)
fig, axes = analyzer.plot_all()
plt.show()

# 或单独绘制
analyzer.plot_moment()
plt.show()

示例3: 使用命令行界面

python main.py

然后按照提示输入参数。

示例4: 运行示例脚本

python example.py

这将运行预设的示例,展示不同梁类型和荷载情况下的内力图。

注意事项

  1. 目前版本仅支持平面梁结构,不支持空间结构
  2. 荷载方向约定:向下为正,向上为负
  3. 弯矩方向约定:下侧受拉为正
  4. 计算结果仅供参考,实际工程应用请咨询专业结构工程师

后续改进计划

  • 支持分布荷载(均布荷载、三角形荷载等)
  • 支持更多梁类型(框架梁、组合梁等)
  • 添加材料属性设置(弹性模量、截面特性)
  • 支持导出计算结果和图表
  • 添加交互式图形界面(GUI)
  • 支持保存和加载结构模型

项目反思与改进建议

当前版本特点

  1. 简单易用:采用命令行交互界面,用户无需编程即可使用
  2. 功能完整:支持常见的梁类型和荷载类型
  3. 可视化清晰:自动标注关键值,图形美观易读
  4. 代码结构清晰:采用模块化设计,易于扩展和维护

已知限制

  1. 连续梁计算简化:当前版本的连续梁计算使用了简化方法,对于复杂连续梁可能不够精确
  2. 仅支持集中荷载:暂不支持分布荷载(均布荷载、三角形荷载等)
  3. 无材料属性:未考虑材料的弹性模量和截面特性,无法计算变形
  4. 无交互式GUI:当前为命令行界面,用户体验可以进一步优化

技术改进方向

  1. 算法优化

    • 实现完整的矩阵位移法用于连续梁计算
    • 添加力法求解超静定结构
    • 支持更复杂的边界条件
  2. 功能扩展

    • 添加分布荷载支持
    • 实现变形计算和绘制
    • 添加截面设计功能
  3. 用户体验

    • 开发图形化界面(GUI)
    • 支持拖拽式建模
    • 添加结果导出功能(Excel、PDF等)
  4. 工程应用

    • 添加材料库和截面库
    • 实现规范校核功能
    • 支持组合荷载工况

更新日志

v2.0.0 (2024)

  • 重大更新:集成anaStruct库进行结构分析
  • 新增GUI界面:图形化操作界面,支持拖拽式操作
  • 多语言支持:界面和图表支持中英文切换
  • 优化绘图:移除网格,图表更清晰
  • 使用专业的有限元方法进行结构计算
  • 改进支座反力计算和显示

v1.0.0 (2024)

  • 初始版本发布
  • 支持简支梁、悬挑梁、连续梁的基本计算
  • 支持集中力和集中力矩荷载
  • 实现弯矩图、剪力图、轴力图的绘制
  • 提供交互式命令行界面和编程接口
  • 自动标注关键值和梁的示意图

About

用于绘制常见的力学结构受力图

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages