RPTU 基準件 4–10:七件由 AI 代理設定並核對的三軸加工¶
一個 AI 代理 (agent) 拿到七個公開的測試件——每件有一個 CAD 模型、一支 CAM 後處理出來的 NC 程式、一張渲染圖和一行說明——透過 HiNC 的 Web API 把它們建成 HiNC 仿真專案。每個零件它都重播兩次,而且讓 HiNC 的結果、而不是它自己的看法,來決定一個設定對不對。一路上,HiNC 指出了交付的程式哪裡切不出設計、負載落在哪裡,並證實較短的刀具切出來的結果相同。代理沒有切任何東西:資料集的作者實際加工過這些零件,但本頁沒有用到他們的任何結果。

零件 7,HiNC 3.2.41,停在最後一道精修輪廓 Z−11 那一刀的最後一個單節(40,014 行中的第 39,999 行)。綠色表示與設計相差在 ±0.1 mm 以內;藍色標出超出這個範圍而留下的材料——島的三個內凹凹灣,其尖端比 Ø6 刀具的半徑還窄。
案例¶
這些零件是 Benchmark Dataset of 10 Multi-Feature Models for Single-Setup 3-Axis Milling(Zenodo,CC BY 4.0)的第 4 到第 10 件;紀錄的聯絡人在 RPTU Kaiserslautern-Landau,本系列頁面上的「RPTU」即出自這裡——紀錄並沒有給作者的所屬機構。零件 1–3 由一個夥伴代理以同樣方式建成,自成一頁。資料集為每個零件發佈三個檔案:
- 完成件的 STEP 模型;
- 一支 NC 程式(
.ngc),檔頭寫的是某家 CAM 廠商的通用三軸機台定義,並帶有刀具註解T1 D=6. CR=0.與最深深度(ZMIN); - 零件的渲染圖。
它的說明另外寫明:每個零件都用一支直徑至多 6 mm 的端銑刀、不重新裝夾,從一塊 80 × 80 × 50 mm 的料切出;並為每個零件列出一行特徵。
它沒有給的:程式原點在料塊的哪裡、程式是為哪一種控制器後處理的、工件材料、夾具,以及刀具除了直徑與角半徑以外的一切——刃長、刃數、各種角度、刀把、伸出量。機台只描述為龍門式三軸,而 NC 檔頭寫明三個軸都在主軸頭上。
| 零件 | 特徵(讀自資料集) | NC 行數 | 最深切削(讀取) |
|---|---|---|---|
| 4 | 4 holes, surrounding step (circular) | 3,676 | Z−8 |
| 5 | 4 holes, surrounding step (semi-circular/semi-rectangular) | 2,509 | Z−7 |
| 6 | 4 holes, surrounding step (rectangular), circular pocket | 6,611 | Z−7 |
| 7 | Square pocket with negative freeform | 40,014 | Z−11 |
| 8 | Multiple inclined surrounding steps (circular and rectangular) | 11,894 | Z−17 |
| 9 | 4 holes, circular pocket, multiple negative freeforms | 71,377 | Z−9 |
| 10 | 4 holes, multiple inclined surrounding steps (circular and rectangular), multiple pockets (circular and rectangular), negative freeform | 14,214 | Z−19 |

資料集渲染的零件 4–10,每個零件一個 .png 檔。每面壁都是垂直的,每個底面都是平的(難題 4)。
代理建了什麼¶
每個零件一個專案,全部透過 HiNC 的 Web API、依專案建構的順序建成;每個值寫入後都讀回核對,最後存檔並重新載入。最後一欄說明每個值的出處。
| 項目 | 設定 | 出處 |
|---|---|---|
| NC 程式 | 與發佈時逐位元相同,原樣播放 | 讀取 |
| 目標模型 | STEP 轉成 STL 並移入程式座標:零件 4、7、9 為 (40.5, 40.5, −53);5、6、10 為 (41, 41, −53);8 為 (28.534, 40.962, −51.056) | 由程式自身的運動推得(難題 1、2) |
| 毛胚 | 一個與模型側面和底面齊平、高出模型頂面 1 mm 的方塊:80 × 80 × 51 mm(零件 4、8、9)或 80 × 80 × 53 mm(5、6、7、10) | 推得;寫明的 50 mm 放不下(難題 3) |
| 程式原點 | G54 在毛胚頂面,位於料塊左前角外側 0.5 或 1 mm,如上面的平移所示 |
推得 |
| 控制器 | HiNC 的 Fanuc 執行器 | 自選;沒有 LinuxCNC 執行器(難題 5) |
| 機台 | 一台不帶任何形狀的通用三軸機,工作臺走 X 與 Y、主軸頭走 Z;行程 X −800..0、Y −500..0、Z −500..0。公開資料的機台三個軸都在主軸頭上;對三軸程式而言,刀具相對於零件的路徑是一樣的 | 自選 |
| 夾具 | 毛胚底下一塊 160 × 120 × 20 mm 的板 | 自選 |
| 材料 | 取自 HiNC 資源庫的鋁合金 6061-T6 及其切削參數 | 自選;資料集沒有指名材料 |
| 刀具 | Ø6 平端銑刀;3 刃、刃長 13 mm、全長 57 mm、螺旋角 45°、前角 12°、後角 10°、碳化鎢 | 直徑與角半徑為讀取;其餘為自選 |
| 刀把 | 熱縮刀把:鼻端 Ø21,在 55 mm 內漸擴到 Ø30,本體 Ø44,法蘭 Ø63.5;量規長度 80 mm | 自選 |
| 伸出量 | 20 mm(零件 4–7、9)與 25 mm(8、10):刃長與最深切削兩者取大,加 5 mm,再進位到 5 mm 的倍數 | 依規則推得(難題 6、7) |
| 主軸 | 一支通用的 24,000 rpm、7.5 kW 主軸 | 自選;程式最高轉速 18,000 rpm(難題 8) |
| 任務 | 一支程式;碰撞檢查開啟;最後做幾何差異;先用 1 mm 加工解析度粗跑,再用 0.25 mm 驗收 | 自選 |
| 通過標準 | 步數、接觸到毛胚、每一行都有執行、幾何差異建出來、每則訊息都有交代 | 自選,在第一次執行之前 |
逐件列出設計網格與刀具(mm):
| 零件 | 設計網格(封閉) | 伸出量、刀長 | 最深切削 | 最深切削處刀把鼻端高出毛胚頂面 |
|---|---|---|---|---|
| 4 | 1,892 個三角形 | 20、100 | Z−8 | 12 |
| 5 | 1,532 個三角形 | 20、100 | Z−7 | 13 |
| 6 | 1,856 個三角形 | 20、100 | Z−7 | 13 |
| 7 | 5,522 個三角形 | 20、100 | Z−11 | 9 |
| 8 | 712 個三角形 | 25、105 | Z−17 | 8 |
| 9 | 28,544 個三角形 | 20、100 | Z−9 | 11 |
| 10 | 4,344 個三角形 | 25、105 | Z−19 | 6 |
代理怎麼管理這件工作¶
- 通過標準在執行之前就寫下來。 一次重播只有憑從 HiNC 讀回的證據才算通過:一個步數、「接觸到毛胚」旗標為 1、每一行 NC 都有執行、幾何差異建出來,以及一份沒有任何未解釋項目的訊息清單。一個小檢查程式對每一次執行套用這些規則,所以一次「跑完了卻什麼也沒證明」的執行不可能通過。
- 先粗後細,先小後大。 每個零件先用 1 mm 加工解析度跑,再用 0.25 mm。兩支最大的程式(零件 7 與 9)先只播放前兩道工序的節錄,證明設定無誤之後,才把時間與記憶體投入整支程式。
- 執行之前先估算。 步數估為切削時間 × 主軸轉速,記憶體以每步約 5 KB 計(記憶體規劃)。各次執行一次一個,送到一台 32 執行緒的伺服器。
- 十個零件一套設定。 建置腳本取自做零件 1–3 的夥伴代理,只做了參數化,所以兩批共用每一個與零件無關的選擇;方言的處理方式與刀具規則出自夥伴代理,本代理在開始建置之前先跟它確認過。
- 對抗式審查。 每個零件的書面指示都由被要求去駁倒它的審查代理逐條核對——兩輪、每輪七個審查者——本頁也另由一個審查者核對。
- 盲建。 一個夥伴代理只拿到共用的建案指南與零件 10 的資料夾——沒有腳本、沒有筆記——重建了這個專案。
- 共用一台伺服器。 一個 HiNC 服務對所有連上它的人只開一個專案。本代理與三個夥伴代理同時在做實作案例,各用各的服務執行個體,並互相告知。
- 人在哪裡介入。
- 負責人為實作案例訂下的常設規則——每把刀都裝在合乎實際的刀把裡,伸出量取剛好夠用的最短——決定了刀把與伸出量規則。
- 負責人指定了代理該用的服務執行個體;當代理自身的規則拒絕從部署檔讀取帳號時,負責人給了它一個帳號(難題 19)。
- 負責人改了實作案例的用途:從給學生的建案指示,變成這份工作紀錄。代理隨後從 HiNC 自己的結果量出零件 7 的殘料,並拍了本頁的圖。
難題¶
1. 程式原點在哪裡?¶
- 情況。 資料集沒有任何地方寫明程式的
G54在哪裡。STEP 模型以自己的原點為中心:X 與 Y 從 −40 到 40,頂面在 Z 52(零件 8 是例外:X 從 −27.534 到 52.466,頂面在 Z 50.056)。 - 風險。 用猜的原點會移動每一刀。仿真照樣會跑,然後幾何差異會把設定錯誤怪到程式頭上。
- 怎麼發現。 代理第一次的猜測——依對稱平移 40——與程式中孔的位置對不上。
- 解法。 從程式的運動中讀出原點。Z 方面,模型的每一個底面都與程式切到的某個深度完全吻合,而模型頂面正好落在面銑的深度 Z−1。X 與 Y 方面,Ø10 的孔是 Ø6 刀具以半徑 2 mm 的螺旋銑出來的,所以每個螺旋的圓心都是一個孔軸。只比對單一圓弧會有歧義——一個零件的四個孔可以彼此對調——所以代理拿四個螺旋圓心的平均,去對四個模型孔軸的平均。零件 9 則透過它 Ø75 口袋的精修圓的圓心來比對,零件 7、8、10 透過沿直壁走的精修刀:它們離模型的壁 3 mm(刀具半徑),而且在壁的正確一側。
- 證明解法站得住的證據。 比對是精確的:螺旋圓心落在平移後模型的孔軸上,精修刀離平移後的壁 3.0 mm。自適應清料的峰值等於它的分層深度(難題 12),而零件 7 加工後的工件除了刀具到不了的凹灣尖端之外,處處與設計吻合(難題 14)。
2. 同一個資料集,三種不同的擺放¶
- 情況。 零件 4 的結果是 (40.5, 40.5),與零件 1–3 相同。零件 5 看起來跟零件 4 一樣。
- 風險。 把零件 4 的數字抄給零件 5,會讓零件 5 偏掉半公釐。不會有任何訊息指出這件事;幾何差異只會把它顯示成程式的錯。
- 怎麼發現。 每個零件都做了擺放檢查——零件 4、5、6 用孔的螺旋,零件 9 用口袋的精修圓,零件 7、8、10 用沿直壁的精修刀:零件 5、6、10 的結果是 (41, 41),模型原點不在自身中心的零件 8 是 (28.534, 40.962)。
- 解法。 每個零件帶著自己的平移。
- 證明解法站得住的證據。 零件 4、5、6 的四個孔,螺旋圓心全都與平移後模型的孔軸完全重合;零件 7、8、10 的精修刀離平移後的壁 3.0 mm。
逐件的擺放、它給出的毛胚方塊、位於毛胚底面中心的夾具安裝點,以及 HiNC 的程式原點呼叫隨後寫入的 G54(mm,程式座標):
| 零件 | 比對依據 | 模型平移 | 毛胚 X / Y / Z | 夾具安裝點 | G54 |
|---|---|---|---|---|---|
| 4 | 四個 Ø10 孔:每個螺旋圓心(半徑 2)都落在模型的孔軸上 | (40.5, 40.5, −53) | 0.5..80.5 / 0.5..80.5 / −51..0 | (40.5, 40.5, −51) | (−440.5, −290.5, −529) |
| 5 | 同上,四個孔全對 | (41, 41, −53) | 1..81 / 1..81 / −53..0 | (41, 41, −53) | (−441, −291, −527) |
| 6 | 同上,四個孔全對 | (41, 41, −53) | 1..81 / 1..81 / −53..0 | (41, 41, −53) | (−441, −291, −527) |
| 7 | 沿口袋直壁走的精修刀,離壁 3 mm(刀具半徑);六組比對全部一致 | (40.5, 40.5, −53) | 0.5..80.5 / 0.5..80.5 / −53..0 | (40.5, 40.5, −53) | (−440.5, −290.5, −527) |
| 8 | 沿直壁走的精修刀;模型中心在它自己座標中的 (12.466, 0.038),平移後落在 (41, 41) | (28.534, 40.962, −51.056) | 1..81 / 1..81 / −51..0 | (41, 41, −51) | (−441, −291, −529) |
| 9 | Ø75 口袋精修圓的圓心 | (40.5, 40.5, −53) | 0.5..80.5 / 0.5..80.5 / −51..0 | (40.5, 40.5, −51) | (−440.5, −290.5, −529) |
| 10 | 沿直壁走的精修刀;五組比對全部一致 | (41, 41, −53) | 1..81 / 1..81 / −53..0 | (41, 41, −53) | (−441, −291, −527) |
3. 寫明的毛胚放不下模型¶
- 情況。 資料集寫的是 80 × 80 × 50 mm。程式從頂面面銑掉 1 mm,而那個面以下的模型高 50 或 52 mm。
- 風險。 50 mm 的毛胚會在模型底面之上就結束,HiNC 對加工件與設計的比對就會回報 1–3 mm 的「缺料」,而那是任何程式都不可能留下的。
- 怎麼發現。 第一次計算毛胚方塊時就量了模型的高度。
- 解法。 毛胚與模型的側面和底面齊平、高出模型頂面 1 mm:高 51 或 53 mm。這項更改與它的理由都隨各案例記錄下來。
- 證明解法站得住的證據。 每個零件的面銑都讀到 1.0 mm 的切削,而幾何差異沒有在零件的側面或底面標出任何東西。
4. 「Freeform」——是曲面還是輪廓?¶
- 情況。 資料集在零件 7、9、10 列出「negative freeform」特徵。
- 風險。 為三維自由曲面做規劃,意味著球刀、足以呈現曲率的細網格,以及不同的驗收方式。
- 怎麼發現。 在規劃之前,代理先看了渲染圖,並把模型切片。
- 解法。 壁是垂直的、底面是平的,外形是自由曲線(spline)輪廓;程式裡每一道工序都是平端銑刀的 2D 工序。它們是 2.5D 特徵。網格的問題於是變成:解析度能不能分辨最小的特徵——零件 9 的 Ø4 小銷,在 0.25 mm 下橫跨十六格。
- 證明解法站得住的證據。 以平端銑刀切出的零件 7 島壁,除了刀具到不了的凹灣尖端,以及一處由設計本身的網格造成的痕跡之外,在每個高度都與設計吻合(難題 14)。
5. 為 LinuxCNC 後處理的程式(推論),放在一台 HiNC 沒有的控制器上¶
- 情況。 程式用了
G64 P0.01 Q0.01、G91.1以及.ngc副檔名,這些都指向 LinuxCNC 的後處理器。HiNC 的控制器是 Fanuc、Siemens、Heidenhain、Syntec 與 Mazak。 - 風險。 改寫程式,會讓代理的編輯夾在公開的程式與結果之間。
- 怎麼發現。 在任何建置之前,與做零件 1–3 的夥伴代理一起檢查了方言。
- 解法。 程式在 Fanuc 執行器上原樣播放。
G91.1的意思是「圓心為增量」,而 Fanuc 一律如此;G64 P Q是路徑混接的容差,仿真不建模。HiNC 把兩者都回報為Parsing--Unconsumed,並播放同一條路徑。 - 證明解法站得住的證據。 十四次重播中每一行 NC 都有執行,唯一的警告就是那三則
Parsing--Unconsumed;G18與G19圓弧(在 X-Z 與 Y-Z 平面上)、G53以及%標記都沒有引發任何訊息。
6. 一把只寫了「Ø6」的刀具¶
- 情況。 唯一的刀具資料是
T1 D=6. CR=0.。 - 風險。 沒有刀把、或伸出量超出所需的刀具,仿真時一聲不吭,卻會誤導任何看結果的人。
- 怎麼發現。 負責人為實作案例訂的常設規則。
- 解法。 一支 Ø6、3 刃、刃長 13 mm 的碳化鎢端銑刀,裝在熱縮刀把裡;伸出量等於刃長與最深切削兩者取大,加 5 mm,再進位到 5 mm 的倍數:零件 4–7 與 9 為 20 mm。
- 證明解法站得住的證據。 HiNC 的刀具補正表讀回 80 mm 量規長度加伸出量(100 與 105 mm),兩張圖也都看得到刀把在毛胚上方。
7. 不需要的長刃刀¶
- 情況。 零件 8 與 10 切到 Z−17 與 Z−19。代理把這讀成 16 與 18 mm 高的壁——比 13 mm 的刃長還長——於是給這兩個零件配了一支長刃刀(刃長 24 mm),伸出量 30 mm。兩次重播都通過了。
- 風險。 比所需長 5 mm 的刀具剛性較差,而本頁原本會推薦它。
- 怎麼發現。 一個審查代理在模型上量了壁:壁是分段的,零件 8 最高的單段壁是 8 mm(Z−9 到 Z−17),零件 10 是 10 mm(Z−9 到 Z−19)。
- 解法。 兩個零件都改用標準刀、伸出量 25 mm 重建並重播。
- 證明解法站得住的證據。 步數多了 8 步、仿真時間多了 0.03 s;深度、力與訊息都沒有變;最後精修輪廓的深度峰值(8 與 10 mm)都在 13 mm 刃長之內;而在最深處,刀把鼻端高出毛胚頂面 8 mm(零件 8)與 6 mm(零件 10)。

零件 8,HiNC 3.2.41,停在最後一道精修輪廓的最後一個單節(Z−17)。
8. 太慢的主軸¶
- 情況。 程式以 18,000 rpm 運轉(零件 4、5、6、9 的銑孔為 16,000);HiNC 資源庫裡的主軸最高只到 12,000。
- 風險。 低於程式轉速的主軸,會讓功率與扭矩的數字失去意義。
- 怎麼發現。 選主軸的時候。
- 解法。 為實作案例定義了一支通用的 24,000 rpm 主軸,載入每個專案。
- 證明解法站得住的證據。 每個專案都依名稱讀回這支主軸,它的 24,000 rpm 高於程式呼叫的每一個轉速,也沒有任何一次執行回報缺少物理輸入。
9. 需要多少記憶體、多少時間?¶
- 情況。 程式從 63 kB 到 1.8 MB 不等。
- 風險。 記憶體不足的仿真會在接近結尾、花掉大部分時間之後才停下來。
- 怎麼發現。 在第一次執行之前就規劃好。
- 解法。 依零件 9 的路徑、進給與主軸轉速,估出約 408,000 步、2 GB 的步結果。零件 7 與 9 先用節錄核對。
- 證明解法站得住的證據。 量得的步數落在估算值的 −5 % 到 +7 % 之間(零件 9:435,627),每一次執行都跑完了。
每個零件的記憶體,由量得的步數算出:每步約 5 KB,加上約 1 GB 的基底,以及在 0.25 mm 下為被切表面網格預留、假設的 0.3 GB(事先做的步數估算,紀錄保留了兩個:零件 4 約 137,000 步,零件 9 約 408,000 步):
| 零件 | 進給路徑切削時間 | 步數 | 步結果 | 估計峰值 |
|---|---|---|---|---|
| 4 | 7.4 min | 131,253 | 0.66 GB | 2.0 GB |
| 5 | 6.8 min | 120,610 | 0.60 GB | 1.9 GB |
| 6 | 9.9 min | 176,026 | 0.88 GB | 2.2 GB |
| 7 | 16.3 min | 316,161 | 1.58 GB | 2.9 GB |
| 8 | 10.1 min | 192,851 | 0.96 GB | 2.3 GB |
| 9 | 22.3 min | 435,627 | 2.18 GB | 3.5 GB |
| 10 | 12.7 min | 239,526 | 1.20 GB | 2.5 GB |
兩個節錄都在 1 mm 下播放:程式從頭到第三道工序的註解之前為止,再接一行標明截斷處的註解,以及 M5、G53 G0 Z0.、M30、%;兩者都接觸到毛胚,也只引發那三則預期的警告:
| 零件 | 播放的工序 | 行數 | 步數 | 深度峰值 | 力峰值 |
|---|---|---|---|---|---|
| 7 | 面銑 PLANEN3 與開口袋的 2D-TASCHE2 |
717 | 98,852 | 2.0 mm | 134 N,在開口袋;面銑 54 N |
| 9 | 面銑 PLANEN2 與四角孔的 2D-TASCHE1 |
736 | 107,776 | 4.0 mm,在銑孔 | 54 N,在面銑;銑孔 51 N |
10. 「Finished」不等於「通過」¶
- 情況。 一次從未裝上刀具的重播不會產生任何步,照樣以「Finished」結束;播放結束時的
Play-Touch--None警告要有步才會發出,所以往往沒有任何訊息提到這件事。 - 風險。 驗收了一次什麼都沒切的執行。
- 怎麼發現。 重播驗收的工作流程已經說明了這一點。
- 解法。 每一次執行都只憑上面的通過標準、從 HiNC 讀回的證據來驗收。
- 證明解法站得住的證據。 檢查程式修正之後(難題 11),十四次執行全部通過。
11. 一個為了錯的理由而失敗的檢查¶
- 情況。 零件 7 第一次完整重播沒有通過代理自己的檢查:它預期四則
Parsing--Unconsumed警告——G91.1一則、每一行G64各一則——HiNC 卻回報三則。 - 風險。 追查一個並不存在的建置錯誤,或把檢查放寬到什麼也證明不了。
- 怎麼發現。 檢查程式在訊息數上失敗,其他每一項檢查都通過。
- 解法。 代理在怪罪建置之前先讀了訊息。HiNC 會把一則警告第一次出現時單獨列出,其後所有的重複則併成最後一行上的一則
[repeated 3x in this run, first at Sn=16],其次數包括第一次。零件 1–6 有一或兩行G64,兩種規則算出的次數相同。檢查改正為:從兩行G64起,每次重播三則警告(只有一行的零件 1 回報兩則)。 - 證明解法站得住的證據。 零件 8、9、10 分別有 7、5、9 行
G64,每件都恰好回報三則,最後一則分別讀作[repeated 7x …]、[repeated 5x …]與[repeated 9x …]。
逐件列出(G91.1 都回報在第 8 行、第一個 G64 在第 16 行;第三則落在最後一行 G64 上,每次播放另外只有一則 Sys-Init--FileLines 說明):
| 零件 | G64 所在行 |
第三則 |
|---|---|---|
| 4 | 2 行:16、308 | 第 308 行,[repeated 2x in this run, first at Sn=16] |
| 5 | 2 行:16、315 | 第 315 行,[repeated 2x …] |
| 6 | 2 行:16、315 | 第 315 行,[repeated 2x …] |
| 7 | 3 行:16、308、38,286 | 第 38,286 行,[repeated 3x …] |
| 8 | 7 行:16、315、3,528、3,545、10,711、10,752、11,834 | 第 11,834 行,[repeated 7x …] |
| 9 | 5 行:16、309、734、906、68,036 | 第 68,036 行,[repeated 5x …] |
| 10 | 9 行:16、315、4,147、4,168、5,671、6,796、12,581、12,610、14,154 | 第 14,154 行,[repeated 9x …] |
12. 一個看起來像基準錯誤的深度¶
- 情況。 零件 5 在 0.25 mm 下回報的切削深度峰值是 5.89 mm。程式以 2 mm 分層清料,而同一個零件在 1 mm 下讀到 2.0 mm。
- 風險。 Z 原點錯了,看起來正是這個樣子。
- 怎麼發現。 和每一次執行一樣,拿峰值與程式的分層深度比較。
- 解法。 把執行按工序拆開:每道工序的第一行 NC 對應到它的第一個仿真步,再逐一讀取各步段的峰值。5.89 mm 來自銑孔,那裡的力峰值是 20 N,而清料是 107 N。零件 4 的孔——同樣的螺旋、深 7 mm——在同樣的解析度下只讀到 0.69 mm,零件 5 的孔在 1 mm 下讀到 1.44 mm。所以這不是那個深度的切削;可能的解讀是刀具側面貼著已完成的孔壁,細網格把沿著壁高的接觸都算了進去(推論,未逐步追查)。深度基準改取自適應清料工序。
- 證明解法站得住的證據。 在每個零件、兩種解析度下,被指定為基準的自適應清料峰值都是 2 mm;唯一例外是以 1.5 mm 分層的零件 9,在 0.25 mm 下讀 1.5 mm、在 1 mm 下讀 2.0 mm。
13. 一次吃下整面壁的精修刀¶
- 情況。 零件 7–10 的最後一道精修輪廓讀到的深度比任何分層都深:5、8、8 與 10 mm。
- 風險。 誤以為是基準錯誤,或沒注意到它承受的負載。
- 怎麼發現。 在難題 12 的逐工序峰值裡。
- 解法。 零件 8 與 10 的最後精修輪廓是底部的一刀:在上方台階與 78 mm 方塊齊平的那兩側,方塊的壁一直升到那個台階,這一刀一次碰上全部 8 或 10 mm。零件 7 與 9 則是兩刀(Z−6 再 Z−11、Z−6 再 Z−9),下面那一刀碰上第一刀以下 5 mm 的島壁(零件 7),或整面 8 mm 的口袋壁(零件 9)(由模型與程式推論)。
- 證明解法站得住的證據。 每個峰值都等於那一刀所剩下的壁高,而且在 1 mm 與 0.25 mm 下相同。
14. 幾何差異只有圖,沒有數字¶
- 情況。 幾何差異會為加工件上色,但 Web API 沒有辦法讀出它的數值。
- 風險。 只憑幾何就宣稱「島的凹灣尖端留有材料」,而 HiNC 並沒有顯示這件事。
- 怎麼發現。 這個說法最初是由模型與刀具半徑寫出來的;一個審查者把它標為推論。
- 解法。 代理在 0.25 mm 重播之後,把 HiNC 加工後的工件匯出成 STL,逐層切片與設計比對。
- 證明解法站得住的證據。 在島的每一個高度(Z−5.5 到 Z−10.9)都有三處留料,平面上約 2.0、1.8 與 0.6 mm²,最厚約 0.7、0.65 與 0.28 mm——正是幾何預測的三個凹灣尖端——而且沒有任何過切。第四處較淡的痕跡(至多 0.2 mm)在 X59 Y52 附近,來自設計 STL 本身:它有一個三角面陷進了真實的壁面。畫面上的幾何差異標出了三個凹灣尖端(見上方的圖)。
15. 截圖顯示的是執行結束時的刀具位置¶
- 情況。 在網頁用戶端選取一步只會將它標示出來,並不會移動刀具;三維視圖顯示的是重播結束時的刀具,已退到零件上方。
- 風險。 一張沒有刀具在工作、或看不到刀把的圖。
- 怎麼發現。 最初幾次擷取時,刀具都遠在零件上方。
- 解法。 每張圖都由代理把存好的專案播放到選定的 NC 行為止(程式到那一行為止的各行,再加上
M30),擷取畫面後重新載入專案,不存任何東西。 - 證明解法站得住的證據。 兩張圖都顯示刀具停在選定的行上;存好的專案沒有改變。
16. 代理自己的書面陳述¶
- 情況。 每個零件的指示都由代理依自己的量測寫成。
- 風險。 一句沒人核對過的貌似合理的話,會變成公開的事實。
- 怎麼發現。 由對抗式審查的各輪。
- 解法。 審查抓到的包括:一座寫成 55 × 45 mm、實測 49 × 52 mm 的島;零件 8 與 10 的高壁放錯了邊;從零件 8 抄到零件 10 的 3° 角,而零件 10 的邊實際上是 2.2° 與 2.3°;一個用直插下刀也會得到的數字去「證明」螺旋下刀的檢查;紀錄並未寫明的作者所屬機構;以及一個結論正確、理由卻錯的授權論證。全部都已更正。
- 證明解法站得住的證據。 第一輪核對了 839 條陳述、退回 76 條;修正之後,第二輪核對了 580 條、退回 32 條較小的問題,也都已修正;盲建隨後的每一個數字都吻合。
17. 盲建發現了什麼¶
- 情況。 一個夥伴代理只憑共用指南與零件的資料夾重建了零件 10。
- 風險。 只有寫它的代理才照得出來的指示。
- 怎麼發現。 這正是盲建的目的。
- 解法。 它回報了兩個陷阱,都已補進共用指南:打錯的 GET 路由會回應「200 OK」加上網頁用戶端的頁面,而不是錯誤(打錯的 POST 路由則回 405);以及播放過後讀回的清單條目,是那次播放留下的執行期數值:運動解析度條目讀到的是播放留下的每轉進給,以及無限大的旋轉步距,JSON 以字串
"Infinity"傳回,而專案存下的只有這個條目的Scale與MinLinearResolution_mm。 - 證明解法站得住的證據。 它的數字在每一列都與參考值吻合:步數、執行的行數、逐工序的深度、仿真時間、程式原點與刀長。
18. 與其他代理共用伺服器與儲存庫¶
- 情況。 數個夥伴代理同時在建實作案例,共用一台伺服器與共用的工作副本。
- 風險。 一個代理載入或重設專案,會停掉另一個代理的執行;一個代理的提交把另一個代理的檔案一起掃進去;提交時換行被改寫,公開檔案就不再符合資料集公布的檢查碼。
- 怎麼發現。 一個夥伴代理的執行被不明的用戶端中途關閉,這個問題問到了本代理;共用的工作副本預設會轉換換行。
- 解法。 每個代理各用自己的服務執行個體並公告出來;本代理的用戶端固定連自己的那一個。提交只加入明確的路徑。來源檔案標為「不轉換換行」。當別人留著沒關的專案擋路時,代理用完之後把它重新開回去。
- 證明解法站得住的證據。 本代理的執行沒有一次被中斷,而提交的來源檔案符合資料集公布的檢查碼。
19. 代理無法自行讀取的登入¶
- 情況。 服務需要登入。
- 風險。 從部署檔取得帳密,會繞過負責人。
- 怎麼發現。 代理自身的安全規則拒絕讀取它們。
- 解法。 代理向負責人詢問,負責人給了它一個帳號。
- 證明解法站得住的證據。 從那之後的每一次呼叫都只用那一個帳號。
結果與效益¶
十四次重播的數字在 HiNC 3.2.45 上量得;零件 7 的量測與兩張圖在 3.2.41 上做成,建案時播放的節錄(難題 9)與長刃刀執行(難題 7)則在 3.2.39 上。
| 零件 | 步數 | 仿真時間* | 重播時間 1 / 0.25 mm | 深度峰值 1 / 0.25 mm | 深度基準(清料) |
|---|---|---|---|---|---|
| 4 | 131,253 | 7.6 min | 25 / 70 s | 2.0 / 2.0 mm | 2 mm |
| 5 | 120,610 | 7.0 min | 25 / 60 s | 2.0 / 5.89 mm(銑孔,難題 12) | 2 mm |
| 6 | 176,026 | 10.0 min | 35 / 95 s | 2.0 / 5.89 mm(銑孔) | 2 mm |
| 7 | 316,161 | 16.5 min | 65 / 135 s | 5.0 / 5.0 mm(最後精修輪廓) | 2 mm |
| 8 | 192,851 | 10.4 min | 35 / 90 s | 8.0 / 8.0 mm(最後精修輪廓) | 2 mm |
| 9 | 435,627 | 22.6 min | 85 / 165 s | 8.0 / 8.0 mm(最後精修輪廓) | 0.25 mm 下為 1.5 mm |
| 10 | 239,526 | 13.0 min | 40 / 100 s | 10.0 / 10.0 mm(最後精修輪廓) | 2 mm |
*程式路徑依其進給率加上快速移動所得的仿真時間;沒有加速度模型。
十個零件的仿真加工時間與步數;零件 4–10 的數值都在上表,零件 1–3 的在它們自己的那一頁。
十四次重播全部通過:有步數、接觸到毛胚、每一行 NC 都有執行、幾何差異建出來,而且只有那三則 Parsing--Unconsumed 警告。HiNC 的碰撞檢查涵蓋夾具,也涵蓋刀把與刀柄對毛胚,在每一次重播中都沒有回報任何接觸;機台沒有幾何,所以它那一側沒有檢查任何東西。
逐工序列出代理讀到的峰值:工序開頭註解所在的行、該工序的步數(兩種解析度相同),以及這些步的峰值,寫成 1 mm / 0.25 mm,兩次相同時只寫一個:
| 零件 | 工序(行) | 切什麼 | 步數 | 深度峰值(mm) | 力峰值(N) |
|---|---|---|---|---|---|
| 4 | PLANEN2(11) |
頂面,面銑掉 1 mm,到 Z−1 | 47,002 | 1.0 | 54 |
| 4 | 2D ADAPTIVE2(307) |
Ø70 圓台四周,以 2 mm 分層切到 Z−3 與 Z−5,整道工序都後處理成短 G1 線段(3,107 行),其中圓台的壁每層約 370 段 |
30,127 | 2.0(基準) | 107 |
| 4 | 2D-TASCHE1(3,414) |
四個 Ø10 孔,螺旋每圈下降 0.44 mm,S16000 | 54,124 | 1.44 / 0.69 | 45 / 20 |
| 5 | PLANEN2(11) |
頂面,面銑掉 1 mm,到 Z−1 | 48,514 | 1.0 | 54 |
| 5 | 2D ADAPTIVE2(314) |
D 形凸台四周,2 mm 分層 | 23,483 | 2.0(基準) | 107 |
| 5 | 2D-TASCHE1(2,267) |
四個 Ø10 孔,螺旋銑,S16000 | 48,613 | 1.44 / 5.89 | 45 / 20 |
| 6 | PLANEN2(11) |
頂面,面銑掉 1 mm,到 Z−1 | 48,514 | 1.0 | 54 |
| 6 | 2D ADAPTIVE3(314) |
凸起方台的四周,切到 Z−5 | 16,935 | 2.0(基準) | 102 |
| 6 | 2D ADAPTIVE4(978) |
Ø60 口袋,三層各 2 mm,每層以螺旋下刀 | 61,952 | 2.0(基準) | 111 / 107 |
| 6 | 2D-TASCHE2(6,369) |
四個 Ø10 孔,螺旋銑,S16000 | 48,625 | 1.44 / 5.89 | 45 / 20 |
| 7 | PLANEN3(11) |
頂面,面銑掉 1 mm,到 Z−1 | 47,000 | 1.0 | 54 |
| 7 | 2D-TASCHE2(307) |
口袋,切到島的頂面,Z−3 與 Z−5 | 51,543 | 2.0(基準) | 134 |
| 7 | 2D ADAPTIVE2(713) |
島的四周,五層各 2 mm,Z−3 到 Z−11 | 201,830 | 2.0(基準) | 114 / 111 |
| 7 | 2D-KONTUR3(38,285) |
口袋壁從面銑後的頂面到島頂的一段,在 Z−5 一刀 | 2,836 | 4.0 | 223 / 218 |
| 7 | 2D-KONTUR2(38,305) |
口袋壁與島,Z−6 與 Z−11 兩刀 | 12,952 | 5.0 | 290 / 281 |
| 8 | PLANEN2(11) |
頂面,面銑掉 1 mm,到 Z−1 | 48,512 | 1.0 | 54 |
| 8 | 2D ADAPTIVE6(314) |
Ø54 圓台四周,Z−1 到 Z−5 | 46,116 | 2.0(基準) | 107 |
| 8 | 2D-KONTUR1(3,527) |
圓台的壁 | 2,285 | 4.0 | 167 / 138 |
| 8 | 2D ADAPTIVE7(3,544) |
轉 30° 的 54 mm 方台四周,切到 Z−9 | 65,463 | 2.0(基準) | 111 / 107 |
| 8 | 2D-KONTUR2(10,710) |
轉過的方台的壁 | 2,931 | 4.0 | 108 / 82 |
| 8 | 2D ADAPTIVE9(10,751) |
1 mm 的邊框,切到 Z−17,先於它上方的台階 | 12,762 | 2.0(基準) | 84 / 69 |
| 8 | 2D ADAPTIVE8(11,312) |
斜邊台階四周,切到 Z−13 | 7,782 | 2.0(基準) | 107 / 102 |
| 8 | 2D-KONTUR5(11,833) |
斜邊台階的前、左兩邊 | 2,444 | 4.0 | 139 / 102 |
| 8 | 2D-KONTUR4(11,868) |
78 mm 方塊的壁,在 Z−17;後、右兩側斜邊台階與它齊平,壁高 8 mm | 4,556 | 8.0 | 192 / 156 |
| 9 | PLANEN2(11) |
頂面,面銑掉 1 mm,到 Z−1 | 47,002 | 1.0 | 54 |
| 9 | 2D-TASCHE1(307) |
四角的孔,螺旋每次下降 0.58 mm,S16000 | 60,498 | 4.0 / 3.5 | 51 / 23 |
| 9 | 2D-KONTUR3(732) |
孔壁,Z−5 與 Z−7 兩刀,轉回 S18000 | 5,996 | 4.0 | 210 / 189 |
| 9 | 2D-TASCHE2(905) |
口袋,切到島的頂面 | 17,699 | 2.0 | 115 |
| 9 | 2D ADAPTIVE8(960) |
島與小銷的四周,以 1.5 mm 分層切到 Z−9 | 278,447 | 2.0 / 1.5(基準) | 114 / 93 |
| 9 | 2D-KONTUR1(68,035) |
口袋壁、島與小銷,Z−6 與 Z−9 兩刀 | 25,985 | 8.0 | 210 / 165 |
| 10 | PLANEN2(11) |
頂面,面銑掉 1 mm,到 Z−1 | 48,511 | 1.0 | 54 |
| 10 | 2D ADAPTIVE3(314) |
方形口袋,切到 Z−5 | 46,486 | 2.0(基準) | 111 / 107 |
| 10 | 2D-KONTUR1(4,146) |
方形口袋 4 mm 的壁 | 2,264 | 4.0 | 223 / 215 |
| 10 | 2D-TASCHE2(4,167) |
圍著島的圓形口袋,分層在 Z−5.6、−7.2、−8.8 與 −9 | 33,448 | 3.8 | 138 / 114 |
| 10 | 2D-KONTUR2(5,670) |
島的外形與 Ø52.3 的壁,Z−7 與 Z−9 | 7,360 | 6.0 | 120 |
| 10 | 2D ADAPTIVE5(6,795) |
Ø74 圓台四周 | 58,678 | 2.0(基準) | 107 |
| 10 | 2D-KONTUR3(12,580) |
圓台 8 mm 的壁,Z−5 與 Z−9 兩刀 | 5,914 | 4.0 | 167 / 138 |
| 10 | 2D ADAPTIVE7(12,609) |
1 mm 的邊框,切到 Z−19,先於它內側的台階 | 19,138 | 2.0(基準) | 84 / 69 |
| 10 | 2D ADAPTIVE6(13,450) |
斜邊台階四周,Z−9 到 Z−13 | 10,630 | 2.0(基準) | 107 / 102 |
| 10 | 2D-KONTUR4(14,153) |
斜邊台階的壁 | 2,448 | 4.0 | 139 / 126 |
| 10 | 2D-KONTUR6(14,188) |
78 mm 方塊的壁,在 Z−19;後、左兩側斜邊台階與它齊平,壁高 10 mm | 4,649 | 10.0 | 192 / 156 |
零件 4:各工序在 1 mm 與 0.25 mm 下的切削深度峰值與力峰值,對照 2 mm 的清料層深;每個數值都在上表。
零件 5:各工序在 1 mm 與 0.25 mm 下的切削深度峰值與力峰值,對照 2 mm 的清料層深;每個數值都在上表。
零件 6:各工序在 1 mm 與 0.25 mm 下的切削深度峰值與力峰值,對照 2 mm 的清料層深;每個數值都在上表。
零件 7:各工序在 1 mm 與 0.25 mm 下的切削深度峰值與力峰值,對照 2 mm 的清料層深;每個數值都在上表。
零件 8:各工序在 1 mm 與 0.25 mm 下的切削深度峰值與力峰值,對照 2 mm 的清料層深;每個數值都在上表。
零件 9:各工序在 1 mm 與 0.25 mm 下的切削深度峰值與力峰值,對照 1.5 mm 的清料層深;每個數值都在上表。
零件 10:各工序在 1 mm 與 0.25 mm 下的切削深度峰值與力峰值,對照 2 mm 的清料層深;每個數值都在上表。
給加工工程師
- 零件 7 的程式切不完它的島。 島的三個凹灣尖端在整個 6 mm 島高上,平面上各留約 2.0、1.8 與 0.6 mm² 的材料,最厚約 0.7 mm:凹灣收窄到半徑約 1.4–1.8 mm 的尖端,比 Ø6 刀具的 3 mm 半徑還窄。如果設計在那裡很要緊,就需要一道用較小刀具的清角加工。
- 零件 6 的薄壁。 孔離凸起方台的側面只有 2.5 mm、離口袋壁 3.9 mm;在實際零件上值得檢查。
- 較短的刀具就夠了。 零件 8 與 10 用 25 mm 伸出量就能碰到所有地方;直覺會選的 30 mm 長刃刀比所需長了 5 mm。在最深的切削處,刀把離毛胚分別有 8 與 6 mm 的餘隙。
- 負載在哪裡。 清料工序的峰值約 84–134 N(1 mm 執行;零件 10 的口袋銑削為 138 N)。峰值最高的是精修壁面的輪廓:零件 7 的最後精修輪廓 290 N,零件 10 的第一道輪廓(方形口袋 4 mm 的壁)與零件 7 的口袋壁 223 N,零件 9 的孔精修與最後精修輪廓 210 N,零件 8 與 10 的最後精修輪廓 192 N。0.25 mm 的執行讀到相同或最多低約 27 %。如果在意刀具撓曲或表面品質,這些就是該拆成多段軸向切深的刀。
- 裝夾設定。 依零件不同,程式原點位於料塊角外側 0.5 或 1 mm;如果在料塊角上對刀,這些零件就會偏移那麼多。
- 資料集本身。 寫明的 50 mm 料塊對這裡的每一個模型都太矮;零件 10 的特徵清單列出四個模型中並不存在的孔(它的四個半徑 3 的特徵是方形口袋的圓角)。
給老師或學生
- 一次「跑完了」的仿真,在它顯示出步數、接觸、執行的行數與乾淨的訊息清單之前,什麼也沒有證明。
- 程式原點、毛胚與刀具可以從 CAM 程式自身的運動中讀出來,也應該在那裡核對,而不是用猜的:在這個資料集裡,原點在零件之間會移動。
- 整次執行的單一峰值可能會誤導。把它按工序拆開,拿每一段去比它被程式設定要做的事。
- 資料集的說明是一種主張,不是量測:這裡的料塊高度、一份特徵清單與「freeform」這個字,都需要核對。
- 依最高的單段壁選刀,依最深的切削定伸出量。
給正在評估這種做法值不值得採用的人
- 花了多少。 本頁的十四次重播用了約 17 分鐘的伺服器時間(一台 32 執行緒的機器)。建案時連同節錄、後來被取代的長刃刀執行、零件 7 的量測與拍圖,約用了 40 分鐘的伺服器時間。每次執行估計的記憶體峰值為 1.9–3.5 GB(未量測)。兩輪審查各約 40 分鐘,盲建約 13 分鐘,全部由代理執行。
- 它抓到了單次檢查抓不到的。 在零件之間移動的原點;資料集寫錯的毛胚;比所需更長的刀具;一個看起來像基準錯誤的深度讀值;以及先 76 條、後 32 條錯誤或不清楚的書面陳述。
- 它沒有取代的。 由人訂下代理所遵循的規則、提供帳號,並調整工作的方向;而且這裡的一切都沒有實際切削。
誠實的限制¶
- 全部都是仿真。 代理沒有切任何東西。執行的數字出自 HiNC;估算、〈代理建了什麼〉逐件表裡刀把鼻端的高度,以及零件 7 的殘料面積,則是代理自己的幾何、算術或離線量測;HiNC 的碰撞檢查在每一次重播中都沒有發現刀把或刀柄與毛胚接觸。
- 代理的選擇,不是作者的。 材料、機台、夾具、主軸、刀具除了直徑以外的幾何,以及刀把,都是代理的選擇。力、功率與時間都取決於它們。
- 毛胚因難題 3 的理由,與寫明的 80 × 80 × 50 mm 不同。
- 週期時間沒有加速度模型,實際控制器會套用的
G64路徑混接也沒有仿真。 - 推論性的解釋都已標明:銑孔的深度讀值(難題 12),以及最後精修輪廓在哪裡碰上整面壁(難題 13)。
- 零件 7 的殘料面積來自代理對 HiNC 匯出工件的離線切片;HiNC 自己的幾何差異數值無法透過 API 讀取。
- 力在 1 mm 與 0.25 mm 的執行之間有差異:清料與精修最多約 27 %,銑孔最多 56 %,而銑孔的峰值本身很低(45 → 20 N)。
- 記憶體是每次執行的估計值,未量測。
讀者可以帶到自己案例的¶
- 從程式推出程式原點:拿孔的螺旋、口袋的圓或精修壁面去比對模型,而且要比對整組特徵。「平移後的模型外形等於毛胚外形」這種檢查,只有在毛胚是獨立給定時才有意義。
- 在使用寫明的毛胚之前,先拿模型與面銑深度核對它。
- 在相信特徵清單之前,先看模型。
- 控制器的語意相符時,程式就原樣播放,並列出剩下的警告,逐一說明為什麼無害。
- 依最高的單段壁選刀、依最深的切削定伸出量,並檢查刀把餘隙。
- 在第一次執行之前估算步數與記憶體;大型程式先用節錄證明設定。
- 在執行之前寫下通過標準,並拿每一次執行去對照。
- 按工序讀峰值;深度基準取自清料工序。
- 結果看起來不對時,在更改建置之前先讀 HiNC 的訊息與幾何。
- 請別人照你的指示重建案例,也讓人核對你的書面陳述。
來源與授權¶
M. Schmitz, J. Mertes, F. Schillinger, M. Wagner, Benchmark Dataset of 10 Multi-Feature Models for Single-Setup 3-Axis Milling,Zenodo,第 1 版,2025,https://doi.org/10.5281/zenodo.17035762(紀錄:https://zenodo.org/records/17035762)。連結搬家時可用的搜尋字詞:Benchmark Dataset of 10 Multi-Feature Models for Single-Setup 3-Axis Milling、zenodo 17035762。
授權為 Creative Commons Attribution 4.0 International。本站不提供下載;請從紀錄取得檔案。
Model, NC program and rendering: M. Schmitz, J. Mertes, F. Schillinger, M. Wagner, "Benchmark Dataset of 10 Multi-Feature Models for Single-Setup 3-Axis Milling", parts 4–10, https://doi.org/10.5281/zenodo.17035762, licensed CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/), provided without warranty.
改了什麼:模型轉成 STL 並移入程式座標;NC 程式在每一次完整重播中都依公開原樣播放;零件 7 與 9 的兩個基準核對節錄(難題 9)取程式從頭到第三道工序的註解之前為止,結尾是一行註解與 M5、G53 G0 Z0.、M30、%;為了兩張圖,程式在選定的一行截斷並補上 M30(難題 15)。仿真設定——毛胚、擺放、機台、夾具、刀具幾何、刀把、材料、主軸——是代理的,如上所述;毛胚高 51 或 53 mm,而不是寫明的 50 mm(難題 3)。本頁的圖是這些零件的 HiNC 仿真,圖表取自 HiNC 對它們的重播,只有〈案例〉一節的渲染圖例外:它們是資料集自己的圖,經裁切、排列並加上編號。
從紀錄取得的檔案,可以用各零件來源筆記給的 SHA-256,核對它是否就是本頁仿真所用的那一個:
| 零件 | 檔案 | SHA-256 |
|---|---|---|
| 4 | 4.ngc |
6240d35afb5e7de046e0249b23072db63f3a20d0aecb756de2419c91f697b1f6 |
| 4 | 4.step |
9779d88de7a615c439a76582341eb8244c2c73acc3e67c64c8332856e19437da |
| 4 | 4.png |
852a37b8bef2c5fa08fa1b6b4d8ed337b8c3b60db879b485462270800130f651 |
| 5 | 5.ngc |
d268fec818e49cbc329969d5ccc29334ca2f0ad8851b1f288caafe6ca60dbf5e |
| 5 | 5.step |
2e77b32274a0b7ab62dcf6ccb8fc47077a8968cce0e3cd466de7abad1cd693f7 |
| 5 | 5.png |
06684bcae0e31ea2bd877b75e73bb8ca4e616883228c9932f417e338e7220706 |
| 6 | 6.ngc |
318245efdccabd466cb53b6a0349242fcda79f82feb7c776187d03338c746d96 |
| 6 | 6.step |
30328dbe66955e34db199c9a36f0674548941c59164c12e48ea3bf4bca5eade7 |
| 6 | 6.png |
392457b9ed3d44dced973098e6ac22e4f84a2d9d2284227fac0af1bce6204534 |
| 7 | 7.ngc |
df9c904dd52e5908006b37744abbff6a9f9cf4094eaf3602dfe3f97e147e6860 |
| 7 | 7.step |
1fdc0a1ccfdf92f6bee6e67c8e29c0308dafee104025923315a58a0998f9cec3 |
| 7 | 7.png |
b93436d7bb4ef3ffaa0692e7126b3fd16bc3b8462c19a48c4e20a43cddfb9842 |
| 8 | 8.ngc |
57b637a6533710dc9e11cc90945edea39bc3d0792d1e7ba7273805dd3af6dfb3 |
| 8 | 8.step |
bb7f3809b3e5610dfde77aaf4cd388426bd06a47267cf021587f6bca23822bb7 |
| 8 | 8.png |
781d89c0dd409571fbe04161102dc5a56e39914692d0e77834d6e5adccc948d9 |
| 9 | 9.ngc |
d944a8d0d40f0c97e5d0f64c097785561503b61f8b1b0eb7b5682f84925445da |
| 9 | 9.step |
3658eb09d100e75cc57e0e18fb7850eb0de456ac141c6b8a17e21141f8edfd32 |
| 9 | 9.png |
c5f99a9dedd360e4a7636a5ee2abb139b3f7c4179b743120eee9809117f56174 |
| 10 | 10.ngc |
4b90bb4a916bcda7f4812298ae1aabe907b2fefbcd18e76e2f901709d4e942b9 |
| 10 | 10.step |
91c23f1fb78ab88b50e9bf46af2f5a08774a56a772d66d8922801a6fbe2001ab |
| 10 | 10.png |
45b0870f7b08e2f9f5f16c84ac7f9d505cfa4129e9e3816a17725ed0ba40323c |