# IDataAccess interface

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

```cs
public interface IDataAccess
```

Interface used for accessing input and output data from within Component.Process methods.

## Properties

- [Callstack](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/callstack.md): Gets the call stack leading up to this component.
- [CountIn](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/countin.md): Gets the number of input parameters whose data can be harvested.
- [CountOut](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/countout.md): Gets the number of output parameters whose data can be assigned.
- [CustomData](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/customdata.md): Gets the custom data where you can put values which are supposed to end up in the [SolutionData.CustomData](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.solutiondata/customdata.md) storage.
- [Index](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/index.md): Gets the iteration of this access.
- [Iterations](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/iterations.md): Gets the total number of iterations in this computation.
- [Solution](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/solution.md): Gets the solution that is the context of this iteration.

## Methods

- [AccessIn](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/accessin.md): Gets the access associated with the specified input parameter.
- [AccessOut](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/accessout.md): Gets the access associated with the specified output parameter.
- [AddError](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/adderror.md): (3 overloads) Add an error message to the object solution.
- [AddMessage](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/addmessage.md): Add a constructed message to the object solution.
- [AddRemark](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/addremark.md): (3 overloads) Add a remark to the object solution.
- [AddWarning](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/addwarning.md): (3 overloads) Add a warning message to the object solution.
- [CoverageIn](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/coveragein.md): Gets the coverage for the given input associated with this iteration.
- [CoverageOut](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/coverageout.md): Gets the coverage for the given output associated with this iteration.
- [GetCurve](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getcurve.md): Gets a pairing of an item and its associated curve assistant. If no assistant is available, this method will append an error message and throw.
- [GetIndex](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getindex.md): Gets an integer describing the index within a collection.
- [GetIndexing](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getindexing.md): Gets the indexing modifier associated with the specified input parameter. For this request to work, the input must be of type [IntegerParameter](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.standard.integerparameter.md) and the [IntegerParameter.IsIndex](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.standard.integerparameter/isindex.md) property must be set to true. If that's not the case an exception will be thrown.
- [GetIndices](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getindices.md): Gets a collection of integers describing the indices within a collection.
- [GetIPear](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getipear.md): Gets the item+meta data [IPear](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.ipear.md) from the specified input parameter. For this method to not throw exceptions the [IParameter.Access](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.iparameter/access.md) of the associated parameter must be set to [Access.Item](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.access.md).
- [GetIPears](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getipears.md): (3 overloads) Gets an array of [IPear](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.ipear.md) instances from the specified input. This method works both when the [IParameter.Access](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.iparameter/access.md) of the parameter is set to [Access.Item](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.access.md) or [Access.Twig](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.access.md).
- [GetIPearWithCurveAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getipearwithcurveassistant.md): Gets the item+meta data [IPear](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.ipear.md) and its associated curve assistant. If no assistant is available, this method will append an error message and throw.
- [GetIPearWithSurfaceAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getipearwithsurfaceassistant.md): Gets the item+meta data [IPear](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.ipear.md) and its associated surface assistant. If no assistant is available, this method will append an error message and throw.
- [GetIPearWithTypeAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getipearwithtypeassistant.md): Gets the item+meta data [IPear](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.ipear.md) and its associated type assistant. If no assistant is available, this method will append an error message and throw.
- [GetItem<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getitem.md): (2 overloads) Gets the item from the specified pin.
- [GetItemArray<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getitemarray.md): Gets the item array from the specified input parameter.
- [GetItemWithCurveAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getitemwithcurveassistant.md): Gets an item and its associated curve assistant. If no assistant is available, this method will append an error message and throw.
- [GetItemWithSurfaceAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getitemwithsurfaceassistant.md): Gets an item and its associated surface assistant. If no assistant is available, this method will append an error message and throw.
- [GetItemWithTypeAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getitemwithtypeassistant.md): Gets an item and its associated type assistant. If no assistant is available, this method will append an error message and throw.
- [GetITree](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getitree.md): Gets the data tree from the specified input parameter.
- [GetITwig](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getitwig.md): Gets the tree twig from the specified input parameter.
- [GetLanguage](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getlanguage.md): Gets the language locale for this component. This will either harvest the data from an attached [LinguisticCulturePin](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.standard.linguisticculturepin.md) or it will return [Language.Invariant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.types.linguistic.language.md).
- [GetMeta](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getmeta.md): Gets the meta data (if any) associated with the item. You could access the data using [IDataAccess.GetPear<T>(int, Pear<T>)](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getpear.md), which has meta data embedded.
- [GetMetaArray](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getmetaarray.md): Gets the meta data array from the specified input parameter.
- [GetNull](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getnull.md): Gets whether the item is considered a null value. If you are accessing the items using [IDataAccess.GetItem<T>(int, T)](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getitem.md), and T is a value type, you must check for null this way. Or you could access the data using [IDataAccess.GetPear<T>(int, Pear<T>)](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getpear.md), which has null state embedded.
- [GetNullArray](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getnullarray.md): Gets the null array from the specified input parameter.
- [GetPear<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getpear.md): Gets the item+meta data pear from the specified input parameter. For this method to not throw exceptions the Access of the associated parameter must be set to Item.
- [GetPears<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getpears.md): Gets an array of [Pear<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.data.pear-1.md) instances from the specified input. This method works both when the [IParameter.Access](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.iparameter/access.md) of the parameter is set to [Access.Item](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.access.md) or [Access.Twig](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.access.md).
- [GetPointsInPlane](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getpointsinplane.md): Gets a set of three dimensional points and their projection onto a two-dimensional plane.
- [GetQuaternion](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getquaternion.md): Gets the quaternion stored in the specified input parameter. If the value is not a quaternion based transformation an error will be appended and false will be returned.
- [GetSingularTreeValue<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getsingulartreevalue.md): Gets the one and only non-null value out of an input tree. If the tree contains zero or more-than-one non-null values, an error will be added.
- [GetTolerance](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/gettolerance.md): (3 overloads) Gets the angular tolerance for this iteration. This will either harvest the data from an attached [AngularTolerancePin](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.standard.angulartolerancepin.md) or it will retrieve the angular tolerance of the current Rhino document.
- [GetTransform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/gettransform.md): Gets the proper transformation stored in the specified input parameter. Use this method if you do not wish to have to check whether the stored transformation represents a quaternion.
- [GetTree<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/gettree.md): Gets the data tree from the specified input parameter. For this method to not throw exceptions the Access of the associated parameter must be set to Tree.
- [GetTwig<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/gettwig.md): Gets the tree twig from the specified input parameter. For this method to not throw exceptions the Access of the associated parameter must be set to Twig.
- [GetUnitScaling](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getunitscaling.md): (2 overloads) Gets the unit system scaling factor for this iteration.
- [GetUnitSystem](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/getunitsystem.md): Gets the unit system for this iteration. This will either harvest the data from an attached [UnitSystemPin](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.standard.unitsystempin.md) or it will retrieve the unit system of the current Rhino document.
- [HasInputChanged](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/hasinputchanged.md): Gets whether the specified input contains different data from the previous time this component was run. Note that it does not perform a value comparison, it only checks to see whether the volatile data inside the input parameter is the exact same Tree instance as it is now.
- [NameIn](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/namein.md): Gets the [IDocumentObject.DisplayName](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/displayname.md) of the indicated input parameter.
- [NameOut](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/nameout.md): Gets the [IDocumentObject.DisplayName](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.idocumentobject/displayname.md) of the indicated output parameter.
- [Rectify<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/rectify.md): Make sure a value is repaired if it fails a test. This will automatically log a warning.
- [RectifyDomain](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/rectifydomain.md): (2 overloads) Make sure a number is within some domain.
- [RectifyEnum<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/rectifyenum.md): (obsolete) Test an integer to see if it is part of an enum.
- [RectifyLessThan](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/rectifylessthan.md): (2 overloads) Make sure a number is less than another number.
- [RectifyLessThanOrEqualTo](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/rectifylessthanorequalto.md): (2 overloads) Make sure a number is less than or equal to another number.
- [RectifyNonNegative](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/rectifynonnegative.md): (2 overloads) Make sure a number is at least zero.
- [RectifyPositive](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/rectifypositive.md): (3 overloads) Make sure a number is at least somewhat positive.
- [SetItem](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/setitem.md): (2 overloads) Sets an item with some meta data to the specified output parameter.
- [SetPear](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/setpear.md): Sets the item+meta data pear to the specified output parameter.
- [SetProgress](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/setprogress.md): Typically the component progress just counts how many iterations have been completed out of the total set. However it is possible to provide more fine-grained progress feedback using this method. This is typically only sensible if the component performs a potentially long running process in each iteration such as brep solid operations or quad-remeshing, which is able to synchronously report on its own progress.
- [SetTree](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/settree.md): Sets the data tree to the specified output parameter. It is the responsibility of the caller to ensure that multiple assigned trees are not inadvertendly merged. A tree prefix can be obtained from this [IDataAccess](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess.md) instance to avoid that.
- [SetTwig](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/settwig.md): (2 overloads) Sets the twig to the specified output parameter.
- [TryTransform](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/trytransform.md): (2 overloads) Try and apply a squishy deformation to the item and meta data inside a pear. This method calls [IDataAccess.GetTolerance(double)](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/gettolerance.md) as part of its process, so the component that calls this should probably be a [IPinCushion](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.ipincushion.md) component which supports [AbsoluteTolerancePin](https://developer.rhino3d.com/api/gh2/type/grasshopper2.parameters.standard.absolutetolerancepin.md).
- [Verify<T>](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verify.md): Apply a test to a value. This will automatically throw an exception if it doesn't pass.
- [VerifyAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verifyassistant.md): Verify that a type assistant is available for a given value. If no assistant is available this method will throw.
- [VerifyCurveAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verifycurveassistant.md): Verify that a curve assistant is available for a given value. If no assistant is available this method will throw.
- [VerifyDomain](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verifydomain.md): (2 overloads) Make sure a number is within some domain. This will automatically throw an exception if it isn't.
- [VerifyEqualTwigItemCount](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verifyequaltwigitemcount.md): Verify that two twigs have the same number of non-null values.
- [VerifyEqualTwigLeafCount](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verifyequaltwigleafcount.md): Verify that two twigs have the same length.
- [VerifyNonCoincident](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verifynoncoincident.md): (4 overloads) Verify two points are not coincident.
- [VerifyNonColinear](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verifynoncolinear.md): (2 overloads) Verify three points are not coincident or collinear.
- [VerifyNonEmpty](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verifynonempty.md): (2 overloads) Verify an array is not null or empty.
- [VerifyNonEqual](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verifynonequal.md): (3 overloads) Verify two numbers are not identical. This will automatically throw an exception if they aren't.
- [VerifyNonParallel](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verifynonparallel.md): Verify two vectors are not parallel or anti-parallel.
- [VerifyNonZeroVector](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verifynonzerovector.md): Verify a vector does not have zero length.
- [VerifySurfaceAssistant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verifysurfaceassistant.md): Verify that a surface assistant is available for a given value. If no assistant is available this method will throw.
- [VerifyTwigItemCount](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verifytwigitemcount.md): Verify that a twig contains a specific number of non-null values.
- [VerifyTwigLeafCount](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verifytwigleafcount.md): Verify that a twig contains a specific number of values (both nulls and non-nulls).
- [VerifyUnitVector](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.idataaccess/verifyunitvector.md): Ensure a vector has unit length.
