# IDocumentObject interface

Namespace: [Grasshopper2.Doc](https://developer.rhino3d.com/api/gh2/namespace/grasshopper2.doc.md) · Assembly: [Grasshopper2](https://developer.rhino3d.com/api/gh2/assembly/grasshopper2.md)

```cs
public interface IDocumentObject : IStorable
```

Defines the rules and regulations for any object that wishes to be part of an IDocument.

**Derived types:** [DocumentObject](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.documentobject.md), [IParameter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.iparameter.md)

## Properties

- [Activity](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/activity.md): Gets or sets the active state of this object. Note that this property is meaningless for certain types of object.
- [Attributes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/attributes.md): Gets or sets the attributes for this object. It is possible that an object does not have attibutes. Only objects that are drawn on the canvas are guaranteed to have attributes.
- [ChildrenObjects](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/childrenobjects.md): Gets all immediate child objects that belong to the current object. It is possible that an object does not have any children, and it is possible that a child object has children of its own.
- [Connectivity](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/connectivity.md): Gets the topological description of this object. The topology is not updated automatically, so be sure to get a fresh instance every time you need it.
- [CustomValues](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/customvalues.md): Gets a collection of keyed values which can be used to store custom data which will survive (de)serialisation.
- [Display](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/display.md): Gets or sets the display state of this object. Note that this property is meaningless for certain types of object.
- [DisplayCapable](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/displaycapable.md): Gets whether this object makes allowance for 3D viewport displays.
- [DisplayName](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/displayname.md): Gets the display name of this object. Often the DisplayName is identical to the UserName, but there could be more complicated algorithms involved.
- [DisplayStyle](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/displaystyle.md): Gets or sets the display style to use for the geometric data inside this object. Note that this property is meaningless for certain types of object.
- [Document](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/document.md): Gets the document this object belongs to. It is possible an object does not belong to any document. Do not assign or remove document associations unless you know exactly what you are doing.
- [EntireFamily](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/entirefamily.md): Enumerates over all objects in the hierarchy this object is part of. This enumeration starts at the root object and then continues over all children and grandchildren in a breadth-first fashion.
- [FoundingObject](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/foundingobject.md): Gets the root or founding object in the object hierarchy. If the current object does not have a parent, it is a founding object.
- [Icon](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/icon.md): Gets the icon associated with this object.
- [InstanceId](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/instanceid.md): Gets or sets the instance Id for this object. The instance Id should be different for every instance of every type. Do *not* assign this Id unless you know exactly what you are doing.
- [Nomen](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/nomen.md): Gets the user friendly description of this object.
- [Obsolete](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/obsolete.md): Gets whether this object is considered obsolete.
- [ParentObject](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/parentobject.md): Gets or sets the parent object that owns this object. Top-level objects do not have parents. Do not assign or remove parents unless you know exactly what you are doing.
- [Phase](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/phase.md): Gets the current solution phase of this object.
- [ProgressPercentage](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/progresspercentage.md): Gets an object progress percentage while the object is computing. The Grasshopper UI may or may not choose to display this percentage somewhere.
- [Relevance](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/relevance.md): Gets or sets the auxiliary state of this object. Auxiliary objects are drawn in an inconspicuous way as they are considered in-between logic. Note that this property is meaningless for certain types of object.
- [Selected](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/selected.md): Gets the main yes/no state from the SelectionState.
- [Selection](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/selection.md): Gets or sets the selected state of this object. Note that the selected setting of secondary objects is inherited from the parent.
- [SiblingObjects](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/siblingobjects.md): Gets all sibling objects in the object family tree.
- [State](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/state.md): Gets the current solution state of this object.
- [UserName](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/username.md): Gets the user specified name of this object.

## Methods

- [AddUndoRecord](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/addundorecord.md): (2 overloads) Add a custom undo record for this object.
- [AppendToInputPanel](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/appendtoinputpanel.md): Append the object specific items to an existing input panel.
- [Compute](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/compute.md): Compute a new solution for this object, or return a completed solution if one is available.
- [DisplayBounds](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/displaybounds.md): Gets the bounds of the geometry this object might display.
- [DisplayFaces](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/displayfaces.md): Draw the shaded faces for this object.
- [DisplayWires](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/displaywires.md): Draw the wires for this object.
- [Expire](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/expire.md): Expire this object and all objects that depend on it. This will request-cancel any running solutions inside whatever document contains this object.
- [GetCreationInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/getcreationinfo.md): Gets information about who created this component and when.
- [GetModificationInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/getmodificationinfo.md): Gets information about who last modified this component and when.
- [ModifyIcon](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/modifyicon.md): Override the icon for this object. Use this judiciously.
- [ModifyNameAndInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/modifynameandinfo.md): Programmatically modify the nickname, name and/or info strings on the Nomen.
- [OnDisplayChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/ondisplaychanged.md): Raise the [IDocumentObject.DisplayChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/displaychanged.md) event.
- [OnLayoutChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/onlayoutchanged.md): Raise the [IDocumentObject.LayoutChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/layoutchanged.md) event.
- [OverrideAttributes](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/overrideattributes.md): Assign new attributes to this object. Not all attributes may be accepted, it depends on the implementation.
- [RequestAutoSave](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/requestautosave.md): (2 overloads) Request an autosave.
- [SetCreationInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/setcreationinfo.md): Set the CreatedBy and CreatedAt fields if they haven't been set already.
- [SetModificationInfo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/setmodificationinfo.md): Set the ModifiedBy and ModifiedAt fields.
- [UpdateDisplay](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/updatedisplay.md): Recreate the display caches based on the given solution data and display rules.

## Events

- [ActivityChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/activitychanged.md): Raised whenever the Enabled state of this object changes.
- [AutosaveRequested](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/autosaverequested.md): Raised whenever this object requests an autosave.
- [DisplayChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/displaychanged.md): Raised whenever the display state of this object changes.
- [DocumentChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/documentchanged.md): Raised whenever this object becomes part of a different document.
- [Expired](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/expired.md): Raised whenever the solution currently held by this object is expired.
- [InstanceIdChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/instanceidchanged.md): Raised whenever the InstanceId of this object changes.
- [LayoutChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/layoutchanged.md): Raised whenever the layout of this object changes. Layout invalidation triggers a canvas redraw.
- [NameChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/namechanged.md): Raised whenever the UserName of this object changes. This typically infers that the DisplayName also changes.
- [RelevanceChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/relevancechanged.md): Raised whenever the Auxiliary state of this object changes.
- [SelectedChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/selectedchanged.md): Raised whenever the Selected state of this object changes.

## Inherited Members

- From [IStorable](https://developer.rhino3d.com/api/gh2/type/grasshopperio.istorable.md): [Store](https://developer.rhino3d.com/api/gh2/type/grasshopperio.istorable/store.md)
