美文网首页狮猿社_Rhino
The fastest way to get all Meshe

The fastest way to get all Meshe

作者: 锦囊喵 | 来源:发表于2021-02-12 12:51 被阅读0次

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;
}

相关文章

网友评论

    本文标题:The fastest way to get all Meshe

    本文链接:https://www.haomeiwen.com/subject/ycidxltx.html