public static void GetPreview(GH_Document definition, CompoundDrawable compoundDrawable, Action <IGH_ActiveObject> onNotDrawble = null, Action <IGH_ActiveObject> onSuccessfulExtract = null) { var meshParameters = definition.PreviewCurrentMeshParameters() ?? Rhino.Geometry.MeshingParameters.Default; var isRenderMode = definition.PreviewMode == GH_PreviewMode.Shaded; foreach (var obj in definition.Objects.OfType <IGH_ActiveObject>()) { if (obj.Locked) { continue; } bool isSelected = obj.Attributes.Selected; if (definition.PreviewFilter == GH_PreviewFilter.Selected && !isSelected) { continue; } if (obj is IGH_PreviewObject previewObject) { if (previewObject.IsPreviewCapable && !previewObject.Hidden) { var geometries = new List <Rhino.Geometry.GeometryBase>(); if (obj is IGH_Component component) { foreach (var param in component.Params.Output) { ExtractGeometry(param.VolatileData, ref geometries, isRenderMode, meshParameters); } } else if (obj is IGH_Param param) { ExtractGeometry(param.VolatileData, ref geometries, isRenderMode, meshParameters); } if (geometries.Count != 0) { geometries.ForEach(geom => compoundDrawable.AddDrawable(new PreviewDrawable(geom), isSelected)); onSuccessfulExtract?.Invoke(obj); } } } else { onNotDrawble?.Invoke(obj); } } }
public GrasshopperPreview() { Init(); _compoundDrawable = new CompoundDrawable(); }