用于 2D 和 3D CAD 文件读写的 JS 库
开源免费 JavaScript 库使程序员能够创建和操作 AutoCAD 文件以及 2D 或 3D 形状。在 JS 应用程序中创建和编辑 3D 对象。
Aspose.CAD for OpenCascade.js 是什么?
OpenCascade.js 是一个便捷的开源库,它使像您这样的开发人员能够使用 JavaScript 轻松地制作和控制 3D 对象。该库基于 Open Cascade 技术 (OCCT),这是一款用于 3D 建模和数值模拟的开源工具。借助 OpenCascade.js,您可以利用 OpenCascade CAD 内核创建强大的应用程序。这些应用程序可以在 Web 浏览器、服务器或支持 WebAssembly 的各种设备上无缝运行。得益于 Emscripten 和 WebAssembly 的强大功能,该库的运行速度非常快,CAD 内核以接近原生的速度运行,并完全支持所有现代浏览器上的多线程。
OpenCascade.js 库因其精确性、可靠性和速度而受到各行各业的欢迎。 OpenCascade.js 的一大优势在于它能够处理多种文件类型,例如 STL、IGES 和 STEP。这意味着您可以流畅地导入来自不同 CAD 软件或数据源的 3D 模型,并使用该库进行编辑。该库还提供了各种用于创建和编辑 3D 对象的工具,包括创建复杂形状、曲线和曲面,以及执行几何变换(例如缩放、旋转和平移)。
OpenCascade.js 库可帮助您实时查看 3D 对象,并提供许多用于显示、照明和着色 3D 对象的工具。这让您能够创建逼真且引人入胜的 3D 世界。该库拥有丰富的文档,让您可以轻松快速地开始开发高级 3D 应用程序。该库包含丰富的工具和功能,可帮助您创建、构建和查看 3D 项目。它非常适合各种用途,例如产品设计、制造物品、规划建筑和施工。
OpenCascade.js 入门
推荐使用 npm 安装。请使用以下命令顺利安装。
通过 npm 安装 OpenCascade.js
npm install opencascade.js@beta
您也可以手动安装;直接从 GitHub 存储库下载最新版本的文件。
JavaScript 应用中的多线程支持
开源 OpenCascade 库支持某些操作的多线程。由于 JavaScript 是单线程语言,该库本身并不支持多线程。不过,开发者可以在应用程序中使用 Web Worker 在单独的线程中执行某些任务,从而提高性能和响应速度。以下示例演示了如何使用 Web Worker 在单独的线程中执行繁重的计算任务,同时保持主 UI 的响应速度。
如何在 JavaScript 应用程序中使用多线程
javascript
// worker.js
onmessage = function(e) {
// Do heavy computational task here
postMessage("Task completed!");
};
// main.js
const worker = new Worker("worker.js");
worker.onmessage = function(e) {
console.log("Worker said: " + e.data);
};
worker.postMessage("Start task");
通过 JavaScript 使用 2D 和 3D“偏移”
开源 OpenCascade 库允许软件开发者在自己的 JavaScript 应用程序中使用 2D 和 3D“偏移”。要完成这些任务,首先需要加载所需的库并创建 2D 或 3D 形状。之后,您可以偏移 2D 形状,可以使用 BRepOffsetAPI_MakeOffset 类,并使用 BRepBuilderAPI_MakeSolid 类偏移 3D 形状。您可以使用 FreeCAD 等 3D 建模软件来显示偏移形状。
如何通过 JavaScript API 创建 2D 形状
const wire = new BRepBuilderAPI_MakeWire();
wire.Add(new BRepBuilderAPI_MakeEdge(new gp_Pnt(0, 0, 0), new gp_Pnt(1, 0, 0)));
wire.Add(new BRepBuilderAPI_MakeEdge(new gp_Pnt(1, 0, 0), new gp_Pnt(1, 1, 0)));
wire.Add(new BRepBuilderAPI_MakeEdge(new gp_Pnt(1, 1, 0), new gp_Pnt(0, 1, 0)));
wire.Add(new BRepBuilderAPI_MakeEdge(new gp_Pnt(0, 1, 0), new gp_Pnt(0, 0, 0)));
create 3D shape:
onst face = new BRepBuilderAPI_MakeFace(wire.Wire());
// Offset the 2D shape:
const offset = new BRepOffsetAPI_MakeOffset(face.Face(), 1, 1e-6);
offset.Build();
// Offset the 3D shape:
const solid = new BRepBuilderAPI_MakeSolid(offset.Shape());
solid.Build();