CadQuery 庫詳細介紹??
??CadQuery?? 是一個基于 ??Python?? 的 ??參數化 3D CAD 建模?? 庫,允許用戶通過編寫代碼(而不是傳統 GUI)來創建精確的 ??3D 模型??。它特別適用于 ??自動化設計、機械工程、3D 打印?? 等場景,提供強大的 ??程序化建模?? 能力。
??1. CadQuery 的核心特點??
? ??基于 OpenCASCADE(OCCT)??:底層使用工業級幾何引擎,確保高精度建模。
? ??鏈式 API??:類似 jQuery 的語法,代碼簡潔直觀。
? ??參數化設計??:支持變量、循環、條件判斷,便于快速迭代設計。
? ??支持多種導出格式??:STL、STEP、OBJ、SVG 等,兼容主流 CAD 軟件(如 FreeCAD、SolidWorks)。
? ??與 Python 生態集成??:可結合 NumPy、Matplotlib 等庫進行高級計算和可視化。
??2. 基本概念??
??(1)?Workplane
(工作平面)??
CadQuery 的所有建模操作都從?Workplane
?開始,它定義了初始坐標系(如?"XY"
、"XZ"
、"YZ"
)。
python
import cadquery as cq# 在 XY 平面上創建一個矩形
result = cq.Workplane("XY").rect(10, 20)
??(2) 基本幾何體??
box()
:立方體cylinder()
:圓柱sphere()
:球體lineTo()
?/?polyline()
:繪制 2D 輪廓并拉伸
python
# 創建一個 10x20x5 的長方體
box = cq.Workplane("XY").box(10, 20, 5)
??(3) 布爾運算??
cut()
:差集(挖孔)union()
:并集(合并)intersect()
:交集
python
# 在立方體上挖一個圓柱孔
result = box.faces(">Z").circle(3).cutThruAll()
??(4) 倒角 & 圓角??
fillet()
:圓角(對邊進行平滑處理)chamfer()
:倒角(斜切邊)
python
# 對立方體的所有垂直邊進行圓角處理
result = box.edges("|Z").fillet(1.0)
??(5) 拉伸 & 旋轉??
extrude()
:拉伸 2D 輪廓revolve()
:旋轉 2D 輪廓
python
# 繪制一個圓并拉伸成圓柱
result = cq.Workplane("XY").circle(5).extrude(10)
??3. 進階功能??
??(1) 參數化建模??
python
length = 30
width = 20
height = 10# 使用變量定義模型
box = cq.Workplane("XY").box(length, width, height)
??(2) 復雜輪廓(2D 草圖)??
python
# 繪制一個 L 形輪廓并拉伸
result = (cq.Workplane("XY").moveTo(0, 0).lineTo(10, 0).lineTo(10, 5).lineTo(5, 5).lineTo(5, 10).lineTo(0, 10).close().extrude(2)
)
??(3) 陣列(Pattern)??
python
# 在立方體上打 4 個孔
result = (cq.Workplane("XY").box(20, 20, 5).faces(">Z").rarray(8, 8, 2, 2) # (x間距, y間距, x數量, y數量).circle(2).cutThruAll()
)
??(4) 導出模型??
python
# 導出為 STL(3D 打印)
cq.exporters.export(result, "model.stl")# 導出為 STEP(CAD 軟件兼容)
cq.exporters.export(result, "model.step")
??4. CadQuery vs. OpenSCAD??
??特性?? | ??CadQuery?? | ??OpenSCAD?? |
---|---|---|
??語法?? | Python(更靈活) | 專用語言(較局限) |
??建模方式?? | 鏈式 API | 函數式編程 |
??幾何引擎?? | OpenCASCADE(OCCT) | CGAL |
??學習曲線?? | 中等(需 Python 基礎) | 較陡(新語法) |
??社區支持?? | 活躍(GitHub、論壇) | 較成熟 |
??適用場景?? | 機械設計、參數化建模 | 簡單 3D 打印模型 |
??5. 適用場景??
- ??機械零件設計??(齒輪、支架、外殼)
- ??3D 打印模型優化??(參數化調整尺寸)
- ??自動化建模??(批量生成變體模型)
- ??教育??(學習 CAD 與編程結合)
??6. 學習資源??
- ??官方文檔??:CadQuery GitHub
- ??示例庫??:CadQuery Examples
- ??FreeCAD 插件??:可在 FreeCAD 中使用 CadQuery 腳本
??總結??
CadQuery 是 ??程序化 CAD 建模?? 的強大工具,適合 ??工程師、設計師、開發者?? 使用 Python 創建精確的 3D 模型。如果你熟悉 Python 并希望擺脫傳統 CAD 軟件的 GUI 限制,CadQuery 是一個絕佳選擇! 🚀
??試試這個簡單示例:??
python
import cadquery as cq# 創建一個帶孔的 L 形支架
model = (cq.Workplane("XY").box(20, 20, 5) # 底座.faces(">Z").rect(15, 15).extrude(10) # 凸臺.edges("|Z").fillet(2) # 倒角.faces(">Z").hole(5) # 鉆孔
)# 導出 STL 文件
cq.exporters.export(model, "bracket.stl")
運行后,你會得到一個可用于 3D 打印的模型!