Rescue3dmFile 指令可取出損壞的 Rhino 檔案裡可用的部分。
附註
● | Open、Import 與 Insert 指令無法讀取損壞檔案內的資料。 |
● | 檔案儲存至有壞軌的磁碟、以不穩定的 FTP 或不良的 USB 埠傳輸都可能造成檔案損壞。 |
● | 您可以將 Rescue3dmFile 指令用在未損壞的檔案上,觀察此指令如何作業。 |
步驟
1. | 選取一個檔案。 |
2. | 設定選項。 |
指令行選項
分析
以下是一個檔案內容的詳細描述,搜尋 "ERROR" 可以找出檔案損壞的位置。
範例
====== FILENAME: C:\RhinoFiles\BadFile.3dm
====== VERSION: 3
====== COMMENT BLOCK:
...
====== CHUNKS:
108272: 10000013 TCODE_OBJECT_TABLE: length = 103075 bytes
...
211347: FFFFFFFF TCODE_ENDOFTABLE: value = 0 (00000000)
211355: 10000017 TCODE_USER_TABLE: length = 55 bytes
...
214045: 00007FFF TCODE_ENDOFFILE: length = 4 bytes
current position = 214057 stored size = 214057
====== FINISHED:
List
列出選取的檔案裡所有可能可以修復的 openNURBS 物件,如果未列出任何物件模型就修復無望。
範例:
良好的檔案:
...
Object[35] 16722 bytes at offset 125176. class id F06FC243-A32A-4608-9DD8-A7D2C4CE2A36 (TL_Brep)
Object[36] 257 bytes at offset 142052. class id CF33BE2A-09B4-11d4-BFFB-0010830122F0 (ON_ArcCurve)
Object[37] 257 bytes at offset 142463. class id CF33BE2A-09B4-11d4-BFFB-0010830122F0 (ON_ArcCurve)
Object[38] 333 bytes at offset 142874. class id 5EAF1119-0B51-11d4-BFFE-0010830122F0 (TL_NurbsCurve)
Object[39] 569 bytes at offset 144079. class id 4ED7D4E6-E947-11d3-BFE5-0010830122F0 (ON_PolylineCurve)
Object[40] 15828 bytes at offset 145161. class id F06FC243-A32A-4608-9DD8-A7D2C4CE2A36 (TL_Brep)
Object[41] 16775 bytes at offset 161143. class id F06FC243-A32A-4608-9DD8-A7D2C4CE2A36 (TL_Brep)
...
損壞的檔案:
如果檔案有損壞,會有像這樣含有"ERROR"的字串:
** ERROR near offset 78931 ** Rogue chunk in openNURBS class record.
在清單中搜尋"ERROR"找出檔案損壞的部分。
通常會找到許多包含"ERROR"的字串,指令找到錯誤時不會停止,會繼續搜尋錯誤至檔案結尾。
修復
嘗試修復檔案裡的所有物件,只有幾何圖形可以修復,物件的內容資訊 (例如:圖層、材質、名稱....) 皆無法修復。
修復選項就像是匯入指令一樣,會將可用的物件加入至目前的模型。
讀取
一次讀取一個物件。
讀取數次
設定要讀取的物件數。
讀取全部
如果讀取全部失敗,請使用清單選項和讀取選項一個一個地讀取物件。成功讀取的物件會被儲存到一個不同檔名的 3dm 檔案裡 (避免破壞您正在作業的檔案)。當您遇到物件不能被讀取時,可在清單上標示出該物件,然後重新來過,下次再遇到這個物件時使用略過選項將其略過並繼續讀取下一個物件。
略過
略過無法讀取的物件。
略過數次
設定要略過的物件數。
結束
結束指令。
CRC 錯誤
循環多餘檢查碼 (Cyclic redundancy check, CRC) 錯誤代表檔案在寫入磁碟之後因為某些原因而損壞。
CRC 數字是從一個檔案的每個位元組數值經由一個方程式計算而來。此方程式有經過特殊設計,只要檔案有一個位元組的數值改變,所產生 CRC 數字也會不一樣。
Rhino 使用 CRC 驗証檔案裡資料的完整性,檔案寫入磁碟時會記下每一個物件資料的 CRC 數值,並儲存於檔案內。讀取檔案時會再計算一次 CRC 數值,並與原來的 CRC 數值做比對。如果兩個 CRC 數值吻合,幾乎可以斷定目前讀取的檔案資料與以前檔案寫入磁碟時的資料完全一樣。如果 CRC 數值不同,代表目前讀取的檔案資料與以前檔案寫入磁碟時的資料不同。簡單的說,如果 CRC 數值不同,代表檔案在儲存到磁碟以後至少有一個位元組被改變。
通常檔案損壞是因為磁碟機發生機械性的損壞、外部磁場干擾碟片上鐵原子的方向、不穩定的傳輸 (將資料複製到可攜式的儲存媒體,例如:軟碟片、光碟片、下載時線路不良...等) 所造成的。
如果使用者不斷地遇到損壞的檔案,有可能是磁碟有損壞或電腦感染了病毒。如果檔案經常損壞的情形不止發生在一部電腦,有可能是受到未屏蔽的電磁馬達 (例如:電梯、工業用吸塵機、冷氣壓縮機、損壞的工業用微波爐) 所造成的磁場的影響。
該怎麼做呢?會產生 CRC 警告所代表的意義是目前讀取的檔案資料和以前檔案儲存到磁碟時的資料不同。如果檔案還可以被讀入,請先檢查模型,如果模型看起來沒什麼問題,有可能是檔案損壞的部分並不重要或讀取程式在讀取檔案時偵測到錯誤並已自動修復。
如果檔案已經無法讀入,請嘗試使用 Rescue3DMFile 指令盡可能修復該檔案中可以修復的部分。
在需要緊急存檔 ( 記憶體不足 ) 的情形,Rhino 會自動以不同的名稱儲存目前的模型,避免緊急儲存的檔案覆蓋您的檔案。您可以在硬碟裡搜尋名為 RHINO_EMERGENCY_SAVE.3dm 的檔案。
請參考