Dear users,
it's been a while (over half a year actually), but we've finally arrived at a new Grasshopper release. As you may have guessed, a lot has changed in 6 months and this release represents a significant step towards Grasshopper 1.0
Since there is so much new stuff in 0.9 I feel I ought to caution you to not switch to the new version without carefully considering the pros and cons. There will most likely be serious bugs that our internal round of testing did not find, some of these bugs may prove so crippling to your work that you will not be able to use 0.9 until they are straightened out. You can of course always download the previous version, but you may not be able to open files made with 0.9 on earlier versions. So be careful to not overwrite old files unless you're certain that the new release is something you're happy with.
Grasshopper 0.9.0005 can be downloaded from the usual place. Note that you must have a recent version of the Microsoft C++ runtimes on your machine. See this FAQ post for more details.
Since 0.8 there have been three major changes, hopefully all for the better:
- Clusters
- AutoSave
- DataMatching
Clusters have been rewritten. They are not done yet but done enough for initial testing. I wrote down some useful details about what's new, you can read them here.
AutoSave has been rewritten and works in a fundamentally different fashion. The goal was both to remove autosave files from visible locations and to provide a more robust recovery system in case things go awry. If you want to know more, some details are available here.
Data Matching has been tuned a bit. Some bugs have been solved and hopefully no new bugs have been introduced. Datatrees should now grow complex less rapidly in certain cases. Again, some nitty-gritty details can be found here. Due to the changes it is quite likely that a lot of old files that rely on a specific data-tree layout will no longer work. This is a necessary evil in my opinion, but be warned that this may cause significant delays while switching over to 0.9
Here follows a (not exhaustive) list of changes since 0.8.0066.
Important Changes:
- Data Trees are now constructed differently in some cases, this may break files that depend on specific data tree layouts.
- File format forwards compatibility has been broken. You may not be able to open files saved with 0.9.0005 on earlier versions.
- Parts of the Grasshopper SDK have been broken. You may not be able to load GHA files compiled for earlier versions.
- Component Data Matching menu items are no longer available, please use the dedicated matching components.
- Components with one-shot option input parameters have almost all been replaced with components that have options in the menu.
- AutoSaving behaviour has been redesigned to hopefully provide less fragile protection against data-loss.
- We've had some serious crashes with the [Cloud Display] component. In some cases even Blue-screen crashes. Be sure all your work is saved (not just in Rhino) when you use [Cloud Display] component.
New features:
- 2600+ LolCats, but I stopped adding them as ICanHasCheezBurger is no longer fun.
- Standard windows tooltips will be on screen for a longer period than the Windows default of five seconds.
- Grasshopper will now load GHA files that are part of RHI installer packages.
- Internal parameter data (aka 'persistent data') now supports data trees.
- Set Multiple XXXX menu items that used a multi-line textbox now support data path lines.
- Manage XXXX collection window now supports data path entries.
- Moved a lot of components into the dropdown panels, reducing the default tab layout.
- Ctrl+Alt and Shift+Ctrl+Alt Info modes now also highlight components on ribbon dropdowns.
- It is now possible to create multiple new wires with a right-mouse-click during the new wire tool.
- Added Preview Mesh quality settings to the Canvas Toolbar and Display menu.
- Added AutoSave folder item to the File->Special Folders menu.
- AutoSave settings now have buttons for deleting autosave files.
- When a file is opened and a matching AutoSave file exists, options will be displayed.
- Removed the Data Matching event checkbox from the AutoSave settings.
- Added AutoSave folder options to the AutoSave settings.
- Added Point Preview flavour menu item to the Display menu.
- Shift+Click on a tab component icon now starts a component aggregate.
- Clicking on the canvas instantiates the oldest component in an aggregate.
- Shift+Clicking on the canvas instantiates all components in an aggregate.
- Press Escape to destroy a component aggregate.
- Alt+LeftClick on the canvas now starts the Split tool which pushes apart the objects on either side of the mouse.
- MultiSave exit dialog now closes automatically when all documents have been saved.
- Added Zooming widgets settings to the preferences Widget category for controlling ZUI display thresholds.
- Added Context Menus settings to the preferences GUI category for enabled component cascading submenus.
- Moved AutoSave and MRU preferences into a single category called Files.
- Improved scrolling on the Preferences window.
- Clusters can now be password protected.
- Cluster data is now encrypted when a password has been set.
- Clusters now have an option to include preview geometry of their content.
- Clusters can now be edited properly.
- Cluster hooks inherit data from the parent cluster during editing.
- Copied clusters in the same file will update when one of them is changed (they are 'entangled').
- Cluster tooltips now show information about entangled instances of a cluster in the document.
- Cluster tooltips now show Author information.
- Cluster tooltips now show whether a password has been set.
- Cluster tooltips now have blurred content previews when a password has been set.
- Clusters can now reference gh/ghx files.
- Clusters can now reference ghcluster files.
- Added *.ghcluster file type for cluster storage. *.ghcluster files retain author information and password protection.
- Components with no runtime warnings or errors no longer have a "No message" entry in their menu.
- Brep|Line intersection component no longer has a Limit First input param, this is now a component menu option.
- Curve|Line intersection component no longer has a Limit First input param, this is now a component menu option.
- Surface|Line intersection component no longer has a Limit First input param, this is now a component menu option.
- Random component no longer has an Integers input param, this is now a component menu option.
- Tree Branch component now has a 'Maintain Paths' component menu option.
- BoundingBox component no longer has a Union input param, this is now a component menu option.
- When connecting a Param Viewer to a new parameter, it will automatically resize if the size change isn't large.
- Added Data Dam object to delay data across a network (Params.Special dropdown).
- Added Interpolate Data component for sub-sampling collections of data (Math.Util dropdown).
- Added Sift Pattern component for splitting data without messing with the item index (Sets.List panel).
- Added Combine Data component for merging multiple streams with nulls (Sets.List panel).
- Added Partition List component for breaking up lists into smaller lists (Sets.List dropdown).
- Added Match String component for comparing strings against patterns (Sets.String dropdown).
- Added String Distance component for computing Levenshtein distances between strings (Sets.Strings dropdown).
- Added Format component for creating formatted strings (Sets.Strings dropdown).
- Graft component has been replaced with a new one with additional component menu options (Sets.Tree panel).
- Added To Polar component for transcribing XYZ points to plane Phi/Theta/R coordinates (Vector.Point dropdown).
- Added Cloud Display component for displaying point data as fuzzy clouds (Vector.Point dropdown).
- Added Sort Along Curve component for sorting points using curves as guides (Vector.Point dropdown).
- Added Barycentric Point component for creating points using barycentric coordinates (Vector.Point dropdown).
- Added Point Groups component for finding proximal clusters in point collections (Vector.Point dropdown).
- Added Populate Geometry component for distributing points on different shapes (Vector.Grid dropdown).
- All Population components now use a faster algorithm.
- Added Project Point component (Vector.Point dropdown).
- Added Blend Curve component for G0~G2 blends (Curve.Spline panel).
- Added Connect Curves component for blending multiple curves into one (Curve.Spline dropdown).
- Added Curve Length Domain component for measuring lengths of sub-domains (Curve.Analysis panel).
- Added Curve Length Parameter component for measuring lengths to and from parameters (Curve.Analysis dropdown).
- Added Segment Lengths component for finding shortest and longest segments in a curve (Curve.Analysis dropdown).
- Added Containment Ex component for testing a point against multiple regions (Curve.Analysis dropdown).
- Evaluate Curve component has been replaced with another one that outputs kink angles rather than lengths (Curve.Analysis panel).
- Curve Derivatives component has been replaced with another one that has variable output parameters (Curve.Analysis dropdown).
- Curve Derivatives component now displays the derivative vectors in the Rhino viewport.
- Added Pull Curve component for pulling curves onto surfaces (Curve.Util dropdown).
- Added Intersect Multiple Curves component (Intersect.Physical dropdown).
- Added Matrix Data Type and Matrix Parameter (Params.Primitive dropdown).
- Added Field Data Type and Field Parameter (Params.Geometry dropdown).
- Replaced Boolean Toggle object with a new one (Params.Input panel).
- Added a Button object for temporarily toggling a value (Params.Input dropdown).
- Added Point Charge component (Vector.Field panel).
- Added Line Charge component (Vector.Field panel).
- Added Vector Force component (Vector.Field dropdown).
- Added Spin Force component (Vector.Field dropdown).
- Added Merge Fields component (Vector.Field panel).
- Added Break Field component (Vector.Field panel).
- Added Evaluate Field component (Vector.Field panel).
- Added Field Line component (note: this one is unfinished) (Vector.Field panel).
- Added Field Direction Display component (Vector.Field dropdown).
- Added Field Perpendicular Display component (Vector.Field dropdown).
- Added Field Scalar Display component (Vector.Field dropdown).
- Added Field Tensor Display component (Vector.Field dropdown).
- Added Adjust Plane component for modifying plane z-axes (Vector.Plane dropdown).
- Added Cull Duplicate Points component (Vector.Point dropdown).
- Added Evaluate component to replace all old expression components (Math.Script panel).
- Added Expression component which evaluates an internal expression (Math.Script panel).
- Added Short List component for equalizing list lengths (Sets.List panel).
- Added Long List component for equalizing list lengths (Sets.List dropdown).
- Added Cross Reference component for creating combinations of data (Sets.List panel).
- Added Replace Nulls component for replacing null and invalid data (Sets.List dropdown).
- Added Inside Multiple component for testing point inclusion with multiple breps (Surface.Analysis dropdown).
- Added Collision component for testing one-to-many collisions (Intersect.Physical dropdown).
- Added Collision component for testing many-to-many collisions (Intersect.Physical dropdown).
- Added Mesh Inclusion component for testing point|mesh inclusion (Mesh.Analysis panel).
- Added Mesh Closest Point component for finding the point on a mesh closest to another point (Mesh.Analysis panel).
- Added Evaluate Mesh component for sampling position, normal and colour at a mesh parameter (Mesh.Analysis panel).
- Added Face Boundaries component for converting mesh faces into polylines (Mesh.Analysis panel).
- Added Mesh Edges component for extracting mesh edge lines (Mesh.Analysis panel).
- Replaced Mesh Plane component with one that takes a rectangle (Mesh.Primitive panel).
- Added Blur Mesh component for averaging mesh vertex colours (Math.Util dropdown).
- Added Simple Mesh component for creating a minimal Brep representation (Mesh.Util dropdown).
- Added Knot Style input for the Interpolate Curve component.
- Added Knot Style input for the Interpolate Tangents Curve component.
- Added four different display styles to the Legend object (accessible via the component menu).
- Double clicking the Legend object toggles discrete vs. smooth display styles.
- Added an extra input to the legend component which allows legend drawing in 3D.
- Replaced Containment component with more sensible values for inside/coincident/outside.
- Replaced the Recursive Voronoi component with a better one.
- Convex Hull component will now solve for 2 points.
- MultiDimensional Sliders can now be part of states.
- Value Lists can now be part of states.
- Control Knobs can now be part of states.
- Geometry Pipeline object now has a Locked filter, available via the popup menu.
- Geometry Pipeline object now has a Hidden filter, available via the popup menu.
- Geometry Pipeline object now has a 'Group By Layer' option, available via the popup menu.
- Geometry Pipeline object now has a 'Group By Type' option, available via the popup menu.
- In Rhino5, the Zoom Extents command will now include Grasshopper preview geometry.
- Expression input parameters can now have names like "Name (n)", where the text in brackets becomes the variable name.
- Script input parameters can now have names like "Name (n)", where the text in brackets becomes the variable name.
- Script output parameters can now have names like "Name (n)", where the text in brackets becomes the variable name.
- VB/C# script components now have tooltip override fields in the context menu.
- Parameter nicknames that collide with language keywords are now automatically modified in Script components.
- Script Cache recovery for VB/C# components now displays the list of cached scripts much quicker.
- VB/C# script editor now has a button for inserting skeleton Preview overrides.
- Added Wrap option to Text Panel entries. When Wrap is off, items will be trimmed using ellipses.
- Added NickName support to Knobs.
- Added a grip region for Knob tuning.
- Added a specific window for changing Knob settings.
- Copy to Windows Clipboard now tries a total of 10 times if there's an access failure.
- Copy to Windows Clipboard now copies to internal Grasshopper clipboard on prolonged failure.
- Aborted solutions now clear whatever data is stored inside whatever component was solving when the Escape key went down.
- The state of the Escape key is now also monitored during data conversions, making Escape behaviour more reliable.
- Rearranged the Params.Special panel into Input and Util panels.
- Rearranged the Sets.String panel.
- File Reader component now reads per line files in a more efficient manner.
- Parameter modifier icons are now drawn as vectors rather than bitmaps (good for hi-res export).
- Component specific options and settings are now displayed as tags underneath components.
- Markov Widget tooltip now shows component information rather than widget information.
- Grips, Text and Capsule highlights on the canvas are now drawn using time-based rather than zoom-based transparency.
- Parameter icons now fade in/out using time-based rather than zoom-based transparency.
- Component icons now fade in/out using time-based rather than zoom-based transparency.
- Histograms now fade in/out using time-based rather than zoom-based transparency.
- Pie charts now fade in/out using time-based rather than zoom-based transparency.
- Boolean Toggles now fade in/out using time-based rather than zoom-based transparency.
- Timers now fade in/out using time-based rather than zoom-based transparency.
- Data Dam objects now fade in/out using time-based rather than zoom-based transparency.
- Cluster Input Hooks now fade in/out using time-based rather than zoom-based transparency.
- Cluster Output Hooks now fade in/out using time-based rather than zoom-based transparency.
- Colour Picker objects now fade in/out using time-based rather than zoom-based transparency.
- Image Samplers now fade in/out using time-based rather than zoom-based transparency.
- Legends now fade in/out using time-based rather than zoom-based transparency.
- Data Recorders now fade in/out using time-based rather than zoom-based transparency.
- Number Dials now fade in/out using time-based rather than zoom-based transparency.
- Number Sliders now fade in/out using time-based rather than zoom-based transparency.
Bug fixes:
- Components with Preview=Off would not display in selected only mode, this is fixed.
- Instantiating number sliders via the popup box would not work if the first number was negative, this is fixed.
- Copy to Windows Clipboard would not fail gracefully on error, this is fixed.
- Interpolate Curve component would not warn on invalid degrees, this is fixed.
- Knob menu control was not correctly initialized, this is fixed.
- Knob menu control did not correctly respond to Limit On/Off, this is fixed.
- Curve Discontinuity component would sometimes return invalid results for C1 discontinuities, this is fixed.
- Certain exotic cases of Data Matching and Input Access would yield faulty output data trees, this is fixed.
- Expressions in Point parameters would affect shared instances of points, this is fixed.
- Editor window would not reflect saved/unsaved state of the loaded document, this is fixed.
- MultiDimensional Slider would not undo on grip drags, this is fixed.
- Image Sampler would not behave nicely when an image file went missing sometimes, this is fixed.
- Upgrader for Null Item component generated an invalid result, this is fixed.
- Text Panels would not display a scrollbar for local text, this is fixed.
- Vector Display component would remain visible after disconnecting, this is fixed.
- Vector Display Ex component would remain visible after disconnecting, this is fixed.
- Adding or removing output parameters from VB/C# script would not update the script, this is fixed.
- A CCX overlap intersection would sometimes result in erroneous parameters, this is fixed.
- The tooltip over the abort icon would not show, this is fixed.
- The canvas wouldn't always redraw when the solver was locked, this is fixed.
- Transform Parameter Set menu items did nothing, they are now greyed out.
- Occlusion Component would always return a null topology, this is fixed.
- Group crossing selection would fail on concave group outlines, this is fixed.
- Transform input parameters on components would have an empty transform by default, this is fixed.
- Sweeps sometimes outputted surfaces with internal kinks, this is fixed.
- Output parameters that output lists now have tooltip suffixes indicating them as such.
- VB/C# script with no input parameter failed to run, this is fixed.
- Tooltip title text for components and parameters was basically unreadable, this is fixed.
- Transform component claimed "Mirrored Geometry" as an output, this is fixed.
- Align Planes would output null values, this is fixed.
- Flip curve component now has a different alignment algorithm for guide curves.
- Panel Editor would fail to load when a certain Font was missing from the system, this is fixed.
- Popup Component Insertion window would crash under certain conditions, this is fixed.
- Timers that went through the clipboard would still target the original objects, this is fixed.
- Group Tags would sometimes be clipped at Hi-Res export boundaries, this is fixed.
- Obsolete components would be visible in the PopUp search if they were accessed via an alias, this is fixed.
- Referenced geometry which no longer exists in Rhino is now stored as a null rather than invalid item.
There will probably be a flurry of releases following this one as bug-reports and wishes come in. If you feel skittish about diving into a dangerous beta feel free to wait until 0.9 has settled a bit.
Enjoy!
David
--
David Rutten
david@mcneel.com
Poprad, Slovakia