The fastest way to get all Meshes
https://discourse.mcneel.com/t/whats-the-fastest-way-to-get-all-meshes/117691
代码如下:
protected override Result RunCommand(RhinoDoc doc, RunMode mode)
{
var filter = ObjectType.Mesh
| ObjectType.Brep
| ObjectType.Extrusion
| ObjectType.SubD;
var settings = new ObjectEnumeratorSettings
{
NormalObjects = true,
LockedObjects = true,
HiddenObjects = true,
ActiveObjects = true,
ReferenceObjects = true,
ObjectTypeFilter = filter
};
var rh_objects = doc.Objects.FindByFilter(settings);
if (null == rh_objects || 0 == rh_objects.Length)
return Result.Nothing;
foreach (var rh_obj in rh_objects)
{
var obj_mesh = new Mesh();
var meshes = rh_obj.GetMeshes(MeshType.Render);
if (meshes.Length > 0)
{
foreach (var m in meshes)
obj_mesh.Append(m);
}
else
{
var mesh_params = rh_obj.GetRenderMeshParameters();
if (rh_obj.CreateMeshes(MeshType.Render, mesh_params, false) > 0)
{
meshes = rh_obj.GetMeshes(Rhino.Geometry.MeshType.Render);
if (meshes.Length > 0)
{
foreach (var m in meshes)
obj_mesh.Append(m);
}
}
}
if (obj_mesh.IsValid)
doc.Objects.AddMesh(obj_mesh);
}
doc.Views.Redraw();
return Result.Success;
}
网友评论