# SubD 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 class SubD : GeometryBase
```

Subdivision surface

## Constructors

- [SubD](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/ctor.md): (2 overloads) Create a new instance of SubD geometry

## Properties

- [Edges](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/edges.md): All edges in this SubD
- [Empty](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/empty.md): (static) Get a new, empty SubD object.
- [ErrorCount](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/errorcount.md): (static) The number of errors the SubD code has trapped since the process started. This is a diagnostic counter, not a per-SubD property. Sample it before and after an operation to find out whether that operation hit an internal error, which usually means the SubD is not valid.
- [Faces](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/faces.md): All faces in this SubD
- [IsSolid](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/issolid.md): Test SubD to see if the active level is a solid. A "solid" is a closed oriented manifold, or a closed oriented manifold.
- [TextureCoordinateType](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/texturecoordinatetype.md): Gets the texture cordinate type.
- [Vertices](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/vertices.md): All vertices in this SubD

## Methods

- [ClearEdgeSharpness](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/clearedgesharpness.md): Converts every sharp edge in this SubD to a smooth edge.
- [ClearEvaluationCache](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/clearevaluationcache.md): Clear all cached evaluation information (meshes, surface points, bounding boxes, ...) that depends on edge tags, vertex tags, and the location of vertex control points.
- [ClosestPoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/closestpoint.md): (3 overloads) Gets the point on this SubD's surface that is closest to a test point.
- [ClosestPoints](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/closestpoints.md): Gets the points on this SubD's surface that are closest to each of a list of test points. This is faster than calling [SubD.ClosestPoint(Point3d, Point3d, SubDComponentParameter)](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/closestpoint.md) in a loop because the spatial index over the surface is built once.
- [ComponentFromComponentIndex](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/componentfromcomponentindex.md): Returns a SubDComponent, either a SubDEdge, SubDFace, or SubDVertex, from a component index.
- [CopyEvaluationCache](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/copyevaluationcache.md): Expert function that copies cached evaluations of component subdivision points and limit surface information from src to this. Typically this is done for performance critical situations like control point editing:Copy a SubD to be modified (this does not copy the evaluation cache); Copy the evaluation cache from the unmodified SubD; Modify the SubD copy; Update the surface mesh cache so that only the modified parts are recalculated; Display, meshing, bounding boxes on the modified SubD are now available
- [CreateFromCylinder](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/createfromcylinder.md): (static) Creates a SubD form of a cylinder.
- [CreateFromLoft](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/createfromloft.md): (static) Creates a SubD lofted through shape curves.
- [CreateFromMesh](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/createfrommesh.md): (2 overloads, static) Create a new SubD from a mesh.
- [CreateFromSurface](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/createfromsurface.md): (static) Create a SubD that approximates the surface. If the surface is a SubD friendly NURBS surface and withCorners is true, then the SubD and input surface will have the same geometry.
- [CreateFromSweep](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/createfromsweep.md): (2 overloads, static) Fits a SubD through a series of profile curves that define the SubD cross-sections and one curve that defines a SubD edge.
- [CreateGlobeSphere](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/createglobesphere.md): (static) Creates a SubD sphere made from polar triangle fans and bands of quads. The result resembles a globe with triangle fans at the poles and the edges forming latitude parallels and longitude meridians.
- [CreateIcosahedron](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/createicosahedron.md): (static) Creates a SubD sphere based on an icosohedron (20 triangular faces and 5 valent vertices). This is a goofy topology for a Catmull-Clark subdivision surface (all triangles, all vertices have 5 edges). You may want to consider using the much behaved result from CreateSubDQuadSphere(sphere, vertexLocation, 1) or even the result from CreateSubDGlobeSphere().
- [CreateQuadSphere](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/createquadsphere.md): (static) Creates a SubD sphere made from quad faces.
- [CreateSubDBox](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/createsubdbox.md): (2 overloads, static) Creates a SubD box from a [Box](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.box.md).
- [CreateTriSphere](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/createtrisphere.md): (static) Creates a SubD sphere made from triangular faces. This is a goofy topology for a Catmull-Clark subdivision surface (all triangles and all vertices have 5 or 6 edges). You may want to consider using the much behaved result from CreateSubDQuadSphere() or even the result from CreateSubDGlobeSphere().
- [DeleteComponents](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/deletecomponents.md): (3 overloads) Deletes components from this SubD, identified by component index.
- [Dispose](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/dispose.md): Deletes the underlying native pointer during a Dispose call or GC collection
- [DissolveOrDeleteComponents](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/dissolveordeletecomponents.md): (2 overloads) Dissolves or deletes components, identified by component index. See [SubD.DissolveOrDeleteComponents(IEnumerable<SubDComponent>)](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/dissolveordeletecomponents.md).
- [DuplicateEdgeCurves](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/duplicateedgecurves.md): (2 overloads) Gets Nurbs form of all edges in this SubD, with clamped knots. NB: Does not update the SubD evaluation cache before getting the edges.
- [Evaluate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/evaluate.md): (3 overloads) Evaluates the location, first derivatives and unit normal of a point on this SubD's surface.
- [EvaluateCurvature](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/evaluatecurvature.md): (3 overloads) Evaluates the curvature of a point on this SubD's surface, choosing what to report exactly on an extraordinary vertex.
- [Flip](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/flip.md): Reverses the orientation of all SubD normals.
- [InterpolateSurfacePoints](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/interpolatesurfacepoints.md): (2 overloads) Modifies the SubD so that the SubD vertex limit surface points are equal to surface_points[]
- [JoinSubDs](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/joinsubds.md): (2 overloads, static) Joins an enumeration of SubDs to form as few as possible resulting SubDs. There may be more than one SubD in the result array.
- [MergeAllCoplanarFaces](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/mergeallcoplanarfaces.md): (2 overloads) Merges adjacent coplanar faces into single faces.
- [NonConstOperation](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/nonconstoperation.md): Destroy cache handle
- [Offset](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/offset.md): Makes a new SubD with vertices offset at distance in the direction of the control net vertex normals. Optionally, based on the value of solidify, adds the input SubD and a ribbon of faces along any naked edges.
- [OnSwitchToNonConst](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/onswitchtononconst.md): Called when this object switches from being considered "owned by the document" to being an independent instance.
- [PackFaces](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/packfaces.md): Resets the SubD to the default face packing if adding creases or deleting faces breaks the quad grids. It does not change the topology or geometry of the SubD. SubD face packs always stop at creases.
- [SetEdgeSharpness](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/setedgesharpness.md): (3 overloads) Sets the sharpness of a list of edges, identified by their ids.
- [SetVertexSurfacePoint](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/setvertexsurfacepoint.md): Set the location of a single vertex surface point. This function is not suitable for setting the locations of multiple vertex surface points that are topologically near to each other.
- [SharpEdgeCount](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/sharpedgecount.md): (2 overloads) Gets the number of sharp edges in this SubD. See [SubDEdge.IsSharp](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdedge/issharp.md) for what makes an edge sharp.
- [Subdivide](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/subdivide.md): (3 overloads) Apply the Catmull-Clark subdivision algorithm and save the results in this SubD.
- [SurfaceMeshCacheExists](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/surfacemeshcacheexists.md): Checks that a surface mesh evaluation cache exists, and that it has the required options. This cache is used by[SubDVertex.SurfacePoint()](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdvertex/surfacepoint.md),; [SubDEdge.ToNurbsCurve(bool)](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdedge/tonurbscurve.md), and; [Mesh.CreateFromSubD(SubD, int)](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.mesh/createfromsubd.md).
- [ToBrep](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/tobrep.md): (2 overloads) Create a Brep based on this SubD geometry, based on SubDToBrepOptions.Default options.
- [TransformComponents](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/transformcomponents.md): Transforms an enumerable of SubD components.
- [UpdateAllTagsAndSectorCoefficients](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/updatealltagsandsectorcoefficients.md): Updates vertex tag, edge tag, and edge coefficient values on the active level. After completing custom editing operations that modify the topology of the SubD control net or changing values of vertex or edge tags, the tag and sector coefficients information on nearby components in the edited areas need to be updated.
- [UpdateSurfaceMeshCache](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subd/updatesurfacemeshcache.md): Updates limit surface information returned by[SubDVertex.SurfacePoint()](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdvertex/surfacepoint.md),; [SubDEdge.ToNurbsCurve(bool)](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subdedge/tonurbscurve.md), and; [Mesh.CreateFromSubD(SubD, int)](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.mesh/createfromsubd.md).The density of the mesh cache is [SubDDisplayParameters.Default()](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.subddisplayparameters/default.md).

## Inherited Members

- From [GeometryBase](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase.md): [HasBrepForm](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/hasbrepform.md), [IsDeformable](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/isdeformable.md), [IsDocumentControlled](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/isdocumentcontrolled.md), [IsShallowDuplicate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/isshallowduplicate.md), [ObjectType](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/objecttype.md), [UserStringCount](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/userstringcount.md), [ComponentIndex](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/componentindex.md), [DataCRC](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/datacrc.md), [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), [Duplicate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/duplicate.md), [DuplicateShallow](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/duplicateshallow.md), [GetBoundingBox](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/getboundingbox.md), [GetUserString](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/getuserstring.md), [GetUserStrings](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/getuserstrings.md), [MakeDeformable](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/makedeformable.md), [MemoryEstimate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/memoryestimate.md), [Rotate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/rotate.md), [Scale](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/scale.md), [SetUserString](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/setuserstring.md), [Transform](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/transform.md), [Translate](https://developer.rhino3d.com/api/rhinocommon/type/rhino.geometry.geometrybase/translate.md)
- 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)
