public sealed class SubDFace : SubDComponent
Single face of a SubD

Properties

ComponentDirection

public bool ComponentDirection { get; set; }
True when this component is referenced with the reverse of its natural orientation. This is always false for vertices, and for edges and faces obtained directly from the parent SubD; it is only set on components reached through an oriented reference, such as the face on a given side of an oriented edge.
inherited fromSubDComponent

ControlNetCenterFrame

#Since v8.0
public Plane ControlNetCenterFrame { get; }
The face's control net center frame is a plane with normal equal to ControlNetCenterNormal and origin equal to ControlNetCenterPoint. The x and y axes of the frame have no predictable relationship to the face or SubD control net topology.
A plane with unit normal equal to ControlNetCenterNormal and origin equal to ControlNetCenterPoint.

ControlNetCenterNormal

#Since v8.0
public Vector3d ControlNetCenterNormal { get; }
When the face's control net polygon is planar, the face's control net normal is a unit vector perpendicular to the plane that points outwards. If the control net polygon is not planar, the control net normal is control net normal is a unit vector that is the average of the control polygon's corner normals.
A unit vector that is normal to planar control net polygons and a good compromise for nonplanar control net polygons.

ControlNetCenterPoint

#Since v8.0
public Point3d ControlNetCenterPoint { get; }
The face's control net center point is the average of the face's vertex control net points. This is the same point as the face's subdivision point.
The average of the face's vertex control net points

EdgeCount

#Since v7.0
public int EdgeCount { get; }
Number of edges for this face. Note that EdgeCount is always the same as VertexCount. Two properties are provided simply for clarity.

Id

[CLSCompliant(false)] public uint Id { get; }
Unique id within the parent SubD for this item
inherited fromSubDComponent

IsDamaged

public bool IsDamaged { get; }
Returns true if the SubD component is damaged.
inherited fromSubDComponent

IsDeleted

public bool IsDeleted { get; }
Returns true if the SubD component is deleted.
inherited fromSubDComponent

IsHidden

public bool IsHidden { get; }
Returns true if the SubD component is hidden.
inherited fromSubDComponent

IsHighlighted

public bool IsHighlighted { get; }
Returns true if the SubD component is highlighted.
inherited fromSubDComponent

IsLocked

public bool IsLocked { get; }
Returns true if the SubD component is locked.
inherited fromSubDComponent

IsSelected

public bool IsSelected { get; }
Returns true if the SubD component is selected.
inherited fromSubDComponent

LimitSurfaceCenterPoint

#Since v7.0
public Point3d LimitSurfaceCenterPoint { get; }
Get the limit surface point location at the center of the face

ParentSubD

public SubD ParentSubD { get; }
SubD that this component belongs to
inherited fromSubDComponent

PerFaceColor

#Since v7.0
public Color PerFaceColor { get; set; }
If per-face color is "Empty", then this face does not have a custom color

SurfaceCenterFrame

#Since v8.0
public Plane SurfaceCenterFrame { get; }
Get the limit surface tangent plane at the center of the face. The plane's origin is the point on the limit surface at the center of the face. The plane's z axis is the limit surface normal vector at the center of the face.
Limit surface tanget plane at the face's center.

SurfaceCenterNormal

#Since v8.0
public Vector3d SurfaceCenterNormal { get; }
Get the limit surface normal vector at the center of the face.
Limit surface normal vector at the face's center.

VertexCount

#Since v7.0
public int VertexCount { get; }
Number of vertices for this face. Note that EdgeCount is always the same as VertexCount. Two properties are provided simply for clarity.

Methods

ClearSavedSubdivisionPoints

#Since v8.36
[ConstOperation] public void ClearSavedSubdivisionPoints(bool clearNeighborhood)
Discards the cached subdivision and surface points for this face, so they are recomputed on next use.
clearNeighborhood (bool)If true, the cached points of the neighboring components are discarded too. Moving a control net point changes the surface around it, not just at it, so pass true after an edit unless you know only this face is affected.

ComponentIndex

#Since v7.9
[ConstOperation] public ComponentIndex ComponentIndex()
Gets the component index of this face.
The component index.

EdgeAt

#Since v7.0
public SubDEdge EdgeAt(int index)
Get an edge at a given index
index (int)

EdgeDirectionMatchesFaceOrientation

#Since v7.0
public bool EdgeDirectionMatchesFaceOrientation(int index)
Check if a given edge in this face has the same direction as the face orientation
index (int)

Equals

public override bool Equals(object obj)
Determines whether an object is a SubDComponent referring to the same component, with the same orientation, in the same SubD.
inherited fromSubDComponent
obj (object)The object to compare with.
Object.Equals

Equals

public bool Equals(SubDComponent other)
Determines whether this component and another refer to the same component, with the same orientation, in the same SubD.
inherited fromSubDComponent
other (SubDComponent)The component to compare with.

GetHashCode

public override int GetHashCode()
Gets a hash code for this component.
inherited fromSubDComponent

ReverseComponentDirection

public SubDComponent ReverseComponentDirection()
Flips SubDComponent.ComponentDirection and returns this component, so it can be used inline where an oppositely oriented reference is wanted.
inherited fromSubDComponent
This component.

ToString

public override string ToString()
Returns a string of the form "SubDEdge(+12)", naming the component type, the orientation it is referenced with, and its id.
inherited fromSubDComponent
Object.ToString

VertexAt

#Since v7.0
public SubDVertex VertexAt(int index)
Get a vertex that this face uses by index
index (int)