Skip to content

Repository files navigation

MiniSW · AI 参数化建模

一个运行在浏览器里的轻量参数化三维建模工具,面向机械设计教学场景。界面与操作逻辑对标 SolidWorks(特征树、Ribbon 选项卡、属性面板),同时内置一个 AI 智能体——用一句自然语言就能生成零件。

基于 Three.js 渲染、manifold-3d(WASM 几何内核)做实体布尔运算,全部前端本地运行,无需后端、无需构建工具,双击即用。

功能特性

  • 参数化建模:草图(直线 / 矩形 / 圆 / 圆弧 / 中心线)→ 特征(拉伸 / 切除 / 旋转 / 圆柱 / 圆柱切除)→ 重建,特征树可回看编辑
  • AI 智能体:中文自然语言描述零件,自动解析为建模操作并执行;离线可用(内置规则解析器),也可配置 LLM 走深度推理
  • 高级宏指令:倒角矩形、圆角矩形、多边形、抽壳、镜像、线性阵列、圆周阵列、凸台等一键生成
  • 文档能力:保存 / 打开(JSON)、导出 STL、撤销 / 重做
  • SolidWorks 风格界面:可拖拽调整的 Ribbon / 特征树 / 属性面板,可移动的 AI 浮动面板,四向视图切换

快速开始

方式一:双击启动脚本(推荐)

双击 启动.bat,脚本会自动启动本地服务器并打开浏览器,访问 http://127.0.0.1:8898/index.html。关闭黑色命令行窗口即停止服务器。

注意:不要直接双击 index.htmlfile:// 协议打开——ES Module 和 WASM 会被浏览器安全策略拦截,页面会卡在加载页。

方式二:手动启动

cd F:\Program Files\MiniSW
python -m http.server 8898

然后浏览器打开 http://127.0.0.1:8898/index.html

使用示例

手动建模流程

  1. 在「特征」选项卡点击基准面(前视 / 上视 / 右视)新建草图
  2. 用「草图」选项卡的工具绘制 2D 轮廓
  3. 点击「拉伸凸台 / 切除 / 旋转」创建特征
  4. 单击特征可高亮,右键可编辑参数

AI 智能体一句话建模

打开 AI 面板,输入自然语言,例如:

输入 生成结果
做一个 100×100×20 的方块,中心开一个半径15的圆孔 底板 + 中心通孔
空心圆柱,外径60,内径40,高50 空心圆柱
做一个 200×120×10 的板,中间开一个 60×40 的矩形槽,四角打 4 个直径6的孔 槽板 + 四角孔
做一个 100×80×20 的矩形板,四边倒角 5mm 倒角板
做一个 100×80×40 的抽壳盒子,壁厚3mm 抽壳盒体
做一个 200×100×10 的板,打一个直径10的通孔,线性阵列4个间距40 线性阵列孔
做一个直径120厚10的圆盘,打一个直径10的孔距离中心40,圆周阵列6个 圆周阵列孔
做一个 100×80×10 的底板,顶面中心加一个直径30高20的圆柱凸台 底板 + 凸台
做一个 100×60×10 的板,左侧凸台镜像到右侧 镜像特征

项目结构

MiniSW/
├── index.html          # 单页入口(import map 声明本地依赖)
├── 启动.bat            # 一键启动脚本(自动起服务器 + 开浏览器)
├── css/
│   └── style.css       # 全部样式(含可拖拽面板的 resizer)
├── js/
│   ├── main.js         # 应用主控:Ribbon、面板交互、事件绑定
│   ├── doc.js          # 零件文档模型:草图/特征/重建/序列化/撤销
│   ├── geometry.js     # manifold 几何内核封装:布尔/拉伸/旋转/圆柱
│   ├── agent.js        # AI 智能体:规则解析器 + LLM 集成 + 操作执行
│   ├── sketch.js       # 草图图元、轮廓环提取、约束数据
│   ├── sketchui.js     # 草图交互绘制 UI
│   ├── tree.js         # 特征树渲染与操作
│   ├── viewport.js     # Three.js 3D 视口、光照、拾取
│   └── math.js         # 坐标变换(平面 ↔ 世界系)
├── vendor/             # 本地化第三方依赖(彻底离线)
│   ├── manifold/       # manifold-3d (WASM 几何内核)
│   └── three/          # Three.js 及 addons
└── tests/              # Node 冒烟测试(真实调用源码模块)

开发与测试

运行测试

测试直接调用源码模块(不依赖浏览器),验证几何内核、文档模型、AI 解析与布尔运算的核心链路:

node --loader ./tests/loader.mjs ./tests/test.mjs

测试覆盖:WASM 加载、底板 + 四角孔手动建模、包围盒校验、STL 导出、旋转特征、AI 自然语言解析等。

架构说明

  • 几何内核:manifold-3d WASM。geometry.js 统一封装实体构造(buildExtrude / buildRevolve / buildCylinder)与布尔运算(booleanOp),并负责 WASM 对象生命周期管理(delete()
  • 文档模型doc.jsDoc 类持有草图与特征的有序列表,rebuild() 按顺序重建实体,支持增量网格(deltaMeshes,用于特征高亮)
  • AI 链路agent.js 先做中文规则匹配生成操作序列(ops),再经宏展开层(expandOps)扩展为底层操作,最终由 executeOps 写入文档并重建;LLM 模式则把 ops 交给模型规划
  • 坐标系统:草图平面(前视 / 上视 / 右视)通过 math.jstoWorld 映射到世界系,拉伸方向由平面法向决定

依赖本地化

vendor/ 下的 Three.js 与 manifold-3d 均为本地文件,index.html 通过 import map 指向本地路径,不依赖任何 CDN——在内网 / 离线环境可正常使用。

已知限制

  • 圆形分段数固定为 96(js/sketch.js),已满足绝大多数教学场景;极端大半径圆弧如需更光滑可调高该值(会相应增加面数)
  • 目前仅支持单一实体(多体、装配、工程图在规划中,见 ROADMAP.md
  • 约束系统为数据结构层面,尚无数值求解器(尺寸标注暂不驱动几何)
  • LLM 模式需自行配置 API 地址与密钥(AI 面板 ⚙ 设置)

路线图

进阶规划(扫描 / 放样 / 筋 / 实体圆角、约束求解器与尺寸驱动、装配体、工程图)详见 ROADMAP.md

许可与声明

本项目为教学演示性质,仅用于学习与实验用途。SolidWorks 为 Dassault Systèmes 的注册商标,本项目与其无任何关联。

About

一个运行在浏览器里的轻量参数化三维建模工具,面向机械设计教学场景。界面与操作逻辑对标 SolidWorks(特征树、Ribbon 选项卡、属性面板),同时内置一个 AI 智能体——用一句自然语言就能生成零件。 基于 Three.js 渲染、manifold-3d(WASM 几何内核)做实体布尔运算,全部前端本地运行,无需后端、无需构建工具,双击即用。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages