工廠要測試生產線,第一件事不是急著量產,而是先準備一份「標準試樣」。今天就來做這件事:用程式產生一台齒輪減速機的 STEP 檔,當作這個系列接下來所有實驗的固定素材。
現成模型的授權常常不清楚,能不能公開轉載是個問號;來源也不固定,你拿到的不一定跟我拿到的是同一份,問題就難以重現。所以這次用程式產生:程式在你手上,跑出來的檔案就跟我的一模一樣。
把它想成一盒貼了標籤的積木,一共 13 塊,放進 4 個小盒子,再收進一個大箱子:
Gearbox(大箱子)
├─ Housing(機殼組) Base_Plate · Housing_Body · Housing_Cover
├─ Input_Stage(輸入端) ROT_Input_Shaft · Input_Gear · 前後軸承各一
├─ Output_Stage(輸出端)ROT_Output_Shaft · Output_Gear · 前後軸承各一
└─ Drive(驅動端) Motor_Flange · Motor
輸入齒輪 16 齒、輸出齒輪 32 齒,減速比 2:1。每塊積木都有名字和顏色。(專業一點說:這種「大箱子裡有小盒子、小盒子裡有積木」的樹狀關係叫組件階層,也就是 Day 03 講過的零件樹。)
接下來會出現幾個工具名字,先分清楚它們的層級。用「汽車」來想:
疊起來是這樣:
CadQuery ← 好用的高階寫法(原本想用,後面會說為什麼沒用)
↓
OCP ← Python 接頭(我們實際用的)
↓
OCCT ← C++ 幾何引擎,真正做運算的地方(XCAF 是其中一個模組)
Day 05 講過,STEP 除了形狀,還能存名字、顏色、組件階層,但要用對方法才會存。有些匯出方式只輸出形狀,名字就丟了。
這裡用的是 OCCT 裡的 XCAF 模組。你可以把 XCAF 想成一本「附標籤的積木目錄」:先建一個空的大箱子,一塊一塊積木做好、貼上名字和顏色,再照階層一層層放進小盒子,最後整本目錄輸出成 STEP。
ROT_兩根軸的名字開頭是 ROT_(rotate 的縮寫)。要注意,Base_Plate、Housing_Body 這些零件名稱,跟 ROT_ 這個前綴,都是我們自己取的、自己訂的,不是 STEP 或 CAD 軟體的標準用語。STEP 只是忠實地把這些文字存起來,並不知道它們代表什麼。
ROT_ 是一個命名暗號:之後我們自己的程式看到這個開頭,就知道「這根會轉」,可以自動產生旋轉動畫。前面 Day 03 說「規則要寫在資料裡」,這也是一個例子。
包裹寄出前要對貨單。程式寫完 STEP 之後,會用 XCAF 再讀一次,檢查 13 個零件的名字、顏色、階層是不是都還在。只要有一個對不上,就視為失敗。這樣後續實驗出問題時,就能排除「試樣本身有毛病」這個可能。
原本想用上面圖裡最上層、最好寫的 CadQuery 來畫,但它要求的 OCCT 版本比我們選用的舊,硬裝會把引擎整個降版。所以改成直接使用中間那層的 OCP,程式碼多一點,功能一樣,而且跟後面「讀取 STEP」的流程用同一套呼叫方式,反而更一致。
另外,齒輪的齒形是簡化過的梯形,不是工程上的漸開線。展示夠用,也剛好說明「展示用模型」與「製造用模型」是兩回事。
下一篇,就拿這份試樣,轉出第一顆能在網頁上看的 GLB。