# IGH_Attributes interface

Namespace: [Grasshopper.Kernel](https://developer.rhino3d.com/api/gh1/namespace/grasshopper.kernel.md) · Assembly: [Grasshopper](https://developer.rhino3d.com/api/gh1/assembly/grasshopper.md)

```cs
public interface IGH_Attributes : GH_ISerializable, IGH_ResponsiveObject, IGH_TooltipAwareObject
```

Base interface for all Attributes. Attributes are the visual portion of GH_DocumentObjects. They handle display, mouse events, layout, context menus etc. etc. You should consider inheriting from GH_Attributes or some other abstract class instead of implementing this interface from scratch.

**Derived types:** [GH_Attributes<T>](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.gh-attributes-1.md), [GH_GroupAttributes](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.special.gh-groupattributes.md)

## Properties

- [AllowMessageBalloon](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/allowmessageballoon.md): Gets a value indicating whether these attributes allow warning and error boxes to be drawn on top of them.
- [Bounds](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/bounds.md): Gets the rectangle that contains the active content of the attributes. Typically the Contents determine the active area for menus, tooltips etc. Attributes are not supposed to draw objects beyond the Bounds.
- [DocObject](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/docobject.md): Gets the owner object of these attributes.
- [GetTopLevel](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/gettoplevel.md): Gets the top level attributes of these attributes.
- [HasInputGrip](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/hasinputgrip.md): Gets a value indicating whether or not these attributes have an input grip.
- [HasOutputGrip](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/hasoutputgrip.md): Gets a value indicating whether or not these attributes have an output grip.
- [InputGrip](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/inputgrip.md): Gets the input grip location for these attributes. If HasInputGrip equals False, this point is meaningless.
- [InstanceGuid](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/instanceguid.md): Gets the instance ID for these attributes.
- [IsTopLevel](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/istoplevel.md): Gets whether these attributes are top_level (i.e. no Parent attributes)
- [OutputGrip](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/outputgrip.md): Gets the output grip location for these attributes. If HasOutputGrip equals False, this point is meaningless.
- [Parent](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/parent.md): Gets or sets the parent attributes. Top level attributes do not have parents.
- [PathName](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/pathname.md): Get a description of the location of these attributes within the local attribute tree.
- [Pivot](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/pivot.md): Gets the pivot for these attributes. The pivot controls the general placement of the attributes. If you want to move the attributes, change the pivot location.
- [Selected](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/selected.md): Gets or sets the selected state of the top-level attributes.

## Methods

- [AppendToAttributeTree](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/appendtoattributetree.md): Recursively append these attributes and all child attributes to the attribute list.
- [ExpireLayout](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/expirelayout.md): Expires the entire layout of the attributes. When overridden, implementer must place a call to the base class ExpireLayout().
- [InvalidateCanvas](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/invalidatecanvas.md): If the mouse location should cause a canvas invalidation then return true. You only need to override this function if you draw objects that are dependant on cursor positions outside the bounds of the attributes.
- [IsMenuRegion](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/ismenuregion.md): Determines whether a point is available for context menu popups. By default, IsMenuRegion calls IsPickRegion(PointF).
- [IsPickRegion](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/ispickregion.md): (2 overloads) Determines whether a point is within the pickable region for this object. By default, any point inside the Bounds is treated as pickable.
- [NewInstanceGuid](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/newinstanceguid.md): (2 overloads) Generate a new instance GUID for the owner object.
- [PerformLayout](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/performlayout.md): Recompute the layout for these attributes. This function is automatically called during Drawing operations, so you typically don't have to.
- [RenderToCanvas](https://developer.rhino3d.com/api/gh1/type/grasshopper.kernel.igh-attributes/rendertocanvas.md): Render these attributes into a Canvas control.

## Inherited Members

- From [GH_ISerializable](https://developer.rhino3d.com/api/gh1/type/gh-io.gh-iserializable.md): [Read](https://developer.rhino3d.com/api/gh1/type/gh-io.gh-iserializable/read.md), [Write](https://developer.rhino3d.com/api/gh1/type/gh-io.gh-iserializable/write.md)
- From [IGH_ResponsiveObject](https://developer.rhino3d.com/api/gh1/type/grasshopper.gui.canvas.igh-responsiveobject.md): [RespondToKeyDown](https://developer.rhino3d.com/api/gh1/type/grasshopper.gui.canvas.igh-responsiveobject/respondtokeydown.md), [RespondToKeyUp](https://developer.rhino3d.com/api/gh1/type/grasshopper.gui.canvas.igh-responsiveobject/respondtokeyup.md), [RespondToMouseDoubleClick](https://developer.rhino3d.com/api/gh1/type/grasshopper.gui.canvas.igh-responsiveobject/respondtomousedoubleclick.md), [RespondToMouseDown](https://developer.rhino3d.com/api/gh1/type/grasshopper.gui.canvas.igh-responsiveobject/respondtomousedown.md), [RespondToMouseMove](https://developer.rhino3d.com/api/gh1/type/grasshopper.gui.canvas.igh-responsiveobject/respondtomousemove.md), [RespondToMouseUp](https://developer.rhino3d.com/api/gh1/type/grasshopper.gui.canvas.igh-responsiveobject/respondtomouseup.md)
- From [IGH_TooltipAwareObject](https://developer.rhino3d.com/api/gh1/type/grasshopper.gui.canvas.igh-tooltipawareobject.md): [TooltipEnabled](https://developer.rhino3d.com/api/gh1/type/grasshopper.gui.canvas.igh-tooltipawareobject/tooltipenabled.md), [IsTooltipRegion](https://developer.rhino3d.com/api/gh1/type/grasshopper.gui.canvas.igh-tooltipawareobject/istooltipregion.md), [SetupTooltip](https://developer.rhino3d.com/api/gh1/type/grasshopper.gui.canvas.igh-tooltipawareobject/setuptooltip.md)
