FreeCAD in the Browser
2 days ago
- #CAD
- #OpenSource
- #WebAssembly
- LibreCAD和OpenSCAD通过一个方案被编译成运行在浏览器标签页中的WebAssembly:使用Qt for WebAssembly、JSPI、静态依赖栈,并对线程、文件系统和OpenGL进行了审核。
- FreeCAD是一个参数化3D CAD软件,包含约150万行C++代码和70万行Python代码,其移植到WebAssembly仅耗时约4天,可在浏览器标签页中运行,首次加载压缩后约96MB。
- 此次移植需要从源代码构建支持JSPI(用于模态对话框)的Qt,静态链接所有模块(不使用dlopen),并为Coin3D的渲染功能开发了固定功能OpenGL模拟器。
- 主要挑战包括OpenGL模拟、JSPI迁移、针对WebAssembly的PySide6绑定,以及为FEM工作台交叉编译VTK和SMESH,同时修复了崩溃和性能问题。
- 该移植版本保持了与桌面版的功能一致性:包含17个以上的工作台、支持PySide6的Python脚本编写、具有真实网格几何的FEM功能、通过IndexedDB实现持久化存储,以及导入/导出功能。
- 该工程由Fable(AI)完成,在人工指导下进行,包括错误报告和环境设置;完整的会话记录和源代码可供验证。