OffsetSurface Class

A mathematical representation of an offset surface.

Definition of offset surface, quoted from the STEP manual ISO 10303-42:2000(E): This is a procedural definition of a simple offset surface at a normal distance from the originating surface. Distance may be positive, negative, or zero to indicate the preferred side of the surface. The offset surface takes its parametrization directly from that of its basis surface, corresponding points having identical parameter values. The offset surface is parametrized as O(u, v) = S(u, v) + d*N(u, v), where N(u, v) is the oriented unit normal vector of the basis surface S at parameter value (u, v), and d is the signed offset distance.

In Revit, we restrict the types of basis surfaces for which an OffsetSurf can be created for the following reasons:

  • The offsets of Plane, CylindricalSurface, ConicalSurface and RevolvedSurface are of the same type as the original surface and they have closed form solutions. So those surfaces are not taken as basis surfaces of the OffsetSurface class. That leaves HermiteSurface and RuledSurface.
  • As a Revit surface, we require the OffsetSurface to be C2 continuous. That implies that the basis surface should be C3 continuous. That is because the OffsetSurface evaluation involves the normal of the basis surface and the order of continuity of the normal is one less than that of the surface.
  • HermiteSurfaces in general are not C3 continuous, even though some of them can be. A RuledSurface will be C3 continuous if its parametric curves are C3 continuous. So we don't allow a HermiteSurface to be a basis surface and allow only RuledSurfaces whose parametric curves are C3 continuous as basis surfaces of the OffsetSurface class.

The OffsetSurface class will own a copy of the basis surface and use it for many of its methods, which may implicitly assume that the OffsetSurface and the basis surface have the same envelope. So we keep the envelopes of the OffsetSurf and its basis surface in sync.

Inheritance Hierarchy
SystemObject
  Autodesk.Revit.DBSurface
    Autodesk.Revit.DBOffsetSurface

Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntax
public class OffsetSurface : Surface

The OffsetSurface type exposes the following members.

Properties
 NameDescription
Public propertyIsValidObject Specifies whether the .NET object represents a valid Revit entity.
(Inherited from Surface)
Public propertyOrientationMatchesParametricOrientation Indicates whether this Surface's orientation is the same as or opposite to its parametric orientation.
(Inherited from Surface)
Top
Methods
 NameDescription
Public methodDispose
(Inherited from Surface)
Public methodEqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
Public methodGetBasisSurface Returns a copy of basis surface of this OffsetSurface.
Public methodGetBoundingBoxUV Gets the UV bounding box of the surface.
(Inherited from Surface)
Public methodGetHashCodeServes as the default hash function.
(Inherited from Object)
Public methodGetOffsetDistance Returns offset distance of this OffsetSurface.
Public methodGetTypeGets the Type of the current instance.
(Inherited from Object)
Public methodIsOrientationSameAsBasisSurface Indicates whether the orientation of the OffsetSurface is same as that of its basis surface, in the sense that their oriented normals at any (u, v) have the same direction.
Public methodProject Project a 3D point orthogonally onto a surface (to find the nearest point). Throws InvalidOperationException if the projection fails.
(Inherited from Surface)
Public methodProjectWithGuessPoint Project a 3D point orthogonally onto a surface (to find the nearest point). This method is meant to be used when a good approximate solution for the projection is available. Throws InvalidOperationException if the projection fails.
(Inherited from Surface)
Public methodToStringReturns a string that represents the current object.
(Inherited from Object)
Top
See Also