飞轮设计与运动学仿真桌面应用
本项目的灵感来源与对标项目:CamForge
CamForge 是一款基于 Tauri v2 的凸轮设计桌面应用,提供了参数输入、凸轮轮廓预览、运动分析曲线等完整的工程设计功能。
FlyForge 的整体架构设计、UI 布局模式、交互方式(截面预览 + 图表分析 + 结果面板)均以 CamForge 为参照蓝本进行开发。 在此基础上,FlyForge 将应用场景从凸轮设计拓展到飞轮设计与运动学仿真领域,实现了飞轮参数建模、应力分析、动力学仿真等专属功能。
感谢 CamForge 项目提供的设计思路和技术参考。
FlyForge 是一款专为机械工程领域打造的飞轮设计与仿真桌面应用。基于 Tauri v2 + SolidJS + Rust 构建,提供高性能的飞轮参数设计、应力分析、动力学仿真与数据可视化功能。
- 5 种飞轮类型:实心圆盘、环形轮(等厚度)、锥形盘、等强度轮、多层复合轮
- 几何尺寸:外径 Ro、内径 Ri、轮缘厚度、轮毂径、轮毂厚度
- 材料库:12 种预设材料(合金钢、铝合金、钛合金、碳纤维、铸铁等),含热膨胀系数与参考温度
- 工况参数:额定/最大/最小转速、工作温度、安全系数、离散点数量
- 预设方案:8 种典型飞轮配置一键加载
- 参数导入/导出:JSON 格式导入导出参数,跨会话复用
- 每层独立厚度、外径、材料配置
- 图层编辑器可视化管理各层
- 预设方案快速初始化
- 截面预览同步显示分层边界
- 圆形截面 SVG 实时渲染:滚轮缩放 + 拖拽平移
- 厚度剖面图:独立固定高度条,水平同步圆形预览
- 剖面图可独立拖拽/缩放,重置时自动对齐到截面视图
- 剖面图显示/隐藏状态持久化记忆
- 网格背景 + 坐标轴 + 颜色图例
| 标签页 | 说明 |
|---|---|
| 应力 | 等效应力、周向应力、径向应力随半径变化曲线 + 屈服强度参考线 |
| 转速 | 启动/制动过程转速-时间曲线(含额定/最大转速参考线) |
| 能量 | 额定/最大/可用储能柱状图对比 |
| 灵敏度 | 7 参数 × 8 指标参数扫描曲线(外径/内径/厚度/轮毂/转速 → 应力/质量/惯量/储能/安全系数等) |
| 热应力 | 合成应力(离心+热)/ 纯离心应力 / 纯热应力 + 温度修正屈服强度 |
| 疲劳 S-N | Basquin S-N 曲线 + 疲劳极限线 + 当前工作应力点标注 |
所有图表均支持:
- 十字准星跟踪 + 实时数据浮动框
- 滚轮缩放 + 拖拽平移
- 极值点标注
- 重置按钮
- 质量、转动惯量、最大应力及位置
- 屈服/疲劳安全系数、安全破裂转速
- 额定/可用/最大储能、比能量
- 疲劳寿命估算(S-N + Goodman/Gerber/Soderberg 修正准则可选)
- 热应力分析(温度降额 + 径向温度梯度)
- 安全评估状态(通过/未通过)
- 保存当前方案(参数+材料+计算结果快照)
- 方案列表管理(重命名/删除/清空)
- 对比表格:横向展示 2~4 个方案的关键指标
- 雷达图:多维度可视化对比(比能量/安全系数/储能/质量/惯量/应力)
- 方案数据持久化(localStorage 跨会话保持)
- 几何参数实时校验(内径/外径比、轮毂径合理性、厚度范围)
- 工况参数校验(转速顺序、安全系数合理性)
- NumberInput 组件支持 error(红色)/ warning(黄色)状态
- 参数建议提示文本
- 自定义材料编辑器:7 个属性字段(密度/杨氏模量/泊松比/屈服/抗拉/疲劳/热膨胀)
- 自定义材料持久化存储
- material_override 机制:自定义材料直接传入后端计算
- CSV / JSON / SVG / 参数 JSON 多种格式导出
- HTML 工程报告:自包含暗色主题报告,含参数表+结果表+内联SVG应力图+安全评估
- 支持自定义保存路径
- 黑绿科技配色主题
- 左右侧边栏可折叠
- 右侧栏双标签页:结果 / 方案对比
- 中央区分隔线可拖拽调整上下比例
- 厚度剖面图手柄独立调整高度
- 数字输入框长按快速微调
- 实时计算(300ms 防抖)
- 参数撤销/重做:Ctrl+Z / Ctrl+Y,最多 20 步历史
- 快捷键:Ctrl+L 切换左栏 / Ctrl+R 切换右栏
- 布局记忆:侧边栏状态、布局比例、剖面图显示/隐藏、飞轮类型和材料重启后恢复
| 层级 | 技术 |
|---|---|
| 前端框架 | SolidJS + TypeScript |
| UI 样式 | Tailwind CSS |
| 构建工具 | Vite |
| 桌面框架 | Tauri v2 (Rust) |
| 计算核心 | Rust (flyforge-core) — 108 项单元测试 |
| 安装包 | NSIS |
npm installnpm run dev # 启动前端开发服务器
npx tauri dev # 启动 Tauri 开发模式(含前端 + Rust 后端)npx tauri build # 构建 Windows 安装包 (.exe)构建产物位于 src-tauri/target/release/bundle/nsis/。
cargo test --workspace # Rust 单元测试(108 项)FlyForge/
├── src/ # 前端源码 (SolidJS + TypeScript)
│ ├── components/ # UI 组件
│ │ ├── Layout.tsx # 主布局(三栏 + 分隔线)
│ │ ├── Header.tsx # 顶栏(标题 + 剖面图开关)
│ │ ├── AccordionPanel.tsx # 左侧参数面板
│ │ ├── SectionPreview.tsx # 飞轮截面预览(圆形 + 缩放拖拽)
│ │ ├── CrossSection.tsx # 厚度剖面图(独立条 + 同步/对齐)
│ │ ├── VisualizationPanel.tsx# 可视化图表(6 个标签页)
│ │ ├── ComparePanel.tsx # 方案对比面板(列表+表格+雷达图)
│ │ ├── RadarChart.tsx # 雷达图组件
│ │ └── ResultsPanel.tsx # 右侧结果面板(含疲劳准则选择)
│ ├── services/ # API 调用层
│ ├── store/ # 全局状态管理
│ │ ├── index.tsx # 主状态(含撤销/重做)
│ │ └── schemes.tsx # 方案管理状态
│ ├── types/ # TypeScript 类型定义
│ └── utils/ # 工具函数
│ ├── persist.ts # 持久化工具
│ ├── schemes.ts # 方案存储
│ ├── validation.ts # 参数校验
│ └── history.ts # 撤销历史
├── crates/ # Rust 代码
│ ├── flyforge-core/ # 飞轮计算核心库
│ │ ├── stress.rs # 应力计算(Lamé 解)
│ │ ├── fatigue.rs # 疲劳寿命估算(S-N + Goodman/Gerber/Soderberg)
│ │ ├── thermal.rs # 温度场热应力分析
│ │ ├── sensitivity.rs # 参数灵敏度扫描
│ │ ├── energy.rs # 能量分析
│ │ ├── safety.rs # 安全系数分析
│ │ ├── dynamics.rs # 动力学仿真
│ │ ├── solver.rs # 计算调度器
│ │ └── types.rs # 核心数据类型 + 12 种材料库 + material_override
│ └── flyforge-server/ # 可选 REST API 服务
├── src-tauri/ # Tauri 桌面应用入口
│ ├── src/lib.rs # Tauri 命令定义
│ ├── icons/ # 应用图标
│ └── tauri.conf.json # Tauri 配置
├── docs/ # 文档
│ └── releases/ # 版本发布说明
└── .github/workflows/ # CI/CD
| 项目 | 说明 |
|---|---|
| CamForge | 凸轮设计桌面应用(本项目灵感来源) |