# GeometryBase class

Namespace: [Rhino.Geometry](https://developer.rhino3d.com/api/rhinocommon/namespace/rhino.geometry.md) · Assembly: [RhinoCommon](https://developer.rhino3d.com/api/rhinocommon/assembly/rhinocommon.md)

```cs
[Serializable]
public abstract class GeometryBase : CommonObject
```

Provides a common base for most geometric classes. This class is abstract.

**Derived types:** [AnnotationBase](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.annotationbase.md), [Brep](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.brep.md), [BrepLoop](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.breploop.md), [Curve](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.curve.md), [DetailView](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.detailview.md), [Hatch](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.hatch.md), [InstanceReferenceGeometry](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.instancereferencegeometry.md), [Light](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.light.md), [Mesh](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.mesh.md), [MorphControl](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.morphcontrol.md), [Point](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.point.md), [Point3dGrid](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.point3dgrid.md), [PointCloud](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.pointcloud.md), [SubD](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd.md), [Surface](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.surface.md), [TextDot](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.textdot.md)

## Constructors

- [GeometryBase](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/ctor.md): Protected constructor for internal use.

## Properties

- [HasBrepForm](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/hasbrepform.md): Returns true if the Brep.TryConvertBrep function will be successful for this object
- [IsDeformable](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/isdeformable.md): true if object can be accurately modified with "squishy" transformations like projections, shears, and non-uniform scaling.
- [IsDocumentControlled](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/isdocumentcontrolled.md): If true this object may not be modified. Any properties or functions that attempt to modify this object when it is set to "IsReadOnly" will throw a NotSupportedException.
- [IsShallowDuplicate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/isshallowduplicate.md): Is this instance a 'shallow copy'. Shallow copies are no different than regular instances with the exception that they will convert to complete independent 'deep' copies if a non const operation is perform on the instance (something that mutates the internal data)
- [ObjectType](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/objecttype.md): Useful for switch statements that need to differentiate between basic object types like points, curves, surfaces, and so on.
- [UserStringCount](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/userstringcount.md): Gets the amount of user strings.

## Methods

- [ComponentIndex](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/componentindex.md): If this piece of geometry is a component in something larger, like a BrepEdge in a Brep, then this function returns the component index.
- [DataCRC](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/datacrc.md): Returns a CRC calculated from the information that defines the object. This CRC can be used as a quick way to see if two objects are not identical.
- [DeleteAllUserStrings](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/deletealluserstrings.md)
- [DeleteUserString](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/deleteuserstring.md)
- [Dispose](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/dispose.md): Overridden in order to destroy local display cache information
- [Duplicate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/duplicate.md): Constructs a deep (full) copy of this object.
- [DuplicateShallow](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/duplicateshallow.md): Constructs a light copy of this object. By "light", it is meant that the same underlying data is used until something is done to attempt to change it. For example, you could have a shallow copy of a very heavy mesh object and the same underlying data will be used when doing things like inspecting the number of faces on the mesh. If you modify the location of one of the mesh vertices, the shallow copy will create a full duplicate of the underlying mesh data and the shallow copy will become a deep copy.
- [GeometryEquals](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/geometryequals.md): (static) Determines if two geometries equal one another, in pure geometrical shape. This version only compares the geometry itself and does not include any user data comparisons. This is a comparison by value: for two identical items it will be true, no matter where in memory they may be stored.
- [GeometryReferenceEquals](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/geometryreferenceequals.md): (static) Determines if two objects are respectively shallow copies, new managed instantiations of the same geometry, or similar internal references to the exact same geometry, both in managed and in unmanaged code.
- [GetBoundingBox](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/getboundingbox.md): (4 overloads) Bounding box solver. Gets the world axis aligned bounding box for the geometry.
- [GetOverlaps](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/getoverlaps.md): (static) Detects overlapping regions among a set of input objects after they are orthogonally projected onto the supplied plane, and reports what should happen to each input object so that the overlaps can be removed.
- [GetUserString](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/getuserstring.md): Gets user string from this geometry.
- [GetUserStrings](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/getuserstrings.md): Gets a copy of all (user key string, user value string) pairs attached to this geometry.
- [MakeDeformable](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/makedeformable.md): If possible, converts the object into a form that can be accurately modified with "squishy" transformations like projections, shears, an non-uniform scaling.
- [MemoryEstimate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/memoryestimate.md): Computes an estimate of the number of bytes that this object is using in memory.
- [NonConstOperation](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/nonconstoperation.md): Destroy cache handle
- [OnSwitchToNonConst](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/onswitchtononconst.md): Is called when a non-constant operation occurs.
- [Rotate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/rotate.md): Rotates the object about the specified axis. A positive rotation angle results in a counter-clockwise rotation about the axis (right hand rule).
- [Scale](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/scale.md): Scales the object by the specified factor. The scale is centered at the origin.
- [SetUserString](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/setuserstring.md): Attach a user string (key,value combination) to this geometry.
- [Transform](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/transform.md): Transforms the geometry. If the input Transform has a SimilarityType of OrientationReversing, you may want to consider flipping the transformed geometry after calling this function when it makes sense. For example, you may want to call Flip() on a Brep after transforming it.
- [Translate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/translate.md): (2 overloads) Translates the object along the specified vector.

## Inherited Members

- From [CommonObject](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject.md): [Disposed](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/disposed.md), [HasUserData](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/hasuserdata.md), [IsValid](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/isvalid.md), [UserData](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/userdata.md), [UserDictionary](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/userdictionary.md), [ConstructConstObject](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/constructconstobject.md), [Dispose](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/dispose.md), [EnsurePrivateCopy](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/ensureprivatecopy.md), [GetObjectData](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/getobjectdata.md), [IsValidWithLog](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/isvalidwithlog.md), [ToJSON](https://developer.rhino3d.com/api/rhinocommon/type/rhino.runtime.commonobject/tojson.md)
