Rescue3dmFile

工具列 功能表

檢測

工具

工具

檔案工具 >

修復 .3DM 檔案

Rescue3dmFile 指令可以修復從損壞的 Rhino 3dm 檔案讀取的幾何物件。

  • Open、Import 與 Insert 指令無法讀取損壞檔案內的資料。
  • 檔案儲存至有壞軌的磁碟、以不穩定的 FTP 或不良的 USB 埠傳輸都可能造成檔案損壞。
  • 您可以將 Rescue3dmFile 指令用在未損壞的檔案上,觀察此指令如何作業。
  • 使用 Audit3dmFile 指令可檢查 3dm 檔案是否有錯誤。

步驟

  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:

清單

列出選取的檔案裡所有可能可以修復的 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"的字串,指令找到錯誤時不會停止,會繼續搜尋錯誤至檔案結尾。

修復

嘗試自動修復檔案中所有可用的物件。只有基本幾何圖形可以修復,所有內容資訊 (包括圖層、彩現材質、名稱等) 皆無法修復。

「修復」選項就像 Import 指令一樣,會將被救援檔案中的物件加入,並保留目前工作階段中的物件。

讀取

一次讀取一個物件。

讀取數次

設定要讀取的物件數。

讀取全部

如果「讀取全部」失敗,請列印「清單」選項所建立的檔案,並使用「讀取」選項一個一個地讀取物件。每次成功讀取後,將結果儲存為另一個檔名的新 3dm 檔案 (避免破壞您正在處理的檔案)。當遇到無法讀取的物件時,在列印出的清單上標示該物件,然後重新開始。下次再遇到這個物件時,使用「略過」選項將其略過並繼續讀取下一個物件。

略過

略過無法讀取的物件。

略過數次

設定要略過的物件數。

結束

結束指令。

CRC 錯誤

循環多餘檢查碼 (Cyclic redundancy check, CRC) 錯誤代表檔案在寫入磁碟之後因為某些原因而損壞。

CRC 數字是從一個檔案的每個位元組數值經由一個方程式計算而來。此方程式有經過特殊設計,只要檔案有一個位元組的數值改變,所產生 CRC 數字也會不一樣。

Rhino 使用 CRC 驗証檔案裡資料的完整性,檔案寫入磁碟時會記下每一個物件資料的 CRC 數值,並儲存於檔案內。讀取檔案時會再計算一次 CRC 數值,並與原來的 CRC 數值做比對。如果兩個 CRC 數值吻合,幾乎可以斷定目前讀取的檔案資料與以前檔案寫入磁碟時的資料完全一樣。如果 CRC 數值不同,代表目前讀取的檔案資料與以前檔案寫入磁碟時的資料不同。簡單的說,如果 CRC 數值不同,代表檔案在儲存到磁碟以後至少有一個位元組被改變。

檔案損壞的常見原因包括磁碟碟片發生機械性損壞、讀寫磁頭機械臂損壞、磁頭磨損、外部磁場干擾硬碟上鐵原子的排列方向,以及傳輸錯亂 (將檔案複製到軟碟、光碟、隨身碟等可攜式媒體,或經由不良線路下載時可能發生)。

如果不斷產生損壞的檔案,應懷疑是磁碟損壞或惡意病毒所致。如果問題經常發生在不止一部電腦上,則應懷疑是強大的磁場所造成,可能來自未屏蔽的大型電動馬達 (電梯、工業用吸塵器、冷氣壓縮機、損壞的工業用微波爐)。

該怎麼做呢?會產生 CRC 警告所代表的意義是目前讀取的檔案資料和以前檔案儲存到磁碟時的資料不同。如果檔案還可以被讀入,請先檢查模型,如果模型看起來沒什麼問題,有可能是檔案損壞的部分並不重要或讀取程式在讀取檔案時偵測到錯誤並已自動修復。

如果檔案已經無法讀入,請嘗試使用 Rescue3DMFile 指令盡可能修復檔案中可以修復的部分。

緊急存檔

在緊急存檔 (記憶體不足) 的情況下,Rhino 應會自動以不同的名稱儲存目前的模型,避免覆蓋您上一次儲存的 .3dm 檔案。請在硬碟中搜尋名為 RHINO_EMERGENCY_SAVE.3dm 的檔案。

RescueBlockOrphans

工具列 功能表

未在工具列上。

未在功能表裡。

RescueBlockOrphans 指令會搜尋未被任何圖塊定義使用的圖塊定義幾何圖形 (稱為孤立的圖塊),這些圖塊定義幾何圖形無父圖塊,也無法用 Insert 指令插入模型。

這種情形通常發生在讀取損壞的檔案時。

例如 3dm 檔案因不明原因被截短 (檔案末端遺失),檔案一開始可以讀取,但讀取到一半時會彈出幾何圖形表損壞的訊息,使用者可以選擇繼續讀取,盡可能讀取所有可用的資訊。

讀取完成後,畫面上不會看到任何東西。如果已讀取圖塊定義的幾何圖形,RescueBlockOrphans 可用來在模型中建立無法存取的圖塊定義物件的複本。

檔案讀取完成後如有不可見的孤立圖塊,可用 RescueBlockOrphans 指令使這些孤立的圖塊出現在模型裡。

執行 RescueBlockOrphans 時,RescueBlockOrphans 將與圖層、註解型式、剖面線等資訊維持關聯。

請參考

檔案相關功能