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:
清单
列出选取的文件里所有可能可以修复的 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 的文件。
请参考