GHX
Generated by scripts/gen-format-pages.py from docs/data/format-metadata/, FILE_FORMATS.csv and docs/formats-master.csv. Do not edit by hand: change the source, then run the script.
Grasshopper Preview.
At a glance
| Original creator | David Rutten, Robert McNeel & Associates (Grasshopper) |
| First published | 2007 |
| Purpose | A Grasshopper definition written as XML: the same chunk archive as a .gh, uncompressed and readable. |
| Extensions | .ghx |
| Poka parser | poka-ghx |
| Viewer | poka-tree-viewer |
| Depth tier | Parser with a shared viewer (see Depth tiers) |
| Breadth tier | B2 Broad (see Breadth tiers) |
How much Poka reads
B2 Broad. The common content of the current and the common older versions is decoded. Some named features or versions are not, and are listed.
Confidence: high (the reviewer read the code and a test that proves the claim). Basis: Reviewed 2026-10-16: parsers/poka-ghx/src/lib.rs (XML archive reader into poka-gh's Chunk model, with typed-value decoding and a generic XML fallback), poka-gh's shared definition, graph and tree code, and tests/samples.rs and tests/builtins.rs over 19 corpus GraphRoots .ghx files (Rhino 6, 7 and 8 variants; groups, clusters, modifiers, scribbles, scripts, sketch). The same decoded content and gaps as GH, but exercised on a much larger real corpus.
What Poka does not read
- item types the corpus does not show (anything outside 1, 2, 3, 4, 5, 6, 8, 9, 10, 20, 30 to 32, 34 to 37, 50, 72 and 80) are kept as raw text, labelled unverified
- internalised geometry and other non-simple stored data are not decoded
- stored values are summarised only for simple types
- component-specific settings appear only as raw Data items
- plug-in components absent from the built-in table show no category
- XML that is not a Grasshopper archive falls back to a generic element tree capped at 4000 nodes and 12 levels
Background
The .ghx form of the GH_IO archive is XML: an Archive root with items and nested chunks. Poka reads it into the same model as poka-gh, so both give the same graph and tree. XML that is not a Grasshopper archive is shown as a generic tree.
Versions
| Version | Identifier | Poka | Note |
|---|---|---|---|
| GH_IO XML archive | <Archive name="Root"> |
Read |
Libraries
Libraries Poka uses or has assessed for this format, with the status, licence and language the registry records.
- roxmltree (used; MIT OR Apache-2.0; Rust)
- GH_IO.dll (Grasshopper API, GH_IO.Serialization) (candidate; licence unconfirmed; C#/.NET; https://developer.rhino3d.com/api/grasshopper/html/Overload_GH_IO_Serialization_GH_Chunk_Read.htm) — McNeel library that reads/writes .gh and .ghx (forum: standalone, no Rhino needed). Licence not seen on any page; input notes say LGPL.
Software that uses it
- McNeel Grasshopper (for Rhino)
Sources
- https://en.wikipedia.org/wiki/Grasshopper_3d
- parsers/poka-ghx/src/lib.rs