一个运行在浏览器里的轻量参数化三维建模工具,面向机械设计教学场景。界面与操作逻辑对标 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.html用file://协议打开——ES Module 和 WASM 会被浏览器安全策略拦截,页面会卡在加载页。
cd F:\Program Files\MiniSW
python -m http.server 8898然后浏览器打开 http://127.0.0.1:8898/index.html。
- 在「特征」选项卡点击基准面(前视 / 上视 / 右视)新建草图
- 用「草图」选项卡的工具绘制 2D 轮廓
- 点击「拉伸凸台 / 切除 / 旋转」创建特征
- 单击特征可高亮,右键可编辑参数
打开 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.js的Doc类持有草图与特征的有序列表,rebuild()按顺序重建实体,支持增量网格(deltaMeshes,用于特征高亮) - AI 链路:
agent.js先做中文规则匹配生成操作序列(ops),再经宏展开层(expandOps)扩展为底层操作,最终由executeOps写入文档并重建;LLM 模式则把 ops 交给模型规划 - 坐标系统:草图平面(前视 / 上视 / 右视)通过
math.js的toWorld映射到世界系,拉伸方向由平面法向决定
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 的注册商标,本项目与其无任何关联。