JSCAD:一款JavaScript驅動的開源3D設計神器
最近在技術社區發現一款非常有意思的通過js實現的CAD 3D設計渲染工具——JSCAD。
圖片
借助 JSCAD,我們可以編寫簡潔的 JavaScript 代碼來生成精確的 3D 模型,這些模型可以根據需要輕松調整參數,以滿足不同的設計需求。這種參數化設計的方式使得模型的修改和定制變得輕而易舉,大大提高了設計效率。
github地址:https://github.com/jscad/OpenJSCAD.org
代碼案例
下面是一個簡單的 JSCAD 代碼案例,用于創建上面演示的幾個立方體:
// 創建3D基礎形狀
const jscad = require('@jscad/modeling')
const { cube, cuboid, cylinder, cylinderElliptic, ellipsoid, geodesicSphere, roundedCuboid, roundedCylinder, sphere, torus } = jscad.primitives
const { translate } = jscad.transforms
const main = () => {
const allPrimitives = [
cube(),
cuboid({ size: [1, 2, 3] }),
roundedCuboid({ size: [2, 3, 2], roundRadius: 0.4, segments: 32 }),
roundedCuboid({ size: [1, 2, 3], roundRadius: 0.4, segments: 16 }),
sphere({ radius: 2, segments: 16 }),
geodesicSphere({ radius: 1.5, segments: 16 }),
ellipsoid({ radius: [2, 1, 1.5], segments: 64, axes: [[1, 1, 0], [0, -1, 1], [-1, 0, 1]] }),
cylinder({ radius: 1, height: 5 }),
roundedCylinder({ radius: 1, height: 8, roundRadius: 0.8 }),
cylinderElliptic({ height: 8, startRadius: [1, 2], startAngle: 0, endRadius: [1, 2], endAngle: (Math.PI / 8), segments: 32 }),
cylinder({ start: [0, 0, 0], end: [3, 3, 10], radius: 1 }),
torus({ innerRadius: 1, outerRadius: 1.2 }),
torus({ innerRadius: 1, outerRadius: 1.5, innerSegments: 4, outerSegments: 6, innerRotation: 0 })
]
return allPrimitives.map((primitive, index) => translate([(index % 4 - 2) * 6, Math.floor(index / 4 - 2) * 6, 0], primitive))
}
module.exports = { main }
當然我們還能創建很多有意思的3D個2D圖案,并且都是通過javascript哦~
下面是我創建的幾個圖形的案例,大家可以參考一下:
圖片
圖片
下面是一個3D螺母的案例,像極了我大學用的CAD軟件!
圖片
為了讓大家更近一步了解這個項目,接下來我和大家分享一下它的功能亮點和應用場景。
功能亮點
- 參數化設計
JSCAD 的核心優勢之一就是參數化設計。通過在代碼中定義參數,我們可以輕松地調整模型的尺寸、形狀和其他屬性。
2. 跨平臺支持
JSCAD 具有出色的跨平臺支持能力。我們可以在瀏覽器中直接使用它,無需安裝任何額外的軟件,只需打開網頁即可開始設計。同時,它也支持作為命令行工具在服務器端使用 Node.js 進行計算,適用于自動化生產流程。此外,還有實驗性的桌面應用版本,方便我們在本地進行測試。
3. 多種輸出格式
JSCAD 支持多種輸出格式,如 STL、AMF、DXF、JSON 和 X3D 等。這意味著可以將設計好的模型導出為不同的文件格式,以滿足不同的應用需求。例如,STL 格式常用于 3D 打印,而 DXF 格式則適用于 CAD 軟件進行進一步的編輯。
4. 模塊化架構設計
JSCAD 采用模塊化架構,這使得它易于擴展和定制。我們可以根據自己的需求選擇使用不同的模塊,或者開發自己的模塊來實現特定的功能。這種模塊化的設計方式提高了代碼的可維護性和復用性,讓我們可以更加高效地進行開發。
應用場景
圖片
接下來根據我自己對JSCAD能力的了解,和大家分享幾個潛在的應用場景。
1. 3D 打印
由于 JSCAD 支持生成 STL 等 3D 打印常用的文件格式,它成為了 3D 打印領域的理想工具。我們可以使用 JSCAD 設計各種個性化的 3D 打印模型,如玩具、裝飾品、機械零件等。
2. 工業設計
圖片
在工業設計中,參數化設計是非常重要的。JSCAD 的參數化特性使得設計師可以快速創建和修改產品模型,進行各種設計方案的驗證和優化。
3. 教育領域
JSCAD 以 JavaScript 為基礎,對于學習編程和 3D 設計的學生來說是一個很好的工具。通過使用 JSCAD,學生可以在學習編程的同時,直觀地看到代碼生成的 3D 模型,提高學習的興趣和效果。
4. 數據可視化
圖片
JSCAD 不僅可以用于創建實體模型,還可以用于數據可視化。你可以將數據轉換為 3D 模型,通過不同的顏色、形狀和大小來表示數據的不同特征,從而更直觀地展示數據。