# Cluster class

Namespace: [Grasshopper2.Components.Standard](https://developer.rhino3d.com/api/gh2/namespace/grasshopper2.components.standard.md) · Assembly: [Grasshopper2](https://developer.rhino3d.com/api/gh2/assembly/grasshopper2.md)

```cs
[IoId("00000000-5b8c-4ffa-b0d9-38e86ca1f51d")]
[Author("DavidR")]
public sealed class Cluster : Component, IDocumentParent, IPinCushion
```

A single component wrapping a whole document.

## Constructors

- [Cluster](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/ctor.md): (3 overloads)

## Properties

- [EntangledClusters](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/entangledclusters.md): Iterate over all entangled clusters in the file containing this cluster. Entangled clusters have the same [Document.Hash](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.document/hash.md) of the [Cluster.InnerDocument](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/innerdocument.md). This enumeration will always include at least this cluster, but not necessarily at the start or end.
- [IDocumentParent.ParentObject](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/grasshopper2-doc-idocumentparent-parentobject.md)
- [IPinCushion.SupportedPins](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/grasshopper2-parameters-ipincushion-supportedpins.md)
- [InnerDocument](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/innerdocument.md): Gets or sets the document hosted inside this cluster. Changes made to the document do not automatically percolate to the cluster. Probably best if you keep your dirty little fingers away from it altogether.
- [LoopSolution](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/loopsolution.md): Gets or sets whether to loop this cluster. It is the responsibility of the caller to record undo and compute new solutions after setting this.
- [RelayMessages](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/relaymessages.md)

## Methods

- [AddInputs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/addinputs.md)
- [AddOutputs](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/addoutputs.md)
- [AppendToInputPanel](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/appendtoinputpanel.md)
- [BeforeProcess](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/beforeprocess.md)
- [CreateAttributes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/createattributes.md)
- [Disentangle](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/disentangle.md): Disentangle this cluster from any and all relations by setting a random Guid in the custom values of the inner document. This will cause the inner document to have a different hash, which in turn disassociates this cluster from any other ones.
- [EditInnerDocument](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/editinnerdocument.md)
- [EnsureMaps](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/ensuremaps.md): Ensure that the cached arrays linking input and output parameters with the [Listen](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.special.listen.md) and [Shout](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.special.shout.md) objects inside the [Cluster.InnerDocument](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/innerdocument.md) exist and have been populated with matches. Note that this assumes the parameters, listens, and shouts actually do match up. If that's not the case, the mapping arrays will contain null entries.
- [ExpireAllRecipients](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/expireallrecipients.md)
- [ExpireDueToPin](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/expireduetopin.md): Expire all objects contained within the inner document which support the given pin type, but which do not have a pin of that type attached to them. If at least one inner object was expired, the cluster itself is also expired so that downstream recipients recompute.
- [Explode](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/explode.md): Explode this cluster into the host document. Every object inside the inner document (excluding the cluster-boundary Listen/Shout proxies) is duplicated into the host document with fresh instance ids; wires crossing the cluster boundary are rerouted directly between the host document's parameters and the duplicates. The cluster itself is then removed. The entire operation is recorded as a single undo record. Looping clusters cannot be exploded; calling this method on a looping cluster returns false without making any change.
- [IDocumentParent.ResolveGlobal](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/grasshopper2-doc-idocumentparent-resolveglobal.md)
- [Process](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/process.md)
- [ShowLoopingEditor](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/showloopingeditor.md)
- [ShowUiAndAuthorEditor](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/showuiandauthoreditor.md)
- [Store](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.standard.cluster/store.md)

## Inherited Members

- From [Component](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component.md): [BakeCapable](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/bakecapable.md), [ChildrenObjects](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/childrenobjects.md), [Connectivity](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/connectivity.md), [ConnectivityComplete](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/connectivitycomplete.md), [DisplayCapable](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/displaycapable.md), [DisplayParameters](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/displayparameters.md), [IconMode](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/iconmode.md), [Label](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/label.md), [Parameters](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/parameters.md), [Pins](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/pins.md), [SupportsVariableParameters](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/supportsvariableparameters.md), [Threading](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/threading.md), [AppendMetaMixingInput](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/appendmetamixinginput.md), [AppendPinToggles](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/appendpintoggles.md), [BakeShapes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/bakeshapes.md), [CanCreateParameter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/cancreateparameter.md), [CanRemoveParameter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/canremoveparameter.md), [ComputeInternal](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/computeinternal.md), [DisplayBounds](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/displaybounds.md), [DisplayFaces](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/displayfaces.md), [DisplayWires](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/displaywires.md), [DoCreateParameter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/docreateparameter.md), [DoRemoveParameter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/doremoveparameter.md), [PostProcess](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/postprocess.md), [PostProcessTree](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/postprocesstree.md), [PreProcess](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/preprocess.md), [Process](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/process.md), [ResolveIconMode](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/resolveiconmode.md), [VariableParameterMaintenance](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.component/variableparametermaintenance.md)
- From [ActiveObject](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.activeobject.md): [DisplayCache](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.activeobject/displaycache.md), [State](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.activeobject/state.md), [Compute](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.activeobject/compute.md), [Expire](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.activeobject/expire.md), [PopulateDisplay](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.activeobject/populatedisplay.md), [UpdateDisplay](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.activeobject/updatedisplay.md)
- From [DocumentObject](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject.md): [Activity](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/activity.md), [Attributes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/attributes.md), [CustomValues](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/customvalues.md), [Display](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/display.md), [DisplayName](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/displayname.md), [DisplayStyle](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/displaystyle.md), [Document](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/document.md), [EntireFamily](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/entirefamily.md), [FoundingObject](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/foundingobject.md), [Icon](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/icon.md), [IconInternal](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/iconinternal.md), [InstanceId](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/instanceid.md), [Nomen](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/nomen.md), [Obsolete](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/obsolete.md), [ParentObject](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/parentobject.md), [Phase](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/phase.md), [ProgressPercentage](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/progresspercentage.md), [Relevance](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/relevance.md), [Selected](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/selected.md), [Selection](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/selection.md), [SiblingObjects](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/siblingobjects.md), [UserName](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/username.md), [ActivityChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/activitychanged.md), [AutosaveRequested](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/autosaverequested.md), [DisplayChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/displaychanged.md), [DocumentChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/documentchanged.md), [Expired](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/expired.md), [InstanceIdChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/instanceidchanged.md), [LayoutChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/layoutchanged.md), [NameChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/namechanged.md), [RelevanceChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/relevancechanged.md), [SelectedChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/selectedchanged.md), [AddUndoRecord](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/addundorecord.md), [AppendBakeInput](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/appendbakeinput.md), [AppendStateInput](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/appendstateinput.md), [AppendUserNameInput](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/appendusernameinput.md), [ChangeInstanceIds](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/changeinstanceids.md), [ExpireDisplay](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/expiredisplay.md), [GetCreationInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/getcreationinfo.md), [GetModificationInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/getmodificationinfo.md), [InvalidateExistingLayout](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/invalidateexistinglayout.md), [ModifyIcon](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/modifyicon.md), [ModifyNameAndInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/modifynameandinfo.md), [OnDisplayChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/ondisplaychanged.md), [OnExpired](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/onexpired.md), [OnLayoutChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/onlayoutchanged.md), [OverrideAttributes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/overrideattributes.md), [RequestAutoSave](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/requestautosave.md), [SetCreationInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/setcreationinfo.md), [SetModificationInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/setmodificationinfo.md), [SetProgressPercentage](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject/setprogresspercentage.md)
