dmy 15d8f4881d feat: 改进文件保存对话框,支持跨平台系统原生保存
主要改进:
1. 新增 save_file_with_dialog 函数
   - 优先使用 PyWebview 原生模式保存对话框
   - 回退到 Tkinter 对话框(本地环境)
   - 最终回退到浏览器下载方式

2. 优化所有导出功能
   - Excel 对比表导出支持系统保存对话框
   - DXF 文件导出支持系统保存对话框
   - ZIP 批量导出支持系统保存对话框
   - 模板导出支持系统保存对话框

3. 代码质量改进
   - 统一异步函数命名规范(on_click_*)
   - 改进代码格式化和缩进
   - 添加详细的调试日志

4. 用户体验提升
   - 用户可以自由选择保存位置
   - 支持文件类型过滤
   - 自动处理文件名后缀
2026-01-05 21:32:46 +08:00

海上风电场集电系统设计优化工具 (Wind Farm Collector System Optimizer)

一个用于设计和优化海上风电场集电系统拓扑的综合工具。支持多种先进算法,能够根据风机坐标、功率以及海缆规格,自动生成投资成本最低、损耗最小的设计方案。

🌟 主要功能

  • 🖥️ 交互式 Web 界面:基于 NiceGUI 开发,支持文件上传、实时日志、方案对比和可视化。
  • 🌊 多种布局生成:内置模拟数据生成器,支持规则网格和随机分布布局。
  • 🔌 先进设计算法
    • MST (Minimum Spanning Tree):无容量约束基准方案。
    • Capacitated Sweep (Base):基础扇区扫描分组。
    • Rotational Sweep:全局最优起始角度旋转扫描优化。
    • Esau-Williams:经典启发式算法,在距离与容量间寻找最优平衡。
  • 📊 智能方案对比:自动运行三大场景(标准方案、含可选电缆方案、限制最大截面方案)并对比结果。
  • 📋 数据校验与保障:严格校验输入数据的有序性及电缆配置规则。
  • 📁 多格式导出
    • 自动生成 CAD 图纸 (.dxf),按电缆规格分层并着色。
    • 导出详细的 Excel 对比报告及单方案电缆清册。
    • 支持一键打包导出所有方案压缩包 (.zip)。

🛠️ 安装依赖

本项目使用 uvpip 管理环境。推荐安装依赖:

pip install numpy pandas matplotlib scikit-learn scipy networkx ezdxf nicegui openpyxl

🚀 使用方法

1. 启动图形化界面 (推荐)

运行以下命令启动 Web 界面,程序将自动在浏览器中打开:

python gui.py

注:程序默认监听 8080 端口,若被占用将自动尝试后续可用端口。

2. 命令行模式

python main.py --excel your_data.xlsx

📝 输入数据规范 (Excel)

为了确保计算结果的准确性,输入 Excel 文件应包含以下两个 Sheet

1. Coordinates (坐标)

Type ID X Y Power PlatformHeight
Substation Sub1 4000 -800 0 0
Turbine 1 0 0 8.0 25
... ... ... ... ... ...

2. Cables (电缆)

必须遵守以下规则:

  • 单调递增性:电缆必须按截面从小到大排列,且对应的额定载流量也必须严格递增。
  • 可选电缆规则
    • Optional 列标记为 'Y' 的电缆最多只能有一条。
    • 若存在可选电缆,它必须是列表中截面最大的一条。

📈 场景说明 (Scenarios)

  1. Scenario 1 (Standard):仅使用非可选(标准)电缆进行优化。
  2. Scenario 2 (With Optional):包含标记为 'Y' 的大型电缆,适用于尝试增加单回路容量的场景。
  3. Scenario 3 (No Max):排除最大截面电缆,测试在电缆供应受限时的最优拓扑。

📂 输出文件说明

  • Excel 报告[文件名]_result.xlsx 包含所有方案的总览及详细连接清单。
  • CAD 图纸design_[方案名].dxf 包含分层分色的拓扑图。
  • 全部方案[文件名]_result.zip 包含所有图纸及 Excel 报告。

⚖️ 许可证

本项目仅供工程学习、研究和初步设计评估使用。详细计算应以专业设计院规范为准。

Description
No description provided
Readme 2.8 MiB
Languages
Python 99.3%
Makefile 0.7%