Пример #1
0
        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);
                }
            }
        }
Пример #2
0
 public GrasshopperPreview()
 {
     Init();
     _compoundDrawable = new CompoundDrawable();
 }