Surface
Represents a base class that is common to most RhinoCommon surface types.
A surface represents an entity that can be all visited by providing two independent parameters, usually called (u, v), or sometimes (s, t).
Inheritance Hierarchy
System.Object
Rhino.Runtime.CommonObject
Rhino.Geometry.GeometryBase
Rhino.Geometry.Surface
Namespace: Rhino.Geometry
Assembly: RhinoCommon (in RhinoCommon.dll)
Syntax
[SerializableAttribute]public class Surface : GeometryBase
The Surface type exposes the following members.
Constructors
Name
Description
Protected Method
Surface.
Protected constructor for internal use.
Protected Method
Surface(SerializationInfo, StreamingContext)
Protected constructor for internal use.
Properties
Name
Description
Public Property
Disposed
Indicates if this object has been disposed or the document it originally belonged to has been disposed.
(Inherited from CommonObject.)
Public Property
HasBrepForm
Returns true if the Brep.TryConvertBrep function will be successful for this object
(Inherited from GeometryBase.)
Public Property
HasUserData
Gets true if this class has any custom information attached to it through UserData.
(Inherited from CommonObject.)
Public Property
IsDeformable
true if object can be accurately modified with “squishy” transformations like projections, shears, and non-uniform scaling.
(Inherited from GeometryBase.)
Public Property
IsDocumentControlled
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.
(Inherited from GeometryBase.)
Public Property
IsSolid
Gets a values indicating whether a surface is solid.
Public Property
IsSubDFriendly
Returns true if the surface is a non-rational, uniform, natural or periodic, cubic NURBS surface. Otherwise, false is returned.
Public Property
IsValid
Tests an object to see if it is valid.
(Inherited from CommonObject.)
Public Property
ObjectType
Useful for switch statements that need to differentiate between basic object types like points, curves, surfaces, and so on.
(Inherited from GeometryBase.)
Public Property
UserData
List of custom information that is attached to this class.
(Inherited from CommonObject.)
Public Property
UserDictionary
Dictionary of custom information attached to this class. The dictionary is actually user data provided as an easy to use shareable set of information.
(Inherited from CommonObject.)
Public Property
UserStringCount
Gets the amount of user strings.
(Inherited from GeometryBase.)
Methods
Name
Description
Public Method
Code Example
ClosestPoint
Input the parameters of the point on the surface that is closest to testPoint.
Public Method
ClosestSide
Gets the side that is closest, in terms of 3D-distance, to a U and V parameter.
Public Method
ComponentIndex
If this piece of geometry is a component in something larger, like a BrepEdge in a Brep, then this function returns the component index.
(Inherited from GeometryBase.)
Protected Method
ConstructConstObject
Assigns a parent object and a sub-object index to this.
(Inherited from CommonObject.)
Public Method
Static Member
CreateExtrusion
Constructs a surface by extruding a curve along a vector.
Public Method
Static Member
CreateExtrusionToPoint
Constructs a surface by extruding a curve to a point.
Public Method
Static Member
CreatePeriodicSurface(Surface, Int32)
Constructs a periodic surface from a base surface and a direction.
Public Method
Static Member
CreatePeriodicSurface(Surface, Int32, Boolean)
Constructs a periodic surface from a base surface and a direction.
Public Method
Static Member
CreateRollingBallFillet(Surface, Surface, Double, Double)
Constructs a rolling ball fillet between two surfaces.
Public Method
Static Member
CreateRollingBallFillet(Surface, Point2d, Surface, Point2d, Double, Double)
Constructs a rolling ball fillet between two surfaces.
Public Method
Static Member
CreateRollingBallFillet(Surface, Boolean, Surface, Boolean, Double, Double)
Constructs a rolling ball fillet between two surfaces.
Public Method
Static Member
CreateSoftEditSurface
Creates a soft edited surface from an existing surface using a smooth field of influence.
Public Method
Code Example
CurvatureAt
Computes the curvature at the given UV coordinate.
Public Method
DataCRC
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.
(Inherited from GeometryBase.)
Public Method
Degree
Returns the maximum algebraic degree of any span (or a good estimate if curve spans are not algebraic).
Public Method
DeleteAllUserStrings
(Inherited from GeometryBase.)
Public Method
DeleteUserString
(Inherited from GeometryBase.)
Public Method
Dispose.
Actively reclaims unmanaged resources that this instance uses.
(Inherited from CommonObject.)
Protected Method
Dispose(Boolean)
Overridden in order to destroy local display cache information
(Inherited from GeometryBase.)
Public Method
Domain
Gets the domain in a direction.
Public Method
Duplicate
Constructs a deep (full) copy of this object.
(Inherited from GeometryBase.)
Public Method
DuplicateShallow
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.
(Inherited from GeometryBase.)
Public Method
EnsurePrivateCopy
If you want to keep a copy of this class around by holding onto it in a variable after a command completes, call EnsurePrivateCopy to make sure that this class is not tied to the document. You can call this function as many times as you want.
(Inherited from CommonObject.)
Public Method
Equals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Public Method
Evaluate
Evaluates a surface mathematically.
Public Method
Extend(Int32, Interval)
Analytically extends the surface to include the interval.
Public Method
Extend(IsoStatus, Double, Boolean)
Extends an untrimmed surface along one edge.
Protected Method
Finalize
Passively reclaims unmanaged resources when the class user did not explicitly call Dispose().
(Inherited from CommonObject.)
Public Method
Fit
Fits a new surface through an existing surface.
Public Method
FitCurveToSurface
Public Method
Code Example
FrameAt
Computes the orient plane on a surface given a U and V parameter.
This is the simple evaluation call with no error handling.
Public Method
Code Example
GetBoundingBox(Boolean)
Bounding box solver. Gets the world axis aligned bounding box for the geometry.
(Inherited from GeometryBase.)
Public Method
Code Example
GetBoundingBox(Plane)
Aligned Bounding box solver. Gets the plane aligned bounding box.
(Inherited from GeometryBase.)
Public Method
GetBoundingBox(Transform)
Aligned Bounding box solver. Gets the world axis aligned bounding box for the transformed geometry.
(Inherited from GeometryBase.)
Public Method
GetBoundingBox(Plane, Box.)
Aligned Bounding box solver. Gets the plane aligned bounding box.
(Inherited from GeometryBase.)
Public Method
GetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public Method
GetNextDiscontinuity(Int32, Continuity, Double, Double, Double.)
Searches for a derivative, tangent, or curvature discontinuity.
Public Method
GetNextDiscontinuity(Int32, Continuity, Double, Double, Double, Double, Double.)
Searches for a derivative, tangent, or curvature discontinuity.
Public Method
GetNurbsFormParameterFromSurfaceParameter
Translates a parameter from the current surface to the parameter space of the surface returned by
ToNurbsSurface.
.Public Method
GetObjectData
Populates a System.Runtime.Serialization.SerializationInfo with the data needed to serialize the target object.
(Inherited from CommonObject.)
Public Method
GetSpanVector
Gets array of span “knots”.
Public Method
GetSurfaceParameterFromNurbsFormParameter
Translates a parameter from a value on the surface returned by
ToNurbsSurface.
to the current surface.Public Method
Code Example
GetSurfaceSize
Gets an estimate of the size of the rectangle that would be created if the 3d surface where flattened into a rectangle.
Public Method
GetType
Gets the Type of the current instance.
(Inherited from Object.)
Public Method
GetUserString
Gets user string from this geometry.
(Inherited from GeometryBase.)
Public Method
GetUserStrings
Gets a copy of all (user key string, user value string) pairs attached to this geometry.
(Inherited from GeometryBase.)
Public Method
HasNurbsForm
Is there a NURBS surface representation of this surface.
Public Method
InterpolatedCurveOnSurface
Constructs an interpolated curve on a surface, using 3D points.
Public Method
InterpolatedCurveOnSurfaceUV(IEnumerable.Point2d., Double)
Returns a curve that interpolates points on a surface. The interpolant lies on the surface.
Public Method
InterpolatedCurveOnSurfaceUV(IEnumerable.Point2d., Double, Boolean, Int32)
Returns a curve that interpolates points on a surface. The interpolant lies on the surface.
Public Method
IsAtSeam
Tests if a surface parameter value is at a seam.
Public Method
IsAtSingularity
Tests if a surface parameter value is at a singularity.
Public Method
IsClosed
Gets a value indicating if the surface is closed in a direction.
Public Method
IsCone.
Determines if the surface is a portion of a cone within RhinoMath.ZeroTolerance.
Public Method
IsCone(Double)
Determines if the surface is a portion of a cone within a given tolerance.
Public Method
IsContinuous
Tests continuity at a surface parameter value.
Public Method
IsCylinder.
Determines if the surface is a portion of a cylinder within RhinoMath.ZeroTolerance.
Public Method
IsCylinder(Double)
Determines if the surface is a portion of a cylinder within a given tolerance.
Public Method
IsIsoparametric(BoundingBox)
Determines if a 2d bounding box is isoparametric in the parameter space of this surface.
Public Method
IsIsoparametric(Curve)
Determines if a 2d curve is isoparametric in the parameter space of this surface.
Public Method
IsIsoparametric(Curve, Interval)
Determines if a 2D curve is isoparametric in the parameter space of this surface.
Public Method
Code Example
IsoCurve
Gets isoparametric curve.
Public Method
IsPeriodic
Gets a value indicating if the surface is periodic in a direction (default is false).
Public Method
Code Example
IsPlanar.
Tests a surface to see if it is planar to zero tolerance.
Public Method
IsPlanar(Double)
Tests a surface to see if it is planar to a given tolerance.
Public Method
IsSingular
true if surface side is collapsed to a point.
Public Method
IsSphere.
Determines if the surface is a portion of a sphere within RhinoMath.ZeroTolerance.
Public Method
IsSphere(Double)
Determines if the surface is a portion of a sphere within a given tolerance.
Public Method
IsTorus.
Determines if the surface is a portion of a torus within RhinoMath.ZeroTolerance.
Public Method
IsTorus(Double)
Determines if the surface is a portion of a torus within a given tolerance.
Public Method
IsValidWithLog
Determines if an object is valid. Also provides a report on errors if this object happens not to be valid.
(Inherited from CommonObject.)
Public Method
LocalClosestPoint
Find parameters of the point on a surface that is locally closest to the testPoint. The search for a local close point starts at seed parameters.
Public Method
MakeDeformable
If possible, converts the object into a form that can be accurately modified with “squishy” transformations like projections, shears, an non-uniform scaling.
(Inherited from GeometryBase.)
Protected Method
MemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public Method
MemoryEstimate
Computes an estimate of the number of bytes that this object is using in memory.
(Inherited from GeometryBase.)
Protected Method
NonConstOperation
Destroy cache handle
(Inherited from GeometryBase.)
Public Method
Code Example
NormalAt
Computes the surface normal at a point.
This is the simple evaluation call - it does not support error handling.
Public Method
Offset
Constructs a new surface which is offset from the current surface.
Protected Method
OnSwitchToNonConst
Is called when a non-constant operation occurs.
(Inherited from GeometryBase.)
Public Method
PointAt
Evaluates a point at a given parameter.
Public Method
Pullback(Curve, Double)
Pulls a 3d curve back to the surface’s parameter space.
Public Method
Pullback(Curve, Double, Interval)
Pulls a 3d curve back to the surface’s parameter space.
Public Method
Pushup(Curve, Double)
Computes a 3d curve that is the composite of a 2d curve and the surface map.
Public Method
Pushup(Curve, Double, Interval)
Computes a 3d curve that is the composite of a 2d curve and the surface map.
Public Method
Rebuild
Rebuilds an existing surface to a given degree and point count.
Public Method
RebuildOneDirection
Rebuilds an existing surface with a new surface to a given point count in either the u or v directions independently.
Public Method
RefitSimplySplitSurface
This routine accepts a 3-d trim curve (trimCrv3d). The trim curve is assumed to run from one surface edge to the opposite edge; this is referred to as a “simple” trim curve, roughly parallel to one of the srf directions (either u or v). We refer to that parameter as the “trim parameter”. The routine splits the surface via the trim curve, and then refits either side (“upper” = “above the trim”, and “lower” = “below the trim”) as a set of untrimmed Nurbs surfaces. The idea is to retain, as much as possible, the Nurbs structure of srf, especially in the trim parameter.
Public Method
RefitSplit
Splits the surface into two and refits the split edge
Public Method
Reverse(Int32)
Reverses parameterization Domain changes from [a,b] to [-b,-a]
Public Method
Reverse(Int32, Boolean)
Same as Reverse, but if inPlace is set to true this Surface is modified instead of a new copy being created.
Public Method
Rotate
Rotates the object about the specified axis. A positive rotation angle results in a counter-clockwise rotation about the axis (right hand rule).
(Inherited from GeometryBase.)
Public Method
Scale
Scales the object by the specified factor. The scale is centered at the origin.
(Inherited from GeometryBase.)
Public Method
SetDomain
Sets the domain in a direction.
Public Method
SetUserString
Attach a user string (key,value combination) to this geometry.
(Inherited from GeometryBase.)
Public Method
ShortPath
Constructs a geodesic between 2 points, used by ShortPath command in Rhino.
Public Method
Smooth(Double, Boolean, Boolean, Boolean, Boolean, SmoothingCoordinateSystem)
Smooths a surface by averaging the positions of control points in a specified region.
Public Method
Smooth(Double, Boolean, Boolean, Boolean, Boolean, SmoothingCoordinateSystem, Plane)
Smooths a surface by averaging the positions of control points in a specified region.
Public Method
SpanCount
Gets number of smooth nonempty spans in the parameter direction.
Public Method
Split
Splits (divides) the surface into two parts at the specified parameter
Public Method
ToBrep
Converts the surface into a Brep.
Public Method
ToJSON
Create a JSON string representation of this object
(Inherited from CommonObject.)
Public Method
ToNurbsSurface.
Gets a NURBS surface representation of this surface. Default tolerance of 0.0 is used.
Public Method
ToNurbsSurface(Double, Int32.)
Gets a NURBS surface representation of this surface.
Public Method
ToString
Returns a string that represents the current object.
(Inherited from Object.)
Public Method
Transform
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.
(Inherited from GeometryBase.)
Public Method
Translate(Vector3d)
Translates the object along the specified vector.
(Inherited from GeometryBase.)
Public Method
Translate(Double, Double, Double)
Translates the object along the specified vector.
(Inherited from GeometryBase.)
Public Method
Transpose.
Transposes surface parameterization (swap U and V)
Public Method
Transpose(Boolean)
Transposes surface parameterization (swap U and V)
Public Method
Trim
Constructs a sub-surface that covers the specified UV trimming domain.
Public Method
TryGetCone(Cone.)
Tests a surface to see if it is a portion of a cone within RhinoMath.ZeroTolerance and return the cone.
Public Method
TryGetCone(Cone., Double)
Tests a surface to see if it is a portion of a cone and returns the cone.
Public Method
TryGetCylinder(Cylinder.)
Tests a surface to see if it is a portion of a cylinder within RhinoMath.ZeroTolerance and return the cylinder.
Public Method
TryGetCylinder(Cylinder., Double)
Tests a surface to see if it is a portion of a cylinder and return the infinite cylinder.
Public Method
TryGetFiniteCylinder
Tests a surface with the assumption that it might be a right circular cylinder and returns this geometry.
Public Method
TryGetPlane(Plane.)
Tests a surface for planarity and return the plane.
Public Method
Code Example
TryGetPlane(Plane., Double)
Tests a surface for planarity and return the plane.
Public Method
TryGetSphere(Sphere.)
Test a surface to see if it is a portion of a sphere and return the sphere.
Public Method
TryGetSphere(Sphere., Double)
Test a surface to see if it is a portion of a sphere and return the sphere.
Public Method
TryGetTorus(Torus.)
Tests a surface to see if it is a portion of a torus within RhinoMath.ZeroTolerance and returns the torus.
Public Method
TryGetTorus(Torus., Double)
Tests a surface to see if it is a portion of a torus and returns the torus.
Public Method
VariableOffset(Double, Double, Double, Double, Double)
Copies a surface so that all locations at the corners of the copied surface are specified distances from the original surface.
Public Method
VariableOffset(Double, Double, Double, Double, IEnumerable.Point2d., IEnumerable.Double., Double)
Copies a surface so that all locations at the corners, and from specified interior locations, of the copied surface are specified distances from the original surface.
Inheritance Hierarchy
System.Object
Rhino.Runtime.CommonObject
Rhino.Geometry.GeometryBase
Rhino.Geometry.Surface
Rhino.Geometry.Extrusion
Rhino.Geometry.NurbsSurface
Rhino.Geometry.PlaneSurface
Rhino.Geometry.RevSurface
Rhino.Geometry.SumSurface
Rhino.Geometry.SurfaceProxy