Check

Check 指令回报选取的物件的数据结构错误。

步骤

1. 选取物件。

回报物件数据的正确性。

这个指令是检测潜在几何数据错误的主要工具。

2. 删除并重建有错误的物件。

CheckNewObjects

CheckNewObjects 指令在物件建立、修改、导入时检查物件的数据结构是否有错误。

详情

Rhino 会在下列几种情形检查物件是否有错误。

读取 .3dm 文件时

当读取 .3dm 文件时发现损坏的物件,模型读取完成后会在指令视窗提示"建立了 N 个损坏的物件 (读取 ***.3dm 时)"。

读取其它模型文件时

当文件导入程序在导入文件时发现损坏的物件,模型读取完成后会在指令视窗提示"建立了 N 个损坏的物件 (读取 ***.3dm 时)",不会弹出警告对话框。

打开 3DM 以外的文件类型时侦测到损坏物件:

4 如果您在读取 3DM 以外的文件类型 (例如:IGES、STEP...) 时 Rhino 建立了损坏的物件,请将该文件寄至仅边框线 tech@mcneel.com

执行 Rhino 指令时

如果指令在执行中建立了损坏的物件,指令完成后指令行会提示"指令名称建立了 N 个损坏的物件",并弹出警告对话框。

建模时建立了损坏的物件:

如果 Rhino 在一般建模过程中弹出检查新物件对话框,您可能遇到了 Rhino 的程序错误,请将这个问题回报给我们知道:

1. 请说明警告对话框弹出时您所执行的指令。
2. 复原
3. 选取与该指令运行相关的所有物件,将它们导出至另一个文件。
4. 将文件通过电子邮件发送到 tech@mcneel.com
5. 请说明这个错误发生时您执行的指令与使用的选项。

NURBS 分析

有时候模型可能会损坏,损坏的部分可能会造成错误。

Rhino 的某些工具可能建立损坏的曲面,例如以自交的封闭曲线建立平面时,Rhino 并不会阻止您这么做,但是建立的平面在后续的运行会发生问题。

当一个修剪的微小边缘与另一个曲面的大边缘组合时,微小边缘可能会变成一个点造成错误。

有一些技巧可以提高模型的有效性。

以一段非常短的曲线连接一条修剪曲线的两个端点将其封闭,而不是将一个端点移动到另一个端点,可能会产生错误。

有时候微小的边缘可能由其它指令运行产生,例如:布尔运算,当两个物件只有非常小的交集时可能产生微小的边缘。

修剪边缘非常短或自交是造成错误的最大原因。

Rhino 有一些工具可以检查模型是否有这些错误。

检查模型时第一个会用到的是 Check 指令,如果模型无法通过指令的检查,它会列出一些错误,您可以依照列出的错误修复模型。但,可以通过检查的模型并不一定百分之百没问题。模型损坏的部分 (例如:自交的曲面) 可能会造成指令运行的效率降低,也难以自动侦测。Check 令并不会检查这类的错误,但可以检查物件的整体资料结构是否正确。

复损坏物件的流程通常是炸开取消修剪、重新修剪、再次组合。如果物件有很多小边缘,您可能需要使用 SplitEdge 指令分割部分的边缘,使要组合的边缘有相同的结构,再使用 JoinEdge 将相对的边缘组合。

当很大的物件与很小的物件相邻时,Join 指令可能无法正确判断是否要组合这两个物件,这种情形可以使用 JoinEdge 指令来处理。

这些工具都在分析功能表里的边缘工具里,当模型严重损坏时,您可能需要使用到这里的许多工具。

避免模型发生错误

通常需要避免建立微小的边缘。
不要使用有非常短的曲线连接其它的两条曲线。
组合两个曲面时,两个曲面明确的以边缘对边缘相接。

分析工具有:

列出物件的资料结构
检查物件
选取所有无法通过检查的物件

网格分析

Notes

某些 STL/SLA 打印机在打印含有许多很长的网格面的网格物件时会发生问题,可能使打印速度变慢、产生奇怪的打印结果或造成打印机内存不足。
The MeshRepair command may be useful when tuning up meshes for STL/SLA printing.

退化的网格面

可以使用 CullDegenerateMeshFaces 指令将它删除。

长度为 0 的边缘

长度为 0 的网格边缘通常是因为退化的网格面而产生的,也可以使用 CullDegenerateMeshFaces 指令将它删除。

非流形的网格边缘

可以使用 CullDegenerateMeshFaces 指令,再以 ExtractNonManifoldMeshEdges 指令修复。

外露的网格边缘

网格上可以有外露边缘存在,但是会在快速原型输出时发生问题。ShowEdges 指令可以找出物件上的外露边缘。FillMeshHole、FillMeshHolesMatchMeshEdge 指令可以用来消除外露的网格边缘。

重复的网格面

可以使用 ExtractDuplicateMeshFaces 指令将它抽离。

网格面的法线方向不一致

可以使用 UnifyMeshNormals 指令统一网格面的法线方向。

未相接的网格

可以使用 SplitDisjointMesh 指令分割成为个别的网格。

孤立的网格顶点

孤立的网格顶点通常不会造成问题,并且没有指令可以将它删除。

请参考

分析物件

Rhino Wiki: 损坏的物件