NexoNest / Computational geometry / Rhino 8

From a signature
to the geometry.

Understand what the numbers mean, which assumptions matter, and what to check before using a result.

205 classes2583 member targets182 authored lessons

In PyCharm, use Ctrl + Q for a short geometry note and follow its Learn more link here. Each class and member has a permanent, case-sensitive link. Overloads share one member section.

How to read this reference

Authored lessons explain geometric concepts and pitfalls. Other entries show the API-derived summary and signatures. Coverage is a partial Python view of RhinoCommon; supporting .NET types, null results, collection behavior, and runtime overload selection may need additional handling. Collection outputs use Sequence or Mapping abstractions rather than promising Python lists or dictionaries.

Examples target Rhino 8 Python and use geometry in memory. Stubs do not execute geometry or install Rhino. Model units, tolerances, validity, and success flags remain part of your algorithm's contract.

API summaries originate in RhinoCommon XML documentation. Rhino and RhinoCommon are products of Robert McNeel & Associates. NexoRhino is an independent NexoNest project. See the software terms.

AngularDimension

17 members
AngularDimension

Represents a dimension of an entity that can be measured with an angle.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, arc: Arc, offset: float) -> None
def __init__(self, line1: Line, pointOnLine1: Point3d, line2: Line, pointOnLine2: Point3d, pointOnAngularDimensionArc: Point3d, bSetExtensionPoints: bool) -> None
def __init__(self, plane: Plane, horizontal: Vector3d, centerpoint: Point3d, defpoint1: Point3d, defpoint2: Point3d, dimlinepoint: Point3d) -> None
def __init__(self, plane: Plane, horizontal: Vector3d, extpoint1: Point3d, extpoint2: Point3d, dirpoint1: Point3d, dirpoint2: Point3d, dimlinepoint: Point3d) -> None

Constructs an angular dimension.

Permanent link · Official RhinoCommon reference

CenterPoint

def CenterPoint(self) -> Point2d

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DefPoint1

def DefPoint1(self) -> Point2d

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DefPoint2

def DefPoint2(self) -> Point2d

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DimlinePoint

def DimlinePoint(self) -> Point2d

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ArrowPoint1

def ArrowPoint1(self) -> Point2d

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ArrowPoint2

def ArrowPoint2(self) -> Point2d

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AngleFormat

def AngleFormat(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AngleResolution

def AngleResolution(self) -> int

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AngleRoundoff

def AngleRoundoff(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AngleZeroSuppression

def AngleZeroSuppression(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AdjustFromPoints

def AdjustFromPoints(self, plane: Plane, centerpoint: Point3d, defpoint1: Point3d, defpoint2: Point3d, dimlinepoint: Point3d) -> bool
def AdjustFromPoints(self, plane: Plane, extpoint1: Point3d, extpoint2: Point3d, dirpoint1: Point3d, dirpoint2: Point3d, dimlinepoint: Point3d) -> bool

Updates dimension geometry from point locations.

Permanent link · Official RhinoCommon reference

Create

def Create(dimStyle: DimensionStyle, line1: Line, pointOnLine1: Point3d, line2: Line, pointOnLine2: Point3d, pointOnAngularDimensionArc: Point3d, bSetExtensionPoints: bool) -> AngularDimension
def Create(dimStyle: DimensionStyle, plane: Plane, horizontal: Vector3d, centerpoint: Point3d, defpoint1: Point3d, defpoint2: Point3d, dimlinepoint: Point3d) -> AngularDimension
def Create(dimStyle: DimensionStyle, plane: Plane, horizontal: Vector3d, extpoint1: Point3d, extpoint2: Point3d, dirpoint1: Point3d, dirpoint2: Point3d, dimlinepoint: Point3d) -> AngularDimension
def Create(styleId: Any, plane: Plane, extpoint1: Point3d, extpoint2: Point3d, dirpoint1: Point3d, dirpoint2: Point3d, dimlinepoint: Point3d) -> AngularDimension

The angle between the lines is dimensioned. If the lines intersect in a single point, that point is used as the center of the angular dimension arc.In this case, there are eight possible angles to dimension.The pointOnAngularDimensionArc and pointOnLine parameters are used to select the correct angle to dimension. If a pointOnLine parameter is not set, the corresponding line's midpoint is used. If the lines are colinear, the point on the line closest to pointOnAngularDimensionArc is the center of the angular dimension arc.

Permanent link · Official RhinoCommon reference

Get3dPoints

def Get3dPoints(self) -> tuple[bool, Point3d, Point3d, Point3d, Point3d, Point3d, Point3d, Point3d]

Get locations of dimension's 3d points

Permanent link · Official RhinoCommon reference

GetAngleDisplayText

def GetAngleDisplayText(self, style: DimensionStyle) -> str

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

GetDisplayLines

def GetDisplayLines(self, style: DimensionStyle, scale: float) -> tuple[bool, Sequence[Line], Sequence[Arc]]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

GetTextRectangle

def GetTextRectangle(self) -> tuple[bool, Sequence[Point3d]]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AnnotationBase

53 members
AnnotationBase

Provides a common base class to all annotation geometry. This class refers to the geometric element that is independent from the document.

Permanent link · Official RhinoCommon reference

AnnotationType

def AnnotationType(self) -> AnnotationType

Type of annotation

Permanent link · Official RhinoCommon reference

DimensionStyleId

def DimensionStyleId(self) -> Any

Id of this annotation's parent dimstyle If this annotation has overrides to dimstyle properties, those overrides will be represented in the DimensionStyle returned by DimensionStyle(ParentStyle)

Permanent link · Official RhinoCommon reference

HasPropertyOverrides

def HasPropertyOverrides(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DimensionStyle

def DimensionStyle(self) -> DimensionStyle

If there are no overrides then the parent style is returned otherwise the dimension style saved with the annotation is returned.

Permanent link · Official RhinoCommon reference

ParentDimensionStyle

def ParentDimensionStyle(self) -> DimensionStyle

The parent dimension style associated with this annotation

Permanent link · Official RhinoCommon reference

TextHeight

def TextHeight(self) -> float

AnnotationBase.TextHeight Gets the parent dimstyle for the annotation and gets or sets the text height in the dimstyle

Permanent link · Official RhinoCommon reference

MaskEnabled

def MaskEnabled(self) -> bool

Determines whether or not to draw a Text Mask

Permanent link · Official RhinoCommon reference

MaskUsesViewportColor

def MaskUsesViewportColor(self) -> bool

If true, the viewport's color is used for the mask color. If false, the color defined by MaskColor is used

Permanent link · Official RhinoCommon reference

MaskColorSource

def MaskColorSource(self) -> Any

Gets or sets whether the mask background color is from the background or from a color

Permanent link · Official RhinoCommon reference

DrawTextFrame

def DrawTextFrame(self) -> bool

Gets or sets whether to draw a frame around a text mask

Permanent link · Official RhinoCommon reference

MaskFrame

def MaskFrame(self) -> Any

Gets or sets whether to draw a frame around a text mask

Permanent link · Official RhinoCommon reference

MaskColor

def MaskColor(self) -> Any

Color to use for drawing a text mask when it is enabled. If the mask is enabled and MaskColor is System.Drawing.Color.Transparent, then the viewport's color will be used for the MaskColor

Permanent link · Official RhinoCommon reference

MaskOffset

def MaskOffset(self) -> float

Offset for the border around text of the rectangle used to draw the mask. This value multiplied by TextHeight is the offset on each side of the tight rectangle around the text characters to the mask rectangle. The default value is 0.1.

Permanent link · Official RhinoCommon reference

DimensionScale

def DimensionScale(self) -> float

Gets or sets the dimension scale

Permanent link · Official RhinoCommon reference

DrawForward

def DrawForward(self) -> bool

Gets or sets whether the text is oriented towards the reader when viewed from behind

Permanent link · Official RhinoCommon reference

Font

def Font(self) -> Any

The base Font for the text of the annotation. The text string is rich text and therefore a different font that the base font can be associated with sub strings of the text

Permanent link · Official RhinoCommon reference

FontIndex

def FontIndex(self) -> int

Obsolete; use Font property instead

Permanent link · Official RhinoCommon reference

DimensionLengthDisplay

def DimensionLengthDisplay(self) -> Any

Length display units and format

Permanent link · Official RhinoCommon reference

AlternateDimensionLengthDisplay

def AlternateDimensionLengthDisplay(self) -> Any

Alternate length display units and format

Permanent link · Official RhinoCommon reference

DecimalSeparator

def DecimalSeparator(self) -> str

Set or get the decimal separator c

Permanent link · Official RhinoCommon reference

Plane

def Plane(self) -> Plane

Plane that this annotation lies on

Permanent link · Official RhinoCommon reference

TextFormula

def TextFormula(self) -> str

See RichText

Permanent link · Official RhinoCommon reference

RichText

def RichText(self) -> str

Text including additional RTF formatting information

Permanent link · Official RhinoCommon reference

Text

def Text(self) -> str

Text including additional RTF formatting information

Permanent link · Official RhinoCommon reference

PlainText

def PlainText(self) -> str

Text stripped of RTF formatting information

Permanent link · Official RhinoCommon reference

PlainTextWithFields

def PlainTextWithFields(self) -> str

Text stripped of RTF formatting information and with field expressions intact

Permanent link · Official RhinoCommon reference

TextHasRtfFormatting

def TextHasRtfFormatting(self) -> bool

Gets a value indicating whether the annotation's text is formatted as RTF (Rich Text Format). Returns true if the text begins with an RTF header; otherwise, false.

Permanent link · Official RhinoCommon reference

FirstCharFont

def FirstCharFont(self) -> Any

Returns the font used by the first run of text in an annotation

Permanent link · Official RhinoCommon reference

TextModelWidth

def TextModelWidth(self) -> float

Width of text in the model

Permanent link · Official RhinoCommon reference

FormatWidth

def FormatWidth(self) -> float

Text format width (Wrapping rectangle)

Permanent link · Official RhinoCommon reference

TextIsWrapped

def TextIsWrapped(self) -> bool

Is text wrapping on

Permanent link · Official RhinoCommon reference

TextRotationRadians

def TextRotationRadians(self) -> float

Rotation of text in radians

Permanent link · Official RhinoCommon reference

TextRotationDegrees

def TextRotationDegrees(self) -> float

Rotation of text in degrees

Permanent link · Official RhinoCommon reference

ClearPropertyOverrides

def ClearPropertyOverrides(self) -> bool

Clears all overridden properties for this annotation

Permanent link · Official RhinoCommon reference

FirstCharProperties

def FirstCharProperties(rtf_str: str, bold: bool, italic: bool, underline: bool, facename: str) -> tuple[bool, bool, bool, bool, str]

Extracts the font properties (bold, italic, underline, and facename) from the first character run of an RTF string.

Permanent link · Official RhinoCommon reference

FormatRtfString

def FormatRtfString(rtf_in: str, clear_bold: bool, set_bold: bool, clear_italic: bool, set_italic: bool, clear_underline: bool, set_underline: bool, clear_facename: bool, set_facename: bool, facename: str) -> str

Modifies the formatting of an RTF (Rich Text Format) string by setting or clearing bold, italic, underline, and font face properties on the first character run.

Permanent link · Official RhinoCommon reference

GetBoundingBox

def GetBoundingBox(self, accurate: bool) -> BoundingBox
def GetBoundingBox(self, plane: Plane) -> BoundingBox | tuple[BoundingBox, Box]
def GetBoundingBox(self, xform: Transform) -> BoundingBox

Bounding box solver. Gets the world axis aligned bounding box for the geometry.

Permanent link · Official RhinoCommon reference

GetDimensionScale

def GetDimensionScale(doc: RhinoDoc, dimstyle: DimensionStyle, vport: RhinoViewport) -> float

Get view dependent dimension scale

Permanent link · Official RhinoCommon reference

GetDimensionStyle

def GetDimensionStyle(self, parentDimStyle: DimensionStyle) -> DimensionStyle

Return the proper dimension style from which to get properties for this annotation object If this object has style overrides, those will be included in the returned dimension style and the style will be updated to include the current state of the parent style for non-overridden fields

Permanent link · Official RhinoCommon reference

GetPlainTextWithRunMap

def GetPlainTextWithRunMap(self, map: Iterable[int]) -> tuple[str, Sequence[int]]

Return plain text string for this annotation with field expressions unevaluated.

Permanent link · Official RhinoCommon reference

IsAllBold

def IsAllBold(self) -> bool

Returns true if all of the text in the annotation is Bold, otherwise returns false

Permanent link · Official RhinoCommon reference

IsAllItalic

def IsAllItalic(self) -> bool

Returns true if all of the text in the annotation is Italic, otherwise returns false

Permanent link · Official RhinoCommon reference

IsAllUnderlined

def IsAllUnderlined(self) -> bool

Returns true if all of the text in the annotation is Underlined, otherwise returns false

Permanent link · Official RhinoCommon reference

IsPropertyOverridden

def IsPropertyOverridden(self, field: Any) -> bool

Returns true if a property is overridden

Permanent link · Official RhinoCommon reference

PlainTextToRtf

def PlainTextToRtf(str: str) -> str

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

RunReplace

def RunReplace(self, replaceString: str, startRunIndex: int, startRunPosition: int, endRunIndex: int, endRunPosition: int) -> bool

Replace text within a formatted string

Permanent link · Official RhinoCommon reference

SetBold

def SetBold(self, set_on: bool) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SetFacename

def SetFacename(self, set_on: bool, facename: str) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SetItalic

def SetItalic(self, set_on: bool) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SetOverrideDimStyle

def SetOverrideDimStyle(self, OverrideStyle: DimensionStyle) -> bool

Set a style including overrides for this annotation object. The DimensionStyle OverrideStyle must have the override fields marked as overridden and must have it's Id set to nil. Use DimensionStyle.SetFieldOverride(Field field) and related functions to manage override settings. To override a field, the field value must be set and the field must be marked as an override. The DimensionStyle passed in here must not be in the dimstyle table

Permanent link · Official RhinoCommon reference

SetRichText

def SetRichText(self, rtfText: str, dimstyle: DimensionStyle) -> None

Sets the annotation's text as rich text (RTF), optionally using a specified dimension style for formatting overrides.

Permanent link · Official RhinoCommon reference

SetUnderline

def SetUnderline(self, set_on: bool) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

WrapText

def WrapText(self) -> None

Wrap text

Permanent link · Official RhinoCommon reference

AnnotationType

0 members
AnnotationType

ON::AnnotationType identifies the type of an annotation object derived from ON_Annotation.

Permanent link · Official RhinoCommon reference

Arc

32 members
Arcanglescurves

An arc is a portion of a circle, represented by a plane, radius, and angular interval. Angles are in radians; a curve parameter is not necessarily an angle or a distance.

An arc has constant curvature over a finite angular interval. An ArcCurve wrapper exposes the Curve API and its own parameter domain.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, center: Point3d, radius: float, angleRadians: float) -> None
def __init__(self, circle: Circle, angleIntervalRadians: Interval) -> None
def __init__(self, circle: Circle, angleRadians: float) -> None
def __init__(self, plane: Plane, center: Point3d, radius: float, angleRadians: float) -> None
def __init__(self, plane: Plane, radius: float, angleRadians: float) -> None
def __init__(self, pointA: Point3d, tangentA: Vector3d, pointB: Point3d) -> None
def __init__(self, startPoint: Point3d, pointOnInterior: Point3d, endPoint: Point3d) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Arc]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets a value indicating whether or not this arc is valid. Detail: Radius>0 and 0<AngleRadians()<=2*Math.Pi.

Permanent link · Official RhinoCommon reference

IsCircle

def IsCircle(self) -> bool

Gets a value indicating whether or not this arc is a complete circle.

Permanent link · Official RhinoCommon reference

Plane

def Plane(self) -> Plane

Gets or sets the plane in which this arc lies.

Permanent link · Official RhinoCommon reference

Radius

def Radius(self) -> float

Gets or sets the radius of this arc.

Permanent link · Official RhinoCommon reference

Diameter

def Diameter(self) -> float

Gets or sets the Diameter of this arc.

Permanent link · Official RhinoCommon reference

Center

def Center(self) -> Point3d

Gets or sets the center point for this arc.

Permanent link · Official RhinoCommon reference

Circumference

def Circumference(self) -> float

Gets the circumference of the circle that is coincident with this arc.

Permanent link · Official RhinoCommon reference

Length

def Length(self) -> float

Gets the length of the arc. (Length = Radius * (subtended angle in radians)).

Permanent link · Official RhinoCommon reference

StartPoint

def StartPoint(self) -> Point3d

Gets the start point of the arc.

Permanent link · Official RhinoCommon reference

MidPoint

def MidPoint(self) -> Point3d

Gets the mid-point of the arc.

Permanent link · Official RhinoCommon reference

EndPoint

def EndPoint(self) -> Point3d

Gets the end point of the arc.

Permanent link · Official RhinoCommon reference

AngleDomain

def AngleDomain(self) -> Interval

Gets or sets the angle domain (in Radians) of this arc.

Permanent link · Official RhinoCommon reference

StartAngle

def StartAngle(self) -> float

Gets or sets the start angle (in Radians) for this arc segment.

Permanent link · Official RhinoCommon reference

EndAngle

def EndAngle(self) -> float

Gets or sets the end angle (in Radians) for this arc segment.

Permanent link · Official RhinoCommon reference

Angle

def Angle(self) -> float

Gets or sets the sweep -or subtended- angle (in Radians) for this arc segment.

Permanent link · Official RhinoCommon reference

StartAngleDegrees

def StartAngleDegrees(self) -> float

Gets or sets the start angle (in Degrees) for this arc segment.

Permanent link · Official RhinoCommon reference

EndAngleDegrees

def EndAngleDegrees(self) -> float

Gets or sets the end angle (in Degrees) for this arc segment.

Permanent link · Official RhinoCommon reference

AngleDegrees

def AngleDegrees(self) -> float

Gets or sets the sweep -or subtended- angle (in Degrees) for this arc segment.

Permanent link · Official RhinoCommon reference

BoundingBox

def BoundingBox(self) -> BoundingBox

Computes the 3D axis aligned bounding box for this arc.

Permanent link · Official RhinoCommon reference

ClosestParameter

def ClosestParameter(self, testPoint: Point3d) -> float

Gets parameter on the arc closest to a test point.

Permanent link · Official RhinoCommon reference

ClosestPoint

def ClosestPoint(self, testPoint: Point3d) -> Point3d

Computes the point on an arc that is closest to a test point.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Arc, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, other: Arc) -> bool
def Equals(self, obj: Any) -> bool

Determines whether another arc has the same value as this arc.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Computes a hash code for the present arc.

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, t: float) -> Point3d

Arc.PointAt evaluates an angle in radians within AngleDomain. The start angle need not be zero.

Distinguish absolute angle from angular distance measured from the start. Curve wrappers can use an entirely different parameter domain.

Permanent link · Official RhinoCommon reference

Reverse

def Reverse(self) -> None

Reverses the orientation of the arc. Changes the domain from [a,b] to [-b,-a].

Permanent link · Official RhinoCommon reference

TangentAt

def TangentAt(self, t: float) -> Vector3d

Gets the tangent at the given parameter.

Permanent link · Official RhinoCommon reference

ToNurbsCurve

def ToNurbsCurve(self) -> NurbsCurve
def ToNurbsCurve(self, degree: int, cvCount: int) -> NurbsCurve

Initializes a nurbs curve representation of this arc. This amounts to the same as calling NurbsCurve.CreateFromArc().

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> bool

Transforms the arc using a Transformation matrix.

Permanent link · Official RhinoCommon reference

Trim

def Trim(self, domain: Interval) -> bool

Sets the arc's angle domain (in radians) to the specified interval, provided it is increasing and its length does not exceed 2.0 * Math.PI (plus a small tolerance). If the interval length exceeds 2.0 * Math.PI it will be clamped to exactly 2.0 * Math.PI. Returns true if the domain was set successfully, false otherwise.

Permanent link · Official RhinoCommon reference

ArcCurve

6 members
ArcCurvecurves

This curve wraps an exact circular arc. Its parameter domain can differ from the arc's angular interval; use PointAt with curve parameters, not assumed angles.

Use the stored Arc for angular evaluation, or inherited Curve methods with curve parameters. Identical shape does not imply identical parameterization.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, arc: Arc) -> None
def __init__(self, arc: Arc, t0: float, t1: float) -> None
def __init__(self, circle: Circle) -> None
def __init__(self, circle: Circle, t0: float, t1: float) -> None
def __init__(self, other: ArcCurve) -> None

Initializes a new Rhino.Geometry.ArcCurve instance. Radius is set to 1, position to Origin and Domain to full span (circle).

Permanent link · Official RhinoCommon reference

Arc

def Arc(self) -> Arc

Gets the arc that is contained within this ArcCurve.

Permanent link · Official RhinoCommon reference

IsCompleteCircle

def IsCompleteCircle(self) -> bool

Gets a value indicating whether or not this curve can be represented by a complete circle.

Permanent link · Official RhinoCommon reference

Radius

def Radius(self) -> float

Gets the radius of this ArcCurve.

Permanent link · Official RhinoCommon reference

AngleRadians

def AngleRadians(self) -> float

Gets the angles of this arc in radians.

Permanent link · Official RhinoCommon reference

AngleDegrees

def AngleDegrees(self) -> float

Gets the angles of this arc in degrees.

Permanent link · Official RhinoCommon reference

AreaMassProperties

26 members
AreaMassPropertiesmeasurement

Area has squared model units; an area centroid is an area-weighted location. Open surfaces can have area without enclosing a volume.

Integrated area weighting differs from averaging vertices. Nonuniform tessellation makes unweighted sample averages particularly misleading.

Permanent link · Official RhinoCommon reference

Area

def Area(self) -> float

Gets the area solution.

Permanent link · Official RhinoCommon reference

AreaError

def AreaError(self) -> float

Gets the uncertainty in the area calculation.

Permanent link · Official RhinoCommon reference

Centroid

def Centroid(self) -> Point3d

Gets the area centroid in the world coordinate system.

Permanent link · Official RhinoCommon reference

CentroidError

def CentroidError(self) -> Vector3d

Gets the uncertainty in the centroid calculation.

Permanent link · Official RhinoCommon reference

WorldCoordinatesFirstMoments

def WorldCoordinatesFirstMoments(self) -> Vector3d

Returns the world coordinate first moments if they were able to be calculated. X is integral of "x dm" over the area Y is integral of "y dm" over the area Z is integral of "z dm" over the area.

Permanent link · Official RhinoCommon reference

WorldCoordinatesFirstMomentsError

def WorldCoordinatesFirstMomentsError(self) -> Vector3d

Uncertainty in world coordinates first moments calculation.

Permanent link · Official RhinoCommon reference

WorldCoordinatesSecondMoments

def WorldCoordinatesSecondMoments(self) -> Vector3d

Returns the world coordinate second moments if they were able to be calculated. X is integral of "xx dm" over the area Y is integral of "yy dm" over the area Z is integral of "zz dm" over the area.

Permanent link · Official RhinoCommon reference

WorldCoordinatesSecondMomentsError

def WorldCoordinatesSecondMomentsError(self) -> Vector3d

Uncertainty in world coordinates second moments calculation.

Permanent link · Official RhinoCommon reference

WorldCoordinatesProductMoments

def WorldCoordinatesProductMoments(self) -> Vector3d

Returns the world coordinate product moments if they were able to be calculated. X is integral of "xy dm" over the area Y is integral of "yz dm" over the area Z is integral of "zx dm" over the area.

Permanent link · Official RhinoCommon reference

WorldCoordinatesProductMomentsError

def WorldCoordinatesProductMomentsError(self) -> Vector3d

Uncertainty in world coordinates second moments calculation.

Permanent link · Official RhinoCommon reference

WorldCoordinatesMomentsOfInertia

def WorldCoordinatesMomentsOfInertia(self) -> Vector3d

The moments of inertia about the world coordinate axes. X = integral of (y^2 + z^2) dm Y = integral of (z^2 + x^2) dm Z = integral of (z^2 + y^2) dm.

Permanent link · Official RhinoCommon reference

WorldCoordinatesMomentsOfInertiaError

def WorldCoordinatesMomentsOfInertiaError(self) -> Vector3d

Uncertainty in world coordinates moments of inertia calculation.

Permanent link · Official RhinoCommon reference

WorldCoordinatesRadiiOfGyration

def WorldCoordinatesRadiiOfGyration(self) -> Vector3d

Radii of gyration with respect to world coordinate system. X = sqrt(integral of (y^2 + z^2) dm/M) Y = sqrt(integral of (z^2 + x^2) dm/M) Z = sqrt(integral of (z^2 + y^2) dm/M)

Permanent link · Official RhinoCommon reference

CentroidCoordinatesSecondMoments

def CentroidCoordinatesSecondMoments(self) -> Vector3d

Second moments with respect to centroid coordinate system. X = integral of (x-x0)^2 dm Y = integral of (y-y0)^2 dm Z = integral of (z-z0)^2 dm where (x0,y0,z0) = centroid.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesSecondMomentsError

def CentroidCoordinatesSecondMomentsError(self) -> Vector3d

Uncertainty in centroid coordinates second moments calculation.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesProductMoments

def CentroidCoordinatesProductMoments(self) -> Vector3d

Product moments with respect to centroid coordinate system.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesProductMomentsError

def CentroidCoordinatesProductMomentsError(self) -> Vector3d

Uncertainty in product moments with respect to centroid coordinate system.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesMomentsOfInertia

def CentroidCoordinatesMomentsOfInertia(self) -> Vector3d

Moments of inertia with respect to centroid coordinate system. X = integral of ((y-y0)^2 + (z-z0)^2) dm Y = integral of ((z-z0)^2 + (x-x0)^2) dm Z = integral of ((z-z0)^2 + (y-y0)^2) dm where (x0,y0,z0) = centroid.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesMomentsOfInertiaError

def CentroidCoordinatesMomentsOfInertiaError(self) -> Vector3d

Uncertainty in centroid coordinates moments of inertia calculation.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesRadiiOfGyration

def CentroidCoordinatesRadiiOfGyration(self) -> Vector3d

Radii of gyration with respect to centroid coordinate system. X = sqrt(integral of ((y-y0)^2 + (z-z0)^2) dm/M) Y = sqrt(integral of ((z-z0)^2 + (x-x0)^2) dm/M) Z = sqrt(integral of ((z-z0)^2 + (y-y0)^2) dm/M) where (x0,y0,z0) = centroid.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesPrincipalMoments

def CentroidCoordinatesPrincipalMoments(self) -> tuple[bool, float, Vector3d, float, Vector3d, float, Vector3d]

Calculates the eigenvalues and eigenvectors of the moments matrix with respect to centroid coordinates.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesPrincipalMomentsOfInertia

def CentroidCoordinatesPrincipalMomentsOfInertia(self) -> tuple[bool, float, Vector3d, float, Vector3d, float, Vector3d]

Calculates the principal moments of inertia and principal axes with respect to centroid coordinates.

Permanent link · Official RhinoCommon reference

Compute

def Compute(brep: Brep) -> AreaMassProperties
def Compute(brep: Brep, area: bool, firstMoments: bool, secondMoments: bool, productMoments: bool) -> AreaMassProperties
def Compute(brep: Brep, area: bool, firstMoments: bool, secondMoments: bool, productMoments: bool, relativeTolerance: float, absoluteTolerance: float) -> AreaMassProperties
def Compute(closedPlanarCurve: Curve) -> AreaMassProperties
def Compute(closedPlanarCurve: Curve, planarTolerance: float) -> AreaMassProperties
def Compute(geometry: Iterable[GeometryBase]) -> AreaMassProperties
def Compute(geometry: Iterable[GeometryBase], area: bool, firstMoments: bool, secondMoments: bool, productMoments: bool) -> AreaMassProperties
def Compute(hatch: Hatch) -> AreaMassProperties
def Compute(mesh: Mesh) -> AreaMassProperties
def Compute(mesh: Mesh, area: bool, firstMoments: bool, secondMoments: bool, productMoments: bool) -> AreaMassProperties
def Compute(surface: Surface) -> AreaMassProperties
def Compute(surface: Surface, area: bool, firstMoments: bool, secondMoments: bool, productMoments: bool) -> AreaMassProperties

Area integration can fail and carries numerical error estimates. Check the result object before reading it.

Area has squared model units. The centroid is weighted by continuous area rather than by the number of sampled vertices.

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

WorldCoordinatesPrincipalMoments

def WorldCoordinatesPrincipalMoments(self) -> tuple[bool, float, Vector3d, float, Vector3d, float, Vector3d]

Calculates the eigenvalues and eigenvectors of moments matrix in world coordinates.

Permanent link · Official RhinoCommon reference

WorldCoordinatesPrincipalMomentsOfInertia

def WorldCoordinatesPrincipalMomentsOfInertia(self) -> tuple[bool, float, Vector3d, float, Vector3d, float, Vector3d]

Calculates the principal moments of inertia and principal axes with respect to world coordinates.

Permanent link · Official RhinoCommon reference

Arrowhead

3 members
Arrowhead

Arrowhead used by annotation

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, arrowType: Any, blockId: Any) -> None

Constructor

Permanent link · Official RhinoCommon reference

BlockId

def BlockId(self) -> Any

Id of block used for user-defined arrowhead

Permanent link · Official RhinoCommon reference

ArrowType

def ArrowType(self) -> Any

Type of arrowhead used by annotation

Permanent link · Official RhinoCommon reference

BezierCurve

23 members
BezierCurvenurbs

A Bezier curve uses a polynomial or rational control polygon over one span. Interior control points generally do not lie on the curve.

Endpoint control points locate the endpoints; neighboring control points influence endpoint tangents. The control polygon is an editing structure, not a sampled curve.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, controlPoints: Iterable[Point2d]) -> None
def __init__(self, controlPoints: Iterable[Point3d]) -> None
def __init__(self, controlPoints: Iterable[Point4d]) -> None

Create bezier curve with controls defined by a list of 2d points

Permanent link · Official RhinoCommon reference

Dimension

def Dimension(self) -> int

Dimension of Bezier

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Tests an object to see if it is valid.

Permanent link · Official RhinoCommon reference

IsRational

def IsRational(self) -> bool

Gets a value indicating whether or not the curve is rational. Rational curves have control-points with custom weights.

Permanent link · Official RhinoCommon reference

ControlVertexCount

def ControlVertexCount(self) -> int

Number of control vertices in this curve

Permanent link · Official RhinoCommon reference

ChangeDimension

def ChangeDimension(self, desiredDimension: int) -> bool

Change dimension of bezier.

Permanent link · Official RhinoCommon reference

CreateBeziers

def CreateBeziers(sourceCurve: Curve) -> Sequence[BezierCurve]

Create an array of Bezier curves that fit to an existing curve. Please note, these Beziers can be of any order and may be rational.

Permanent link · Official RhinoCommon reference

CreateCubicBeziers

def CreateCubicBeziers(sourceCurve: Curve, distanceTolerance: float, kinkTolerance: float) -> Sequence[BezierCurve]

Constructs an array of cubic, non-rational Beziers that fit a curve to a tolerance.

Permanent link · Official RhinoCommon reference

CreateLoftedBezier

def CreateLoftedBezier(points: Iterable[Point2d]) -> BezierCurve
def CreateLoftedBezier(points: Iterable[Point3d]) -> BezierCurve

Loft a bezier through a list of points

Permanent link · Official RhinoCommon reference

CurvatureAt

def CurvatureAt(self, t: float) -> Vector3d

Evaluate the curvature vector at a curve parameter.

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

GetBoundingBox

def GetBoundingBox(self, accurate: bool) -> BoundingBox

Bounding box solver. Gets the world axis aligned bounding box for the curve.

Permanent link · Official RhinoCommon reference

GetControlVertex2d

def GetControlVertex2d(self, index: int) -> Point2d

Get location of a control vertex.

Permanent link · Official RhinoCommon reference

GetControlVertex3d

def GetControlVertex3d(self, index: int) -> Point3d

Gets the 3D location of a control vertex at the specified index.

Permanent link · Official RhinoCommon reference

GetControlVertex4d

def GetControlVertex4d(self, index: int) -> Point4d

Gets the homogeneous (4D) value of a control vertex at the specified index.

Permanent link · Official RhinoCommon reference

GetObjectData

def GetObjectData(self, info: Any, context: Any) -> None

Populates a System.Runtime.Serialization.SerializationInfo with the data needed to serialize the target object.

Permanent link · Official RhinoCommon reference

IncreaseDegree

def IncreaseDegree(self, desiredDegree: int) -> bool

Increase degree of bezier

Permanent link · Official RhinoCommon reference

MakeNonRational

def MakeNonRational(self) -> bool

Make bezier non-rational

Permanent link · Official RhinoCommon reference

MakeRational

def MakeRational(self) -> bool

Make bezier rational

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, t: float) -> Point3d

Evaluates point at a curve parameter.

Permanent link · Official RhinoCommon reference

Split

def Split(self, t: float) -> tuple[bool, BezierCurve, BezierCurve]

Divides the Bezier curve at the specified parameter.

Permanent link · Official RhinoCommon reference

TangentAt

def TangentAt(self, t: float) -> Vector3d

Evaluates the unit tangent vector at a curve parameter.

Permanent link · Official RhinoCommon reference

ToNurbsCurve

def ToNurbsCurve(self) -> NurbsCurve

Constructs a NURBS curve representation of this curve.

Permanent link · Official RhinoCommon reference

BezierSurface

19 members
BezierSurfacenurbs

A Bezier surface uses a tensor-product control net. The net is not a mesh of points on the evaluated surface.

Parameter spacing follows basis functions rather than physical distance. Geometry-aware sampling is needed when spatial regularity matters.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Tests an object to see if it is valid.

Permanent link · Official RhinoCommon reference

Dimension

def Dimension(self) -> int

Dimension of Bezier

Permanent link · Official RhinoCommon reference

IsRational

def IsRational(self) -> bool

Gets a value indicating whether or not the surface is rational. Rational surfaces have control-points with custom weights.

Permanent link · Official RhinoCommon reference

ControlVertexCount

def ControlVertexCount(self, direction: int) -> int

Number of control vertices in this surface

Permanent link · Official RhinoCommon reference

CreateLoftedBezier

def CreateLoftedBezier(curves: Iterable[BezierCurve]) -> BezierSurface

Loft a bezier surface through a list of bezier curves.

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

Domain

def Domain(self, direction: int) -> Interval

Gets the domain in a direction.

Permanent link · Official RhinoCommon reference

GetBoundingBox

def GetBoundingBox(self, accurate: bool) -> BoundingBox

Bounding box solver. Gets the world axis aligned bounding box for the surface.

Permanent link · Official RhinoCommon reference

GetControlVertex2d

def GetControlVertex2d(self, i: int, j: int) -> Point2d

Get location of a control vertex.

Permanent link · Official RhinoCommon reference

GetControlVertex3d

def GetControlVertex3d(self, i: int, j: int) -> Point3d

Get location of a control vertex.

Permanent link · Official RhinoCommon reference

GetControlVertex4d

def GetControlVertex4d(self, i: int, j: int) -> Point4d

Get location of a control vertex.

Permanent link · Official RhinoCommon reference

MakeNonRational

def MakeNonRational(self) -> bool

Make bezier non-rational

Permanent link · Official RhinoCommon reference

MakeRational

def MakeRational(self) -> bool

Make bezier rational

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, u: float, v: float) -> Point3d

Evaluates point at a surface parameter.

Permanent link · Official RhinoCommon reference

Reverse

def Reverse(self, direction: int) -> BezierSurface

Reverses parameterization Domain changes from [a,b] to [-b,-a]

Permanent link · Official RhinoCommon reference

Split

def Split(self, direction: int, t: float) -> tuple[bool, BezierSurface, BezierSurface]

Divides the Bezier surface at the specified parameter.

Permanent link · Official RhinoCommon reference

ToNurbsSurface

def ToNurbsSurface(self) -> NurbsSurface

Constructs a NURBS surface representation of this surface.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> bool

Transforms the surface

Permanent link · Official RhinoCommon reference

Transpose

def Transpose(self) -> BezierSurface

Transposes surface parameterization (swap U and V)

Permanent link · Official RhinoCommon reference

BlendContinuity

0 members
BlendContinuity

Used in curve and surface blending and matching functions.

Permanent link · Official RhinoCommon reference

BlendType

0 members
BlendType

Blend types used for creating filleted Brep edges

Permanent link · Official RhinoCommon reference

BoundingBox

25 members
BoundingBoxmutationspatial-indextransforms

An axis-aligned box bounds geometry in a coordinate frame. Overlapping boxes are useful for broad-phase rejection, but do not prove the enclosed objects intersect.

Use inexpensive bounds to reject distant candidates before exact tests. Coordinate-frame choice affects how tight the enclosure can be.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, min: Point3d, max: Point3d) -> None
def __init__(self, minX: float, minY: float, minZ: float, maxX: float, maxY: float, maxZ: float) -> None
def __init__(self, points: Iterable[Point3d]) -> None
def __init__(self, points: Iterable[Point3d], xform: Transform) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Empty

Empty: ClassVar[BoundingBox]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[BoundingBox]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets a value that indicates whether or not this bounding box is valid. Empty boxes are not valid, and neither are boxes with unset points.

Permanent link · Official RhinoCommon reference

Min

def Min(self) -> Point3d

Gets or sets the point in the minimal corner.

Permanent link · Official RhinoCommon reference

Max

def Max(self) -> Point3d

Gets or sets the point in the maximal corner.

Permanent link · Official RhinoCommon reference

Center

def Center(self) -> Point3d

Gets the point in the center of the bounding box.

Permanent link · Official RhinoCommon reference

Area

def Area(self) -> float

Gets the area of this BoundingBox.

Permanent link · Official RhinoCommon reference

Volume

def Volume(self) -> float

Gets the volume of this BoundingBox.

Permanent link · Official RhinoCommon reference

Diagonal

def Diagonal(self) -> Vector3d

Gets the diagonal vector of this BoundingBox. The diagonal connects the Min and Max points.

Permanent link · Official RhinoCommon reference

ClosestPoint

def ClosestPoint(self, point: Point3d) -> Point3d
def ClosestPoint(self, point: Point3d, includeInterior: bool) -> Point3d

Finds the closest point on or in the bounding box.

Permanent link · Official RhinoCommon reference

Contains

def Contains(self, box: BoundingBox) -> bool
def Contains(self, box: BoundingBox, strict: bool) -> bool
def Contains(self, point: Point3d) -> bool
def Contains(self, point: Point3d, strict: bool) -> bool

Box containment is a coarse test relative to the box axes. Boundary handling depends on the overload.

Containment by a bounding box does not prove containment by the geometry inside that box. Follow it with the intended exact predicate.

Permanent link · Official RhinoCommon reference

Corner

def Corner(self, minX: bool, minY: bool, minZ: bool) -> Point3d

Gets one of the eight corners of the box.

Permanent link · Official RhinoCommon reference

FurthestPoint

def FurthestPoint(self, point: Point3d) -> Point3d

Finds the furthest point on the Box.

Permanent link · Official RhinoCommon reference

GetCorners

def GetCorners(self) -> Sequence[Point3d]

Gets an array filled with the 8 corner points of this box. See remarks for the return order.

Permanent link · Official RhinoCommon reference

GetEdges

def GetEdges(self) -> Sequence[Line]

Gets an array of the 12 edges of this box.

Permanent link · Official RhinoCommon reference

Inflate

def Inflate(self, amount: float) -> None
def Inflate(self, xAmount: float, yAmount: float, zAmount: float) -> None

Inflates the box with equal amounts in all directions. Inflating with negative amounts may result in decreasing boxes. Invalid boxes can not be inflated.

Permanent link · Official RhinoCommon reference

Intersection

def Intersection(a: BoundingBox, b: BoundingBox) -> BoundingBox

Computes the intersection of two bounding boxes.

Permanent link · Official RhinoCommon reference

IsDegenerate

def IsDegenerate(self, tolerance: float) -> int

Determines whether a bounding box is degenerate (flat) in one or more directions.

Permanent link · Official RhinoCommon reference

MakeValid

def MakeValid(self) -> bool

Ensures that the box is defined in an increasing fashion along X, Y and Z axes. If the Min or Max points are unset, this function will not change the box.

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, tx: float, ty: float, tz: float) -> Point3d

Evaluates the bounding box with normalized parameters. The box has idealized side length of 1x1x1.

Permanent link · Official RhinoCommon reference

ToBrep

def ToBrep(self) -> Brep

Constructs a Rhino.Geometry.Brep representation of this bounding box.

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str

Constructs the string representation of this aligned bounding box.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> bool

Transforming a box produces an axis-aligned enclosure of transformed corners, which can exceed an oriented enclosure.

Repeatedly transforming axis-aligned bounds can accumulate empty space. Retain a Box and its frame when orientation matters.

Permanent link · Official RhinoCommon reference

Union

BoundingBox.Union(a: BoundingBox, b: BoundingBox) -> BoundingBox
BoundingBox.Union(box: BoundingBox, point: Point3d) -> BoundingBox
<instance>.Union(a: BoundingBox, b: BoundingBox) -> BoundingBox
<instance>.Union(box: BoundingBox, point: Point3d) -> BoundingBox
<instance>.Union(other: BoundingBox) -> None
<instance>.Union(point: Point3d) -> None

Instance Union modifies a box and returns None. Static Union returns a new BoundingBox.

The result is an axis-aligned enclosure, not a Boolean solid union. Empty space between disjoint input boxes remains inside that enclosure.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
a = rg.BoundingBox(rg.Point3d(0, 0, 0), rg.Point3d(1, 1, 1))
b = rg.BoundingBox(rg.Point3d(2, 2, 2), rg.Point3d(3, 3, 3))
combined = rg.BoundingBox.Union(a, b)
assert abs(combined.Max.X - 3) < 1e-9

Permanent link · Official RhinoCommon reference

Box

25 members
Boxframesparameters

A Box combines a plane and three intervals, allowing orientation relative to world axes.

Its BoundingBox is an axis-aligned enclosure and can be much larger. Preserve the local frame for orientation-dependent packing and dimensions.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, basePlane: Plane, boundingbox: BoundingBox) -> None
def __init__(self, basePlane: Plane, geometry: GeometryBase) -> None
def __init__(self, basePlane: Plane, points: Iterable[Point3d]) -> None
def __init__(self, basePlane: Plane, xSize: Interval, ySize: Interval, zSize: Interval) -> None
def __init__(self, bbox: BoundingBox) -> None
def __init__(self, other: Box) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Empty

Empty: ClassVar[Box]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Box]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets the validity of this Box. Boxes are invalid when the base plane or any of the dimension intervals are invalid or decreasing.

Permanent link · Official RhinoCommon reference

Plane

def Plane(self) -> Plane

Gets or sets the orientation plane for this Box.

Permanent link · Official RhinoCommon reference

X

def X(self) -> Interval

Gets or sets the Interval that describes the dimension of the Box along the orientation plane X-Axis. Otherwise known as the Width of the Box.

Permanent link · Official RhinoCommon reference

Y

def Y(self) -> Interval

Gets or sets the Interval that describes the dimension of the Box along the orientation plane Y-Axis. Otherwise known as the Depth of the Box.

Permanent link · Official RhinoCommon reference

Z

def Z(self) -> Interval

Gets or sets the Interval that describes the dimension of the Box along the orientation plane Z-Axis. Otherwise known as the Height of the Box.

Permanent link · Official RhinoCommon reference

Center

def Center(self) -> Point3d

Gets the point that is in the center of the box.

Permanent link · Official RhinoCommon reference

BoundingBox

def BoundingBox(self) -> BoundingBox

Gets the world axis aligned Bounding box for this oriented box.

Permanent link · Official RhinoCommon reference

Area

def Area(self) -> float

Gets the total surface area of this box.

Permanent link · Official RhinoCommon reference

Volume

def Volume(self) -> float

Gets the total volume of this box.

Permanent link · Official RhinoCommon reference

ClosestPoint

def ClosestPoint(self, point: Point3d) -> Point3d
def ClosestPoint(self, point: Point3d, includeInterior: bool) -> Point3d

Finds the closest point on or in the Box. The box should be Valid for this to work.

Permanent link · Official RhinoCommon reference

Contains

def Contains(self, box: BoundingBox) -> bool
def Contains(self, box: BoundingBox, strict: bool) -> bool
def Contains(self, box: Box) -> bool
def Contains(self, box: Box, strict: bool) -> bool
def Contains(self, point: Point3d) -> bool
def Contains(self, point: Point3d, strict: bool) -> bool

Test a bounding box for Box inclusion. This is the same as calling Contains(box,false)

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Box, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

FurthestPoint

def FurthestPoint(self, point: Point3d) -> Point3d

Finds the furthest point on the Box. The Box should be Valid for this to work properly.

Permanent link · Official RhinoCommon reference

GetCorners

def GetCorners(self) -> Sequence[Point3d]

Gets an array of the 8 corner points of this box.

Permanent link · Official RhinoCommon reference

Inflate

def Inflate(self, amount: float) -> None
def Inflate(self, xAmount: float, yAmount: float, zAmount: float) -> None

Inflates the box by a given offset in each direction. Inflating with negative amounts may result in decreasing boxes. InValid boxes cannot be inflated.

Permanent link · Official RhinoCommon reference

MakeValid

def MakeValid(self) -> bool

Attempts to make the Box valid. This is not always possible.

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, x: float, y: float, z: float) -> Point3d

Box.PointAt uses normalized coordinates along its intervals, evaluated in the local frame.

Coordinates from zero to one span each interval. They are not model distances measured along the plane axes.

Permanent link · Official RhinoCommon reference

RepositionBasePlane

def RepositionBasePlane(self, origin: Point3d) -> None

Repositions the origin of the Base plane for this box without affecting the physical dimensions.

Permanent link · Official RhinoCommon reference

ToBrep

def ToBrep(self) -> Brep

Constructs a brep representation of this box.

Permanent link · Official RhinoCommon reference

ToExtrusion

def ToExtrusion(self) -> Extrusion

Constructs an extrusion representation of this box.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> bool

Transforms this Box using a Transformation matrix. If the Transform does not preserve Similarity, the dimensions of the resulting box cannot be trusted.

Permanent link · Official RhinoCommon reference

Union

def Union(self, point: Point3d) -> None

Constructs a union between this Box and the given point. This grows the box in directions so it contains the point.

Permanent link · Official RhinoCommon reference

Brep

129 members
Brepdistancetolerancetopology

A boundary representation combines geometric surfaces and curves with face, edge, and vertex topology. A valid Brep is not necessarily a closed solid.

Geometry describes shape; topology describes connections. Matching edge coordinates do not necessarily mean two faces share one topological edge.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

Initializes a new empty brep

Permanent link · Official RhinoCommon reference

Vertices

def Vertices(self) -> Any

Gets the brep vertices list accessor.

Permanent link · Official RhinoCommon reference

Surfaces

def Surfaces(self) -> Any

Parametric surfaces used by faces

Permanent link · Official RhinoCommon reference

Edges

def Edges(self) -> Any

Gets the brep edges list accessor.

Permanent link · Official RhinoCommon reference

Trims

def Trims(self) -> Any

Gets the brep trims list accessor.

Permanent link · Official RhinoCommon reference

Loops

def Loops(self) -> Any

Gets the brep loop list accessor.

Permanent link · Official RhinoCommon reference

Faces

def Faces(self) -> Any

Gets the brep faces list accessor.

Permanent link · Official RhinoCommon reference

Curves2D

def Curves2D(self) -> Any

Parameter space trimming curves (used by trims)

Permanent link · Official RhinoCommon reference

Curves3D

def Curves3D(self) -> Any

Pointers to 3d curves (used by edges)

Permanent link · Official RhinoCommon reference

IsSolid

def IsSolid(self) -> bool

Closedness is a boundary condition. It does not establish every geometric or manufacturing requirement.

Check validity, manifoldness, orientation, and task-specific constraints such as minimum thickness separately.

Permanent link · Official RhinoCommon reference

SolidOrientation

def SolidOrientation(self) -> BrepSolidOrientation

Gets the solid orientation state of this Brep.

Permanent link · Official RhinoCommon reference

IsManifold

def IsManifold(self) -> bool

Gets a value indicating whether or not the Brep is manifold. Non manifold breps have at least one edge that is shared among three or more faces.

Permanent link · Official RhinoCommon reference

IsSurface

def IsSurface(self) -> bool

Returns true if the Brep has a single face and that face is geometrically the same as the underlying surface. I.e., the face has trivial trimming. In this case, the surface is the first face surface. The flag Brep.Faces[0].OrientationIsReversed records the correspondence between the surface's natural parametric orientation and the orientation of the Brep. trivial trimming here means that there is only one loop curve in the brep and that loop curve is the same as the underlying surface boundary.

Permanent link · Official RhinoCommon reference

HasRegionTopology

def HasRegionTopology(self) -> bool

Returns true if the Brep has region topology information, false otherwise.

Permanent link · Official RhinoCommon reference

AddEdgeCurve

def AddEdgeCurve(self, curve: Curve) -> int

Add a 3d curve used by the brep edges

Permanent link · Official RhinoCommon reference

AddSurface

def AddSurface(self, surface: Surface) -> int

Adds a 3D surface used by BrepFace.

Permanent link · Official RhinoCommon reference

AddTrimCurve

def AddTrimCurve(self, curve: Curve) -> int

Add a 2d curve used by the brep trims

Permanent link · Official RhinoCommon reference

Append

def Append(self, other: Brep) -> None

Appends a copy of another brep to this and updates indices of appended brep parts. Duplicates are not removed

Permanent link · Official RhinoCommon reference

CapPlanarHoles

def CapPlanarHoles(self, tolerance: float) -> Brep

Capping attempts to fill planar openings. It is not a general repair for nonplanar gaps.

Confirm validity and solid status afterward. Nearly planar or complicated loops may need explicit construction and inspection.

Permanent link · Official RhinoCommon reference

ChangeSeam

def ChangeSeam(face: BrepFace, direction: int, parameter: float, tolerance: float) -> Brep

Change the seam of a closed trimmed surface.

Permanent link · Official RhinoCommon reference

ClosestPoint

def ClosestPoint(self, testPoint: Point3d) -> Point3d
def ClosestPoint(self, testPoint: Point3d, maximumDistance: float) -> tuple[bool, Point3d, ComponentIndex, float, float, Vector3d]

The nearest point can belong to a face, edge, or vertex. Overloads return different additional information.

Interpret returned parameters with the component type. Edge parameters cannot be blindly interpreted as surface UV coordinates.

Permanent link · Official RhinoCommon reference

Compact

def Compact(self) -> None

Deletes any unreferenced objects from arrays, re-indexes as needed, and shrinks arrays to minimum required size. Uses CUllUnused* members to delete any unreferenced objects from arrays.

Permanent link · Official RhinoCommon reference

CopyTrimCurves

def CopyTrimCurves(trimSource: BrepFace, surfaceSource: Surface, tolerance: float) -> Brep

Copy all trims from a Brep face onto a surface.

Permanent link · Official RhinoCommon reference

CreateBaseballSphere

def CreateBaseballSphere(center: Point3d, radius: float, tolerance: float) -> Brep

Creates a brep representation of the sphere with two similar trimmed NURBS surfaces, and no singularities.

Permanent link · Official RhinoCommon reference

CreateBlendShape

def CreateBlendShape(face0: BrepFace, edge0: BrepEdge, t0: float, rev0: bool, continuity0: BlendContinuity, face1: BrepFace, edge1: BrepEdge, t1: float, rev1: bool, continuity1: BlendContinuity) -> Curve

Makes a curve blend between points on two surface edges. The blend will be tangent to the surfaces and perpendicular to the edges.

Permanent link · Official RhinoCommon reference

CreateBlendSurface

def CreateBlendSurface(face0: BrepFace, edge0: BrepEdge, domain0: Interval, rev0: bool, continuity0: BlendContinuity, face1: BrepFace, edge1: BrepEdge, domain1: Interval, rev1: bool, continuity1: BlendContinuity) -> Sequence[Brep]

Makes a surface blend between two surface edges.

Permanent link · Official RhinoCommon reference

CreateBooleanDifference

def CreateBooleanDifference(firstBrep: Brep, secondBrep: Brep, tolerance: float) -> Sequence[Brep]
def CreateBooleanDifference(firstBrep: Brep, secondBrep: Brep, tolerance: float, manifoldOnly: bool) -> Sequence[Brep]
def CreateBooleanDifference(firstSet: Iterable[Brep], secondSet: Iterable[Brep], tolerance: float) -> Sequence[Brep]
def CreateBooleanDifference(firstSet: Iterable[Brep], secondSet: Iterable[Brep], tolerance: float, manifoldOnly: bool) -> Sequence[Brep]

Difference is ordered: subtracting B from A differs from subtracting A from B.

Keep targets and cutters distinct. Coplanar faces, tiny features, and small gaps can make the operation numerically difficult.

Permanent link · Official RhinoCommon reference

CreateBooleanDifferenceWithIndexMap

def CreateBooleanDifferenceWithIndexMap(firstSet: Iterable[Brep], secondSet: Iterable[Brep], tolerance: float, manifoldOnly: bool) -> tuple[Sequence[Brep], Sequence[int]]

Compute the solid difference between two sets of Breps.

Permanent link · Official RhinoCommon reference

CreateBooleanIntersection

def CreateBooleanIntersection(firstBrep: Brep, secondBrep: Brep, tolerance: float) -> Sequence[Brep]
def CreateBooleanIntersection(firstBrep: Brep, secondBrep: Brep, tolerance: float, manifoldOnly: bool) -> Sequence[Brep]
def CreateBooleanIntersection(firstSet: Iterable[Brep], secondSet: Iterable[Brep], tolerance: float) -> Sequence[Brep]
def CreateBooleanIntersection(firstSet: Iterable[Brep], secondSet: Iterable[Brep], tolerance: float, manifoldOnly: bool) -> Sequence[Brep]

Intersection retains common regions, which can be empty or have several components.

Nonoverlapping bounds can reject candidates cheaply. Overlapping bounding boxes alone do not prove a solid intersection exists.

Permanent link · Official RhinoCommon reference

CreateBooleanSplit

def CreateBooleanSplit(firstBrep: Brep, secondBrep: Brep, tolerance: float) -> Sequence[Brep]
def CreateBooleanSplit(firstSet: Iterable[Brep], secondSet: Iterable[Brep], tolerance: float) -> Sequence[Brep]

Splits shared areas of Breps and creates separate Breps from the shared and unshared parts.

Permanent link · Official RhinoCommon reference

CreateBooleanUnion

def CreateBooleanUnion(breps: Iterable[Brep], tolerance: float) -> Sequence[Brep]
def CreateBooleanUnion(breps: Iterable[Brep], tolerance: float, manifoldOnly: bool) -> Sequence[Brep] | tuple[Sequence[Brep], Sequence[Point3d], Sequence[Point3d], Sequence[Point3d]]

Boolean union can return multiple components or fail. One input set does not guarantee one result.

Inspect output count, validity, and closure. Disjoint solids can remain separate, while tolerance-scale features can complicate intersections.

Permanent link · Official RhinoCommon reference

CreateChamferSurface

def CreateChamferSurface(face0: BrepFace, uv0: Point2d, radius0: float, face1: BrepFace, uv1: Point2d, radius1: float, extend: bool, tolerance: float) -> Sequence[Brep]
def CreateChamferSurface(face0: BrepFace, uv0: Point2d, radius0: float, face1: BrepFace, uv1: Point2d, radius1: float, trim: bool, extend: bool, tolerance: float) -> tuple[Sequence[Brep], Sequence[Brep], Sequence[Brep]]

Creates a ruled surface as a bevel between two input surface edges.

Permanent link · Official RhinoCommon reference

CreateContourCurves

def CreateContourCurves(brepToContour: Brep, contourStart: Point3d, contourEnd: Point3d, interval: float) -> Sequence[Curve]
def CreateContourCurves(brepToContour: Brep, sectionPlane: Plane) -> Sequence[Curve]

Constructs the contour curves for a brep at a specified interval.

Permanent link · Official RhinoCommon reference

CreateCurvatureAnalysisMesh

def CreateCurvatureAnalysisMesh(brep: Brep, state: Any) -> Sequence[Mesh]

Create an array of analysis meshes for the brep using the specified settings. Meshes aren't set on the brep.

Permanent link · Official RhinoCommon reference

CreateDevelopableLoft

def CreateDevelopableLoft(crv0: Curve, crv1: Curve, reverse0: bool, reverse1: bool, density: int) -> Sequence[Brep]
def CreateDevelopableLoft(rail0: NurbsCurve, rail1: NurbsCurve, fixedRulings: Iterable[Point2d]) -> Sequence[Brep]

Creates a single developable surface between two curves.

Permanent link · Official RhinoCommon reference

CreateEdgeSurface

def CreateEdgeSurface(curves: Iterable[Curve]) -> Brep

Constructs a coons patch from 2, 3, or 4 curves.

Permanent link · Official RhinoCommon reference

CreateFilletEdges

def CreateFilletEdges(brep: Brep, edgeIndices: Iterable[int], startRadii: Iterable[float], endRadii: Iterable[float], blendType: BlendType, railType: RailType, setbackFillets: bool, tolerance: float, angleTolerance: float) -> Sequence[Brep]
def CreateFilletEdges(brep: Brep, edgeIndices: Iterable[int], startRadii: Iterable[float], endRadii: Iterable[float], blendType: BlendType, railType: RailType, tolerance: float) -> Sequence[Brep]

Fillets, chamfers, or blends the edges of a brep.

Permanent link · Official RhinoCommon reference

CreateFilletEdgesVariableRadius

def CreateFilletEdgesVariableRadius(brep: Brep, edgeIndices: Iterable[int], edgeDistances: Mapping[int, Iterable[BrepEdgeFilletDistance]], blendType: BlendType, railType: RailType, setbackFillets: bool, tolerance: float, angleTolerance: float) -> Sequence[Brep]

Fillets, chamfers, or blends the edges of a brep.

Permanent link · Official RhinoCommon reference

CreateFilletSurface

def CreateFilletSurface(face0: BrepFace, uv0: Point2d, face1: BrepFace, uv1: Point2d, radius: float, extend: bool, tolerance: float) -> Sequence[Brep]
def CreateFilletSurface(face0: BrepFace, uv0: Point2d, face1: BrepFace, uv1: Point2d, radius: float, trim: bool, extend: bool, tolerance: float) -> tuple[Sequence[Brep], Sequence[Brep], Sequence[Brep]]

Creates a constant-radius round surface between two surfaces.

Permanent link · Official RhinoCommon reference

CreateFromBox

def CreateFromBox(box: BoundingBox) -> Brep
def CreateFromBox(box: Box) -> Brep
def CreateFromBox(corners: Iterable[Point3d]) -> Brep

Constructs new brep that matches a bounding box.

Permanent link · Official RhinoCommon reference

CreateFromCone

def CreateFromCone(cone: Cone, capBottom: bool) -> Brep

Constructs a Brep representation of the cone with a single face for the cone, an edge along the cone seam, and vertices at the base and apex ends of this seam edge. The optional cap is a single face with one circular edge starting and ending at the base vertex.

Permanent link · Official RhinoCommon reference

CreateFromCornerPoints

def CreateFromCornerPoints(corner1: Point3d, corner2: Point3d, corner3: Point3d, corner4: Point3d, tolerance: float) -> Brep
def CreateFromCornerPoints(corner1: Point3d, corner2: Point3d, corner3: Point3d, tolerance: float) -> Brep

Makes a Brep with one face from four corner points.

Permanent link · Official RhinoCommon reference

CreateFromCylinder

def CreateFromCylinder(cylinder: Cylinder, capBottom: bool, capTop: bool) -> Brep

Constructs a Brep definition of a cylinder.

Permanent link · Official RhinoCommon reference

CreateFromJoinedEdges

def CreateFromJoinedEdges(brep0: Brep, edgeIndex0: int, brep1: Brep, edgeIndex1: int, joinTolerance: float) -> Brep

Joins two naked edges, or edges that are coincident or close together, from two Breps.

Permanent link · Official RhinoCommon reference

CreateFromLoft

def CreateFromLoft(curves: Iterable[Curve], start: Point3d, end: Point3d, loftType: LoftType, closed: bool) -> Sequence[Brep]
def CreateFromLoft(curves: Iterable[Curve], start: Point3d, end: Point3d, loftType: LoftType, closed: bool, angleTol: float) -> Sequence[Brep]
def CreateFromLoft(curves: Iterable[Curve], start: Point3d, end: Point3d, StartTangent: bool, EndTangent: bool, StartTrim: BrepTrim, EndTrim: BrepTrim, loftType: LoftType, closed: bool) -> Sequence[Brep]

Constructs one or more Breps by lofting through a set of curves.

Permanent link · Official RhinoCommon reference

CreateFromLoftRebuild

def CreateFromLoftRebuild(curves: Iterable[Curve], start: Point3d, end: Point3d, loftType: LoftType, closed: bool, angleTol: float, rebuildPointCount: int) -> Sequence[Brep]
def CreateFromLoftRebuild(curves: Iterable[Curve], start: Point3d, end: Point3d, loftType: LoftType, closed: bool, rebuildPointCount: int) -> Sequence[Brep]

Constructs one or more Breps by lofting through a set of curves. Input for the loft is simplified by rebuilding to a specified number of control points.

Permanent link · Official RhinoCommon reference

CreateFromLoftRefit

def CreateFromLoftRefit(curves: Iterable[Curve], start: Point3d, end: Point3d, loftType: LoftType, closed: bool, angleTol: float, refitTolerance: float) -> Sequence[Brep]
def CreateFromLoftRefit(curves: Iterable[Curve], start: Point3d, end: Point3d, loftType: LoftType, closed: bool, refitTolerance: float) -> Sequence[Brep]

Constructs one or more Breps by lofting through a set of curves. Input for the loft is simplified by refitting to a specified tolerance.

Permanent link · Official RhinoCommon reference

CreateFromMatch

def CreateFromMatch(edge: BrepEdge, targetCurve: Curve, settings: MatchSrfSettings) -> tuple[bool, Brep, Brep]
def CreateFromMatch(edge: BrepEdge, targetCurves: Iterable[Curve], settings: MatchSrfSettings) -> tuple[bool, Brep, Brep]

Match an edge to the target curve using the settings provided

Permanent link · Official RhinoCommon reference

CreateFromMesh

def CreateFromMesh(mesh: Mesh, trimmedTriangles: bool) -> Brep

Create a brep representation of a mesh

Permanent link · Official RhinoCommon reference

CreateFromOffsetFace

def CreateFromOffsetFace(face: BrepFace, offsetDistance: float, offsetTolerance: float, bothSides: bool, createSolid: bool) -> Brep

Offsets a face including trim information to create a new brep.

Permanent link · Official RhinoCommon reference

CreateFromRevSurface

def CreateFromRevSurface(surface: RevSurface, capStart: bool, capEnd: bool) -> Brep

Constructs a brep form of a surface of revolution.

Permanent link · Official RhinoCommon reference

CreateFromSphere

def CreateFromSphere(sphere: Sphere) -> Brep

Constructs a Brep definition of a sphere.

Permanent link · Official RhinoCommon reference

CreateFromSurface

def CreateFromSurface(surface: Surface) -> Brep

Constructs a Brep from a surface. The resulting Brep has an outer boundary made from four trims. The trims are ordered so that they run along the south, east, north, and then west side of the surface's parameter space.

Permanent link · Official RhinoCommon reference

CreateFromSweep

def CreateFromSweep(rail: Curve, shape: Curve, closed: bool, tolerance: float) -> Sequence[Brep]
def CreateFromSweep(rail: Curve, shapes: Iterable[Curve], closed: bool, tolerance: float) -> Sequence[Brep]
def CreateFromSweep(rail: Curve, shapes: Iterable[Curve], startPoint: Point3d, endPoint: Point3d, frameType: SweepFrame, roadlikeNormal: Vector3d, closed: bool, blendType: SweepBlend, miterType: SweepMiter, tolerance: float, rebuildType: SweepRebuild, rebuildPointCount: int, refitTolerance: float) -> Sequence[Brep]
def CreateFromSweep(rail1: Curve, rail2: Curve, shape: Curve, closed: bool, tolerance: float) -> Sequence[Brep]
def CreateFromSweep(rail1: Curve, rail2: Curve, shapes: Iterable[Curve], closed: bool, tolerance: float) -> Sequence[Brep]
def CreateFromSweep(rail1: Curve, rail2: Curve, shapes: Iterable[Curve], start: Point3d, end: Point3d, closed: bool, tolerance: float, rebuild: SweepRebuild, rebuildPointCount: int, refitTolerance: float, preserveHeight: bool) -> Sequence[Brep]
def CreateFromSweep(rail1: Curve, rail2: Curve, shapes: Iterable[Curve], start: Point3d, end: Point3d, closed: bool, tolerance: float, rebuild: SweepRebuild, rebuildPointCount: int, refitTolerance: float, preserveHeight: bool, autoAdjust: bool) -> Sequence[Brep]

Sweep1 function that fits a surface through a profile curve that define the surface cross-sections and one curve that defines a surface edge.

Permanent link · Official RhinoCommon reference

CreateFromSweepInParts

def CreateFromSweepInParts(rail1: Curve, rail2: Curve, shapes: Iterable[Curve], rail_params: Iterable[Point2d], closed: bool, tolerance: float) -> Sequence[Brep]

Makes a 2 rail sweep. Like CreateFromSweep but the result is split where parameterization along a rail changes abruptly.

Permanent link · Official RhinoCommon reference

CreateFromSweepSegmented

def CreateFromSweepSegmented(rail: Curve, shape: Curve, closed: bool, tolerance: float) -> Sequence[Brep]
def CreateFromSweepSegmented(rail: Curve, shapes: Iterable[Curve], closed: bool, tolerance: float) -> Sequence[Brep]
def CreateFromSweepSegmented(rail: Curve, shapes: Iterable[Curve], startPoint: Point3d, endPoint: Point3d, frameType: SweepFrame, roadlikeNormal: Vector3d, closed: bool, blendType: SweepBlend, miterType: SweepMiter, tolerance: float, rebuildType: SweepRebuild, rebuildPointCount: int, refitTolerance: float) -> Sequence[Brep]

Sweep1 function that fits a surface through a profile curve that define the surface cross-sections and one curve that defines a surface edge. The Segmented version breaks the rail at curvature kinks and sweeps each piece separately, then put the results together into a Brep.

Permanent link · Official RhinoCommon reference

CreateFromTaperedExtrude

def CreateFromTaperedExtrude(curveToExtrude: Curve, distance: float, direction: Vector3d, basePoint: Point3d, draftAngleRadians: float, cornerType: ExtrudeCornerType) -> Sequence[Brep]
def CreateFromTaperedExtrude(curveToExtrude: Curve, distance: float, direction: Vector3d, basePoint: Point3d, draftAngleRadians: float, cornerType: ExtrudeCornerType, tolerance: float, angleToleranceRadians: float) -> Sequence[Brep]

Extrude a curve to a taper making a brep (potentially more than 1)

Permanent link · Official RhinoCommon reference

CreateFromTaperedExtrudeWithRef

def CreateFromTaperedExtrudeWithRef(curve: Curve, direction: Vector3d, distance: float, draftAngle: float, plane: Plane, tolerance: float) -> Sequence[Brep]

Creates one or more Breps by extruding a curve a distance along an axis with draft angle.

Permanent link · Official RhinoCommon reference

CreateFromTorus

def CreateFromTorus(torus: Torus) -> Brep

Constructs a Brep definition of a torus.

Permanent link · Official RhinoCommon reference

CreateOffsetBrep

def CreateOffsetBrep(brep: Brep, distance: float, solid: bool, extend: bool, shrink: bool, tolerance: float) -> tuple[Sequence[Brep], Sequence[Brep], Sequence[Brep]]
def CreateOffsetBrep(brep: Brep, distance: float, solid: bool, extend: bool, tolerance: float) -> tuple[Sequence[Brep], Sequence[Brep], Sequence[Brep]]

Offsets a Brep.

Permanent link · Official RhinoCommon reference

CreatePatch

def CreatePatch(geometry: Iterable[GeometryBase], startingSurface: Surface, tolerance: float) -> Brep
def CreatePatch(geometry: Iterable[GeometryBase], startingSurface: Surface, uSpans: int, vSpans: int, trim: bool, tangency: bool, pointSpacing: float, flexibility: float, surfacePull: float, fixEdges: Iterable[bool], tolerance: float) -> Brep
def CreatePatch(geometry: Iterable[GeometryBase], uSpans: int, vSpans: int, tolerance: float) -> Brep

Constructs a brep patch. This is the simple version of fit that uses a specified starting surface.

Permanent link · Official RhinoCommon reference

CreatePipe

def CreatePipe(rail: Curve, radius: float, localBlending: bool, cap: PipeCapMode, fitRail: bool, absoluteTolerance: float, angleToleranceRadians: float) -> Sequence[Brep]
def CreatePipe(rail: Curve, railRadiiParameters: Iterable[float], radii: Iterable[float], localBlending: bool, cap: PipeCapMode, fitRail: bool, absoluteTolerance: float, angleToleranceRadians: float) -> Sequence[Brep]

Creates a single walled pipe.

Permanent link · Official RhinoCommon reference

CreatePlanarBreps

def CreatePlanarBreps(inputLoop: Curve) -> Sequence[Brep]
def CreatePlanarBreps(inputLoop: Curve, tolerance: float) -> Sequence[Brep]
def CreatePlanarBreps(inputLoops: Iterable[Curve]) -> Sequence[Brep]
def CreatePlanarBreps(inputLoops: Iterable[Curve], tolerance: float) -> Sequence[Brep]
def CreatePlanarBreps(inputLoops: Any) -> Sequence[Brep]
def CreatePlanarBreps(inputLoops: Any, tolerance: float) -> Sequence[Brep]

Constructs a set of planar breps as outlines by the loops.

Permanent link · Official RhinoCommon reference

CreatePlanarDifference

def CreatePlanarDifference(b0: Brep, b1: Brep, plane: Plane, tolerance: float) -> Sequence[Brep]

CreatePlanarDifference

Permanent link · Official RhinoCommon reference

CreatePlanarIntersection

def CreatePlanarIntersection(b0: Brep, b1: Brep, plane: Plane, tolerance: float) -> Sequence[Brep]

CreatePlanarIntersection

Permanent link · Official RhinoCommon reference

CreatePlanarUnion

def CreatePlanarUnion(b0: Brep, b1: Brep, plane: Plane, tolerance: float) -> Sequence[Brep]
def CreatePlanarUnion(breps: Iterable[Brep], plane: Plane, tolerance: float) -> Sequence[Brep]

CreatePlanarUnion

Permanent link · Official RhinoCommon reference

CreateQuadSphere

def CreateQuadSphere(sphere: Sphere) -> Brep

Constructs a Brep definition of a quad sphere.

Permanent link · Official RhinoCommon reference

CreateShell

def CreateShell(brep: Brep, facesToRemove: Iterable[int], distance: float, tolerance: float) -> Sequence[Brep]

Creates a hollowed out shell from a solid Brep. Function only operates on simple, solid, manifold Breps.

Permanent link · Official RhinoCommon reference

CreateSolid

def CreateSolid(breps: Iterable[Brep], tolerance: float) -> Sequence[Brep]

Constructs closed polysurfaces from surfaces and polysurfaces that bound a region in space.

Permanent link · Official RhinoCommon reference

CreateThickPipe

def CreateThickPipe(rail: Curve, radius0: float, radius1: float, localBlending: bool, cap: PipeCapMode, fitRail: bool, absoluteTolerance: float, angleToleranceRadians: float) -> Sequence[Brep]
def CreateThickPipe(rail: Curve, railRadiiParameters: Iterable[float], radii0: Iterable[float], radii1: Iterable[float], localBlending: bool, cap: PipeCapMode, fitRail: bool, absoluteTolerance: float, angleToleranceRadians: float) -> Sequence[Brep]

Creates a double-walled pipe.

Permanent link · Official RhinoCommon reference

CreateTrimmedPlane

def CreateTrimmedPlane(plane: Plane, curve: Curve) -> Brep
def CreateTrimmedPlane(plane: Plane, curves: Iterable[Curve]) -> Brep

Create a Brep trimmed plane.

Permanent link · Official RhinoCommon reference

CreateTrimmedSurface

def CreateTrimmedSurface(trimSource: BrepFace, surfaceSource: Surface) -> Brep
def CreateTrimmedSurface(trimSource: BrepFace, surfaceSource: Surface, tolerance: float) -> Brep

Constructs a Brep using the trimming information of a brep face and a surface. Surface must be roughly the same shape and in the same location as the trimming brep face.

Permanent link · Official RhinoCommon reference

CullUnused2dCurves

def CullUnused2dCurves(self) -> bool

Culls 3d curves not referenced by an edge.

Permanent link · Official RhinoCommon reference

CullUnused3dCurves

def CullUnused3dCurves(self) -> bool

Culls 2d curves not referenced by a trim.

Permanent link · Official RhinoCommon reference

CullUnusedEdges

def CullUnusedEdges(self) -> bool

Culls edges with m_edge_index == -1.

Permanent link · Official RhinoCommon reference

CullUnusedFaces

def CullUnusedFaces(self) -> bool

Culls faces with m_face_index == -1.

Permanent link · Official RhinoCommon reference

CullUnusedLoops

def CullUnusedLoops(self) -> bool

Culls loops with m_loop_index == -1.

Permanent link · Official RhinoCommon reference

CullUnusedSurfaces

def CullUnusedSurfaces(self) -> bool

Culls surfaces not referenced by a face.

Permanent link · Official RhinoCommon reference

CullUnusedTrims

def CullUnusedTrims(self) -> bool

Culls trims with m_trim_index == -1.

Permanent link · Official RhinoCommon reference

CullUnusedVertices

def CullUnusedVertices(self) -> bool

Culls vertices with m_vertex_index == -1.

Permanent link · Official RhinoCommon reference

CutUpSurface

def CutUpSurface(surface: Surface, curves: Iterable[Curve], flip: bool, fitTolerance: float, keepTolerance: float) -> Sequence[Brep]
def CutUpSurface(surface: Surface, curves: Iterable[Curve], useEdgeCurves: bool, tolerance: float) -> Sequence[Brep]

Splits, or cuts up, a surface. Designed to split the underlying surface of a Brep face with edge curves.

Permanent link · Official RhinoCommon reference

DestroyRegionTopology

def DestroyRegionTopology(self) -> None

Destroys a Brep's region topology information.

Permanent link · Official RhinoCommon reference

Duplicate

def Duplicate(self) -> GeometryBase

Copies this brep.

Permanent link · Official RhinoCommon reference

DuplicateBrep

def DuplicateBrep(self) -> Brep

Same as Rhino.Geometry.Brep.Duplicate, but already performs a cast to a brep. This cast always succeeds.

Permanent link · Official RhinoCommon reference

DuplicateEdgeCurves

def DuplicateEdgeCurves(self) -> Sequence[Curve]
def DuplicateEdgeCurves(self, nakedOnly: bool) -> Sequence[Curve]

Duplicate all the edges of this Brep.

Permanent link · Official RhinoCommon reference

DuplicateNakedEdgeCurves

def DuplicateNakedEdgeCurves(self, nakedOuter: bool, nakedInner: bool) -> Sequence[Curve]

Duplicate naked edges of this Brep.

Permanent link · Official RhinoCommon reference

DuplicateSubBrep

def DuplicateSubBrep(self, faceIndices: Iterable[int]) -> Brep

Copy a subset of this Brep into another Brep.

Permanent link · Official RhinoCommon reference

DuplicateVertices

def DuplicateVertices(self) -> Sequence[Point3d]

Duplicate all the corner vertices of this Brep.

Permanent link · Official RhinoCommon reference

ExtendBrepFacesToConnect

def ExtendBrepFacesToConnect(Face0: BrepFace, edgeIndex0: int, Face1: BrepFace, edgeIndex1: int, tol: float, angleTol: float) -> tuple[bool, Brep, Brep]
def ExtendBrepFacesToConnect(Face0: BrepFace, f0_sel_pt: Point3d, Face1: BrepFace, f1_sel_pt: Point3d, tol: float, angleTol: float) -> tuple[bool, Brep, Brep]

Extends Faces to meet and trims the faces to each other. If input faces intersect without extending, the selection point indicates the side to keep

Permanent link · Official RhinoCommon reference

FindCoincidentBrepComponents

def FindCoincidentBrepComponents(self, point: Point3d, tolerance: float) -> tuple[Sequence[int], Sequence[int], Sequence[int]]

Find the indices of all brep faces, edges and vertices that are within tolerance of a test-point.

Permanent link · Official RhinoCommon reference

Flip

def Flip(self) -> None

Reverses entire brep orientation of all faces.

Permanent link · Official RhinoCommon reference

GetArea

def GetArea(self) -> float
def GetArea(self, relativeTolerance: float, absoluteTolerance: float) -> float

Compute the Area of the Brep. If you want proper Area data with moments and error information, use the AreaMassProperties class.

Permanent link · Official RhinoCommon reference

GetConnectedComponents

def GetConnectedComponents(self) -> Sequence[Brep]

If this Brep has two or more connected components, then duplicates of the connected components are returned.

Permanent link · Official RhinoCommon reference

GetPointInside

def GetPointInside(self, tolerance: float) -> tuple[bool, Point3d]

Finds a point inside of a solid Brep.

Permanent link · Official RhinoCommon reference

GetRegions

def GetRegions(self) -> Sequence[BrepRegion]

Gets an array containing all regions in this brep.

Permanent link · Official RhinoCommon reference

GetTangentConnectedComponents

def GetTangentConnectedComponents(self, angleTolerance: float, includeMeshes: bool) -> Sequence[Brep]

If this Brep has two or more components connected by tangent edges, then duplicates of the connected components are returned.

Permanent link · Official RhinoCommon reference

GetVolume

def GetVolume(self) -> float
def GetVolume(self, relativeTolerance: float, absoluteTolerance: float) -> float

Compute the Volume of the Brep. If you want proper Volume data with moments and error information, use the VolumeMassProperties class.

Permanent link · Official RhinoCommon reference

GetWireframe

def GetWireframe(self, density: int) -> Sequence[Curve]

Constructs all the Wireframe curves for this Brep.

Permanent link · Official RhinoCommon reference

InsetFaces

def InsetFaces(self, faceIndices: Iterable[int], distance: float, loose: bool, ignoreSeams: bool, creaseCorners: bool, tolerance: float, angleTolerance: float) -> Brep

Individually insets faces of a brep by offsetting the faces outer edges inward and inner edges out then splitting the face with the offset curves.

Permanent link · Official RhinoCommon reference

IsBox

def IsBox(self) -> bool
def IsBox(self, tolerance: float) -> bool

Verifies a Brep is in the form of a solid box.

Permanent link · Official RhinoCommon reference

IsDuplicate

def IsDuplicate(self, other: Brep, tolerance: float) -> bool

See if this and other are same brep geometry.

Permanent link · Official RhinoCommon reference

IsOrientedManifold

def IsOrientedManifold(self) -> tuple[bool, bool, bool]

Test a Brep to see if it is an oriented manifold. Non manifold Breps have at least one edge that is shared among three or more faces.

Permanent link · Official RhinoCommon reference

IsPointInside

def IsPointInside(self, point: Point3d, tolerance: float, strictlyIn: bool) -> bool

A point-in-solid test needs a suitable closed Brep, tolerance, and boundary policy.

Validate the boundary first. Near-boundary queries need consistent classification rather than repeated ad hoc tolerance changes.

Permanent link · Official RhinoCommon reference

IsValidGeometry

def IsValidGeometry(self) -> tuple[bool, str]

Expert user function that tests the brep to see if its geometry information is valid. The value of brep.IsValidTopology() must be true before brep.IsValidGeometry() can be safely called.

Permanent link · Official RhinoCommon reference

IsValidTolerancesAndFlags

def IsValidTolerancesAndFlags(self) -> tuple[bool, str]

Expert user function that tests the brep to see if its tolerances and flags are valid. The values of brep.IsValidTopology() and brep.IsValidGeometry() must be true before brep.IsValidTolerancesAndFlags() can be safely called.

Permanent link · Official RhinoCommon reference

IsValidTopology

def IsValidTopology(self) -> tuple[bool, str]

Tests the brep to see if its topology information is valid.

Permanent link · Official RhinoCommon reference

Join

def Join(self, otherBrep: Brep, tolerance: float, compact: bool) -> bool

If any edges of this brep overlap edges of otherBrep, merge a copy of otherBrep into this brep joining all edges that overlap within tolerance.

Permanent link · Official RhinoCommon reference

JoinBreps

def JoinBreps(brepsToJoin: Iterable[Brep], tolerance: float) -> Sequence[Brep]
def JoinBreps(brepsToJoin: Iterable[Brep], tolerance: float, angleTolerance: float) -> Sequence[Brep] | tuple[Sequence[Brep], Sequence[Sequence[int]]]

Joining merges compatible boundaries within tolerance. It does not guarantee a closed or valid result.

Inspect naked edges. Raising tolerance can conceal mismatches and should follow a deliberate modeling accuracy policy.

Permanent link · Official RhinoCommon reference

JoinEdges

def JoinEdges(self, edgeIndex0: int, edgeIndex1: int, joinTolerance: float, compact: bool) -> bool

Joins two naked edges, or edges that are coincident or close together.

Permanent link · Official RhinoCommon reference

JoinNakedEdges

def JoinNakedEdges(self, tolerance: float) -> int

Joins naked edge pairs within the same brep that overlap within tolerance.

Permanent link · Official RhinoCommon reference

MakeValidForV2

def MakeValidForV2(self) -> bool

No support is available for this function. Expert user function that converts all geometry in Brep to NURB form.

Permanent link · Official RhinoCommon reference

MergeBreps

def MergeBreps(brepsToMerge: Iterable[Brep], tolerance: float) -> Brep

Combines two or more breps into one. A merge is like a boolean union that keeps the inside pieces. This function creates non-manifold Breps which in general are unusual in Rhino. You may want to consider using JoinBreps or CreateBooleanUnion functions instead.

Permanent link · Official RhinoCommon reference

MergeCoplanarFaces

def MergeCoplanarFaces(self, faceIndex: int, tolerance: float, angleTolerance: float) -> bool
def MergeCoplanarFaces(self, faceIndex0: int, faceIndex1: int, tolerance: float, angleTolerance: float) -> bool
def MergeCoplanarFaces(self, tolerance: float) -> bool
def MergeCoplanarFaces(self, tolerance: float, angleTolerance: float) -> bool

Merges coplanar faces adjacent to Brep face into a single face.

Permanent link · Official RhinoCommon reference

MergeSurfaces

def MergeSurfaces(brep0: Brep, brep1: Brep, tolerance: float, angleToleranceRadians: float) -> Brep
def MergeSurfaces(brep0: Brep, brep1: Brep, tolerance: float, angleToleranceRadians: float, point0: Point2d, point1: Point2d, roundness: float, smooth: bool) -> Brep
def MergeSurfaces(surface0: Surface, surface1: Surface, tolerance: float, angleToleranceRadians: float) -> Brep

Merges two surfaces into one surface at untrimmed edges. Both surfaces must be untrimmed and share an edge.

Permanent link · Official RhinoCommon reference

PushPullExtend

def PushPullExtend(self, faceIndex: int, transform: Transform, tolerance: float) -> Brep

If the brep.Faces[faceIndex] is planar, and all the adjacent faces are planar, this function transforms brep.Faces[faceIndex] with the transform parameter and recomputes the adjacent faces. See the PushPull commands extend mode.

Permanent link · Official RhinoCommon reference

RebuildTrimsForV2

def RebuildTrimsForV2(self, face: BrepFace, nurbsSurface: NurbsSurface) -> None

No support is available for this function. Expert user function used by MakeValidForV2 to convert trim curves from one surface to its NURBS form. After calling this function, you need to change the surface of the face to a NurbsSurface.

Permanent link · Official RhinoCommon reference

RemoveFins

def RemoveFins(self) -> bool

Recursively removes any Brep face with a naked edge. This function is only useful for non-manifold Breps.

Permanent link · Official RhinoCommon reference

RemoveHoles

def RemoveHoles(self, loops: Iterable[ComponentIndex], tolerance: float) -> Brep
def RemoveHoles(self, tolerance: float) -> Brep

Removes inner loops, or holes, in a Brep.

Permanent link · Official RhinoCommon reference

Repair

def Repair(self, tolerance: float) -> bool

Fills in missing or fixes incorrect component information from a Brep. Useful when reading Brep information from other file formats that do not provide as complete of a Brep definition as required by Rhino.

Permanent link · Official RhinoCommon reference

SetTolerancesBoxesAndFlags

def SetTolerancesBoxesAndFlags(self) -> None
def SetTolerancesBoxesAndFlags(self, bLazy: bool, bSetVertexTolerances: bool, bSetEdgeTolerances: bool, bSetTrimTolerances: bool, bSetTrimIsoFlags: bool, bSetTrimTypeFlags: bool, bSetLoopTypeFlags: bool, bSetTrimBoxes: bool) -> None

Set tolerances and flags in a Brep.

Permanent link · Official RhinoCommon reference

SetTrimIsoFlags

def SetTrimIsoFlags(self) -> None

This function can be used to set the BrepTrim::m_iso flag. It is intended to be used when creating a Brep from a definition that does not include compatible parameter space type information.

Permanent link · Official RhinoCommon reference

SetVertices

def SetVertices(self) -> None

This function can be used to compute vertex information for a b-rep when everything but the Vertices array is properly filled in. It is intended to be used when creating a Brep from a definition that does not include explicit vertex information.

Permanent link · Official RhinoCommon reference

Split

def Split(self, cutter: Brep, intersectionTolerance: float) -> Sequence[Brep] | tuple[Sequence[Brep], bool]
def Split(self, cutters: Iterable[Brep], intersectionTolerance: float) -> Sequence[Brep]
def Split(self, cutters: Iterable[Curve], intersectionTolerance: float) -> Sequence[Brep]
def Split(self, cutters: Iterable[GeometryBase], normal: Vector3d, planView: bool, intersectionTolerance: float) -> Sequence[Brep]

Splits a Brep into pieces using a Brep as a cutter.

Permanent link · Official RhinoCommon reference

SplitDisjointPieces

def SplitDisjointPieces(brep: Brep) -> Sequence[Brep] | tuple[Sequence[Brep], Sequence[Sequence[int]]]

Separates, or splits, a disjoint Brep into separate Breps.

Permanent link · Official RhinoCommon reference

Standardize

def Standardize(self) -> None

Standardizes all trims, edges, and faces in the brep. After standardizing, there may be unused curves and surfaces in the brep. Call Brep.Compact to remove these unused curves and surfaces.

Permanent link · Official RhinoCommon reference

TransformComponent

def TransformComponent(self, components: Iterable[ComponentIndex], xform: Transform, tolerance: float, timeLimit: float, useMultipleThreads: bool) -> bool

Transform an array of Brep components, bend neighbors to match, and leave the rest fixed.

Permanent link · Official RhinoCommon reference

Trim

def Trim(self, cutter: Brep, intersectionTolerance: float) -> Sequence[Brep]
def Trim(self, cutter: Plane, intersectionTolerance: float) -> Sequence[Brep]

Trims a brep with an oriented cutter. The parts of the brep that lie inside (opposite the normal) of the cutter are retained while the parts to the outside (in the direction of the normal) are discarded. If the Cutter is closed, then a connected component of the Brep that does not intersect the cutter is kept if and only if it is contained in the inside of cutter. That is the region bounded by cutter opposite from the normal of cutter, If cutter is not closed all these components are kept.

Permanent link · Official RhinoCommon reference

TryConvertBrep

def TryConvertBrep(geometry: GeometryBase) -> Brep

Attempts to convert a generic Geometry object into a Brep.

Permanent link · Official RhinoCommon reference

UnjoinEdges

def UnjoinEdges(self, edgesToUnjoin: Iterable[int]) -> Sequence[Brep]

Un-joins, or separates, edges within the Brep. Note, seams in closed surfaces will not separate.

Permanent link · Official RhinoCommon reference

BrepEdge

16 members
BrepEdgetopology

An edge is a topological connection backed by a 3D curve. Edge and trim directions can differ.

Adjacency determines naked, manifold, and nonmanifold edges. Coincident geometry does not alone establish shared topology.

Permanent link · Official RhinoCommon reference

Tolerance

def Tolerance(self) -> float

Gets or sets the accuracy of the edge curve (>=0.0 or RhinoMath.UnsetValue) A value of UnsetValue indicates that the tolerance should be computed. The maximum distance from the edge's 3d curve to any surface of a face that has this edge as a portion of its boundary must be <= this tolerance.

Permanent link · Official RhinoCommon reference

TrimCount

def TrimCount(self) -> int

Gets the number of trim-curves that use this edge.

Permanent link · Official RhinoCommon reference

Valence

def Valence(self) -> EdgeAdjacency

Gets the topological valency of this edge. The topological valency is defined by how many adjacent faces share this edge.

Permanent link · Official RhinoCommon reference

Brep

def Brep(self) -> Brep

Gets the Brep that owns this edge.

Permanent link · Official RhinoCommon reference

EdgeIndex

def EdgeIndex(self) -> int

Gets the index of this edge in the Brep.Edges collection.

Permanent link · Official RhinoCommon reference

ProxyBrepSubDEdgeId

def ProxyBrepSubDEdgeId(self) -> int

If this edge is part of a brep created by SubD.ProxyBrep(), then the subd component id of the corresponding SubD edge is returned. Otherwise 0 is returned.

Permanent link · Official RhinoCommon reference

EdgeCurveIndex

def EdgeCurveIndex(self) -> int

Get the brep.Curves3D[] index of the 3d curve geometry used by this edge or -1.

Permanent link · Official RhinoCommon reference

EdgeCurve

def EdgeCurve(self) -> Curve

Get the brep.Curves3D[] 3d curve geometry used by this edge or null.

Permanent link · Official RhinoCommon reference

StartVertex

def StartVertex(self) -> BrepVertex

BrepVertex at start of edge

Permanent link · Official RhinoCommon reference

EndVertex

def EndVertex(self) -> BrepVertex

BrepVertex at end of edge

Permanent link · Official RhinoCommon reference

AdjacentFaces

def AdjacentFaces(self) -> Sequence[int]

Gets the indices of all the BrepFaces that use this edge.

Permanent link · Official RhinoCommon reference

ConcavityAt

def ConcavityAt(self, t: float, tolerance: float) -> Concavity

Determine the concavity of this edge at a specific parameter.

Permanent link · Official RhinoCommon reference

GetEdgeParameter

def GetEdgeParameter(self, trimIndex: int, trimParameter: float) -> tuple[bool, float]

Get corresponding edge parameter for given trim at given trim parameter.

Permanent link · Official RhinoCommon reference

IsSmoothManifoldEdge

def IsSmoothManifoldEdge(self, angleToleranceRadians: float=...) -> bool

For a manifold, non-boundary edge, decides whether or not the two surfaces on either side meet smoothly.

Permanent link · Official RhinoCommon reference

SetEdgeCurve

def SetEdgeCurve(self, curve3dIndex: int) -> bool
def SetEdgeCurve(self, curve3dIndex: int, subDomain: Interval) -> bool

Set 3d curve geometry used by a b-rep edge.

Permanent link · Official RhinoCommon reference

TrimIndices

def TrimIndices(self) -> Sequence[int]

Gets the indices of all trims associated with this edge.

Permanent link · Official RhinoCommon reference

BrepEdgeFilletDistance

3 members
BrepEdgeFilletDistance

Fillet distances along a BrepEdge

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, edgeParameter: float, filletDistance: float) -> None

Construct a fillet distance

Permanent link · Official RhinoCommon reference

EdgeParameter

def EdgeParameter(self) -> float

The parameter along the BrepEdge where to apply a fillet distance (radius)

Permanent link · Official RhinoCommon reference

FilletDistance

def FilletDistance(self) -> float

Distance to fillet

Permanent link · Official RhinoCommon reference

BrepFace

38 members
BrepFacesurfacestopology

A face references an underlying surface and trimming loops. A point on that surface may lie outside the trimmed face. Geometry and topology must be considered together.

Outer and inner loops define retained regions. Surface evaluation can pass through holes, so placement needs trim-aware classification.

Permanent link · Official RhinoCommon reference

Brep

def Brep(self) -> Brep

Gets the Brep that owns this face.

Permanent link · Official RhinoCommon reference

OrientationIsReversed

def OrientationIsReversed(self) -> bool

A face can use the opposite orientation from its underlying surface.

Apply the topological orientation sign when deriving an outward normal. The surface normal alone follows only its parameterization.

Permanent link · Official RhinoCommon reference

IsSurface

def IsSurface(self) -> bool

Gets a value indicating whether the face is synonymous with the underlying surface. If a Face has no trimming curves then it is considered a Surface.

Permanent link · Official RhinoCommon reference

FaceIndex

def FaceIndex(self) -> int

Index of face in Brep.Faces array.

Permanent link · Official RhinoCommon reference

SurfaceIndex

def SurfaceIndex(self) -> int

Surface index of the 3d surface geometry used by this face or -1

Permanent link · Official RhinoCommon reference

Loops

def Loops(self) -> Any

Loops in this face.

Permanent link · Official RhinoCommon reference

OuterLoop

def OuterLoop(self) -> BrepLoop

Every face has a single outer loop.

Permanent link · Official RhinoCommon reference

MaterialChannelIndex

def MaterialChannelIndex(self) -> int

This face's rendering material channel index.

Permanent link · Official RhinoCommon reference

PackId

def PackId(self) -> int

0 if the pack it is unset, or >0 if the set pack id.

Permanent link · Official RhinoCommon reference

ProxyBrepSubDFaceId

def ProxyBrepSubDFaceId(self) -> int

If this face is part of a brep created by SubD.ProxyBrep(), then the subd component id of the corresponding SubD face is returned. Otherwise 0 is returned.

Permanent link · Official RhinoCommon reference

Id

def Id(self) -> Any

Gets or sets the persistent id of this Brep face. By default, the id is Guid.Zero. Note, Rhino does not set this id. Thus, the property is available for use as a way of tracking Brep faces.

Permanent link · Official RhinoCommon reference

PerFaceColor

def PerFaceColor(self) -> Any

If per-face color is "Empty", then this face does not have a custom color

Permanent link · Official RhinoCommon reference

AdjacentEdges

def AdjacentEdges(self) -> Sequence[int]

Gets the indices of all the BrepEdges that delineate this Face.

Permanent link · Official RhinoCommon reference

AdjacentFaces

def AdjacentFaces(self) -> Sequence[int]

Gets the indices of all the BrepFaces that surround (are adjacent to) this face.

Permanent link · Official RhinoCommon reference

ChangeSurface

def ChangeSurface(self, surfaceIndex: int) -> bool

Expert user tool that replaces the 3d surface geometry use by the face.

Permanent link · Official RhinoCommon reference

ClearMaterialChannelIndex

def ClearMaterialChannelIndex(self) -> None

Clear this face's rendering material channel index.

Permanent link · Official RhinoCommon reference

ClearPackId

def ClearPackId(self) -> None

Sets BrepFace.PackId to 0.

Permanent link · Official RhinoCommon reference

CreateExtrusion

def CreateExtrusion(self, pathCurve: Curve, cap: bool) -> Brep

Extrude a face in a Brep. Interop note: this CLR method group hides or extends a base method in a way Python override checking cannot fully represent.

Permanent link · Official RhinoCommon reference

DraftAnglePoint

def DraftAnglePoint(self, testPoint: Point2d, testAngle: float, pullDirection: Vector3d, edge: bool) -> tuple[bool, Point3d, float]

Returns the surface draft angle and point at a parameter.

Permanent link · Official RhinoCommon reference

DuplicateFace

def DuplicateFace(self, duplicateMeshes: bool) -> Brep

Duplicating a face retains trimming topology in a new Brep.

The result can be open. Extracting one face from a solid does not preserve its original volume enclosure.

Permanent link · Official RhinoCommon reference

DuplicateSurface

def DuplicateSurface(self) -> Surface

The duplicated underlying surface does not retain the face's trimming loops.

Use DuplicateFace to preserve trims. The untrimmed surface can extend through holes and beyond the visible face boundary.

Permanent link · Official RhinoCommon reference

FilletSurfaceToCurve

def FilletSurfaceToCurve(self, curve: Curve, t: float, u: float, v: float, radius: float, alignToCurve: int, railDegree: int, arcDegree: int, arcSliders: Iterable[float], numBezierSrfs: int, tolerance: float, out_fillets: Iterable[Brep]) -> tuple[bool, Sequence[float]]

Creates a constant-radius fillet surface between a surface and the curve.

Permanent link · Official RhinoCommon reference

FilletSurfaceToRail

def FilletSurfaceToRail(self, curveOnFace: Curve, secondFace: BrepFace, u1: float, v1: float, railDegree: int, arcDegree: int, arcSliders: Iterable[float], numBezierSrfs: int, extend: bool, split_type: FilletSurfaceSplitType, tolerance: float, out_fillets: Iterable[Brep], out_breps0: Iterable[Brep], out_breps1: Iterable[Brep]) -> tuple[bool, Sequence[float]]

Creates a surface between two surfaces, with a fixed rail curve on the first surface.

Permanent link · Official RhinoCommon reference

GetMesh

def GetMesh(self, meshType: MeshType) -> Mesh

Obtains a reference to a specified type of mesh for this brep face.

Permanent link · Official RhinoCommon reference

IsPointOnFace

def IsPointOnFace(self, u: float, v: float) -> PointFaceRelation
def IsPointOnFace(self, u: float, v: float, tolerance: float) -> PointFaceRelation

This classifies UV coordinates against the retained trimming region, including holes and boundaries.

Surface projection can produce UV values outside the face. Use the classification when a subsequent operation must remain on the visible face.

Permanent link · Official RhinoCommon reference

PullPointsToFace

def PullPointsToFace(self, points: Iterable[Point3d], tolerance: float) -> Sequence[Point3d]

Pulls one or more points to a brep face.

Permanent link · Official RhinoCommon reference

RebuildEdges

def RebuildEdges(self, tolerance: float, rebuildSharedEdges: bool, rebuildVertices: bool) -> bool

Rebuild the edges used by a face so they lie on the surface.

Permanent link · Official RhinoCommon reference

RefitTrim

def RefitTrim(self, edge: BrepEdge, knots: Iterable[float], tolerance: float, bSections: bool, fitQuality: float) -> tuple[Sequence[Surface], float]

The RefitTrim command replaces a trimmed surface edge with an untrimmed edge.

Permanent link · Official RhinoCommon reference

RemoveHoles

def RemoveHoles(self, tolerance: float) -> Brep

Remove all inner loops, or holes, from a Brep face.

Permanent link · Official RhinoCommon reference

SetDomain

def SetDomain(self, direction: int, domain: Interval) -> bool

Sets the surface domain of this face.

Permanent link · Official RhinoCommon reference

SetMesh

def SetMesh(self, meshType: MeshType, mesh: Mesh) -> bool

Sets a reference to a specified type of mesh for this brep face.

Permanent link · Official RhinoCommon reference

SetPackId

def SetPackId(self, packId: int) -> None

Used by SubD functions that create breps to transmit the subd face SubDFace.PackId value to the brep face or faces generated from the subd face. Unless you are an expert and doing something very carefully and very fancy, to not call this function.

Permanent link · Official RhinoCommon reference

ShrinkFace

def ShrinkFace(self, disableSide: Any) -> bool

Shrinks the underlying untrimmed surface of this Brep face close to trimming boundaries. Shrinking a surface is like extending smoothly, only backwards. knot of full multiplicity are added where you want the surface to be cut off. Then the remaining control points are thrown away.

Permanent link · Official RhinoCommon reference

ShrinkSurfaceToEdge

def ShrinkSurfaceToEdge(self) -> bool

Shrinks the underlying untrimmed surface of this Brep face right to the trimming boundaries. Note, shrinking the trimmed surface can sometimes cause problems later since having the edges so close to the trimming boundaries can cause commands that use the surface edges as input to fail.

Permanent link · Official RhinoCommon reference

Split

def Split(self, curves: Iterable[Curve], tolerance: float) -> Brep
def Split(self, direction: int, parameter: float) -> Sequence[Surface]

Split this face using 3D trimming curves.

Permanent link · Official RhinoCommon reference

TrimAwareIsoCurve

def TrimAwareIsoCurve(self, direction: int, constantParameter: float) -> Sequence[Curve]

Similar to IsoCurve function, except this function pays attention to trims on faces and may return multiple curves.

Permanent link · Official RhinoCommon reference

TrimAwareIsoIntervals

def TrimAwareIsoIntervals(self, direction: int, constantParameter: float) -> Sequence[Interval]

Gets intervals where the iso curve exists on a BrepFace (trimmed surface)

Permanent link · Official RhinoCommon reference

UnderlyingSurface

def UnderlyingSurface(self) -> Surface

Gets the untrimmed surface that is the base of this face.

Permanent link · Official RhinoCommon reference

BrepLoop

8 members
BrepLooptopology

Loops group oriented trims into face boundaries and holes.

Outer and inner classifications jointly define the retained region. Preserve classification and orientation when reconstructing a face.

Permanent link · Official RhinoCommon reference

Brep

def Brep(self) -> Brep

Gets the Brep that owns this loop.

Permanent link · Official RhinoCommon reference

LoopIndex

def LoopIndex(self) -> int

Gets the index of this loop in the Brep.Loops collection.

Permanent link · Official RhinoCommon reference

Face

def Face(self) -> BrepFace

BrepFace this loop belongs to.

Permanent link · Official RhinoCommon reference

LoopType

def LoopType(self) -> BrepLoopType

type of loop.

Permanent link · Official RhinoCommon reference

Trims

def Trims(self) -> Any

List of trims for this loop

Permanent link · Official RhinoCommon reference

IsSurfaceBoundary

def IsSurfaceBoundary(self) -> bool

True if the loop's trims all run along the edge's of the underlying surface's parameter space.

Permanent link · Official RhinoCommon reference

To2dCurve

def To2dCurve(self) -> Curve

Create a 2d curve that traces the entire loop

Permanent link · Official RhinoCommon reference

To3dCurve

def To3dCurve(self) -> Curve

Create a 3D curve that approximates the loop geometry.

Permanent link · Official RhinoCommon reference

BrepLoopType

0 members
BrepLoopType

Each brep loop has a defined type, e.g. outer, inner or point on surface.

Permanent link · Official RhinoCommon reference

BrepRegion

6 members
BrepRegion

Represents a brep topological region that has sides.

Permanent link · Official RhinoCommon reference

Brep

def Brep(self) -> Brep

Gets a reference to the Brep this region belongs to.

Permanent link · Official RhinoCommon reference

Index

def Index(self) -> int

Gets the index of region in the RegionTopology array.

Permanent link · Official RhinoCommon reference

IsFinite

def IsFinite(self) -> bool

Gets a value indicating whether this region is finite.

Permanent link · Official RhinoCommon reference

BoundingBox

def BoundingBox(self) -> BoundingBox

Gets the region bounding box.

Permanent link · Official RhinoCommon reference

BoundaryBrep

def BoundaryBrep(self) -> Brep

Gets the boundary of a region as a brep object. If the region is finite, the boundary will be a closed manifold brep. The boundary may have more than one connected component.

Permanent link · Official RhinoCommon reference

GetFaceSides

def GetFaceSides(self) -> Sequence[BrepRegionFaceSide]

Gets an array of Rhino.Geometry.BrepRegionFaceSide entities delimiting this region.

Permanent link · Official RhinoCommon reference

BrepRegionFaceSide

4 members
BrepRegionFaceSide

Represents a side of a Rhino.Geometry.BrepRegion entity.

Permanent link · Official RhinoCommon reference

Brep

def Brep(self) -> Brep

The brep this side belongs to.

Permanent link · Official RhinoCommon reference

Region

def Region(self) -> BrepRegion

The region this side belongs to.

Permanent link · Official RhinoCommon reference

SurfaceNormalPointsIntoRegion

def SurfaceNormalPointsIntoRegion(self) -> bool

Gets true if BrepFace's surface normal points into region; false otherwise.

Permanent link · Official RhinoCommon reference

Face

def Face(self) -> BrepFace

Gets the face this side belongs to.

Permanent link · Official RhinoCommon reference

BrepSolidOrientation

0 members
BrepSolidOrientation

Enumerates all possible Solid Orientations for a Brep.

Permanent link · Official RhinoCommon reference

BrepTrim

16 members
BrepTrimtopology

A trim is a curve in face parameter space, connected to Brep topology.

Its parameterization can differ from the corresponding 3D edge. Use correspondence methods instead of equating their parameters.

Permanent link · Official RhinoCommon reference

Brep

def Brep(self) -> Brep

Gets the Brep that owns this trim.

Permanent link · Official RhinoCommon reference

Loop

def Loop(self) -> BrepLoop

Loop that this trim belongs to

Permanent link · Official RhinoCommon reference

Face

def Face(self) -> BrepFace

Brep face this trim belongs to

Permanent link · Official RhinoCommon reference

Edge

def Edge(self) -> BrepEdge

Brep edge this trim belongs to. This will be null for singular trims

Permanent link · Official RhinoCommon reference

TrimCurveIndex

def TrimCurveIndex(self) -> int

Gets the Brep.Curves2D 2d curve index of the 2d curve geometry used by this trim, or -1.

Permanent link · Official RhinoCommon reference

TrimCurve

def TrimCurve(self) -> Curve

Gets the Brep.Curves2D 2d curve geometry used by this trim, or null.

Permanent link · Official RhinoCommon reference

TrimIndex

def TrimIndex(self) -> int

Gets the index of this trim in the Brep.Trims collection.

Permanent link · Official RhinoCommon reference

TrimType

def TrimType(self) -> BrepTrimType

Type of trim

Permanent link · Official RhinoCommon reference

IsoStatus

def IsoStatus(self) -> IsoStatus

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

StartVertex

def StartVertex(self) -> BrepVertex

BrepVertex at start of trim

Permanent link · Official RhinoCommon reference

EndVertex

def EndVertex(self) -> BrepVertex

BrepVertex at end of trim

Permanent link · Official RhinoCommon reference

GetTolerances

def GetTolerances(self) -> tuple[float, float]

The values in tolerance[] record the accuracy of the parameter space trimming curves.

Permanent link · Official RhinoCommon reference

GetTrimParameter

def GetTrimParameter(self, edgeParameter: float) -> tuple[bool, float]

Get corresponding trim parameter at given edge parameter.

Permanent link · Official RhinoCommon reference

IsReversed

def IsReversed(self) -> bool

Get orientation of trim with respect to it's corresponding edge.

Permanent link · Official RhinoCommon reference

SetTolerances

def SetTolerances(self, toleranceU: float, toleranceV: float) -> None

The values in tolerance[] record the accuracy of the parameter space trimming curves.

Permanent link · Official RhinoCommon reference

SetTrimCurve

def SetTrimCurve(self, curve2dIndex: int) -> bool
def SetTrimCurve(self, curve2dIndex: int, subDomain: Interval) -> bool

Set 2d curve geometry used by a b-rep trim.

Permanent link · Official RhinoCommon reference

BrepTrimType

0 members
BrepTrimType

Each brep trim has a defined type.

Permanent link · Official RhinoCommon reference

BrepVertex

5 members
BrepVertextopology

A vertex is a topological endpoint with position and tolerance. Nearby positions do not automatically identify one vertex.

Keep connectivity identity separate from coordinate equality. Joining can alter vertex relationships according to tolerance rules.

Permanent link · Official RhinoCommon reference

Brep

def Brep(self) -> Brep

Gets the Brep that owns this vertex.

Permanent link · Official RhinoCommon reference

VertexIndex

def VertexIndex(self) -> int

Gets the index of this vertex in the Brep.Vertices collection.

Permanent link · Official RhinoCommon reference

Tolerance

def Tolerance(self) -> float

Accuracy of vertex point, either >=0.0 or Rhino.RhinoMath.UnsetValue. A value of Rhino.RhinoMath.UnsetValue indicates that the tolerance should be computed. A value of 0.0 indicates that the distance from the vertex to any applicable edge or trim end is <= Rhino.RhinoMath.ZeroTolerance. If an edge begins or ends at this vertex, then the distance from the vertex's 3d point to the appropriate end of the edge's 3d curve must be <= this tolerance. If a trim begins or ends at this vertex, then the distance from the vertex's 3d point to the 3d point on the surface obtained by evaluating the surface at the appropriate end of the trimming curve must be <= this tolerance.

Permanent link · Official RhinoCommon reference

ProxyBrepSubDVertexId

def ProxyBrepSubDVertexId(self) -> int

If this vertex is part of a brep created by SubD.ProxyBrep(), then the subd component id of the corresponding SubD vertex is returned. Otherwise 0 is returned.

Permanent link · Official RhinoCommon reference

EdgeIndices

def EdgeIndices(self) -> Sequence[int]

Gets the indices of all edges associated with this vertex.

Permanent link · Official RhinoCommon reference

Centermark

4 members
Centermark

Represents a center mark dimension.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, plane: Plane, centerPoint: Point3d, radius: float) -> None
def __init__(self, plane: Plane, curve: Curve, curveParameter: float) -> None

Constructs a new center mark dimension.

Permanent link · Official RhinoCommon reference

Radius

def Radius(self) -> float

Gets or sets the center mark's radius.

Permanent link · Official RhinoCommon reference

AdjustFromPoints

def AdjustFromPoints(self, plane: Plane, centerPoint: Point3d) -> bool

Update dimension geometry from point locations.

Permanent link · Official RhinoCommon reference

Create

def Create(dimStyle: DimensionStyle, plane: Plane, centerPoint: Point3d, radius: float) -> Centermark
def Create(dimStyle: DimensionStyle, plane: Plane, curve: Curve, curveParameter: float) -> Centermark

Creates a new center mark dimension.

Permanent link · Official RhinoCommon reference

Circle

26 members
Circleanglescurvesfittingnurbsparametersvectors

A circle uses a plane and positive radius. Its evaluation parameter is an angle in radians.

PointAt(0) lies along the plane's X axis. Increasing angles rotate toward Y; conversion to a Curve introduces that curve's own domain.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, arc: Arc) -> None
def __init__(self, center: Point3d, radius: float) -> None
def __init__(self, plane: Plane, center: Point3d, radius: float) -> None
def __init__(self, plane: Plane, radius: float) -> None
def __init__(self, point1: Point3d, point2: Point3d, point3: Point3d) -> None
def __init__(self, radius: float) -> None
def __init__(self, startPoint: Point3d, tangentAtP: Vector3d, pointOnCircle: Point3d) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Circle]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

A valid circle has radius larger than 0.0 and a base plane which is must also be valid.

Permanent link · Official RhinoCommon reference

Radius

def Radius(self) -> float

Gets or sets the radius of this circle. Radii should be positive values.

Permanent link · Official RhinoCommon reference

Diameter

def Diameter(self) -> float

Gets or sets the diameter (radius * 2.0) of this circle. Diameters should be positive values.

Permanent link · Official RhinoCommon reference

Plane

def Plane(self) -> Plane

Gets or sets the plane of the circle.

Permanent link · Official RhinoCommon reference

Center

def Center(self) -> Point3d

Gets or sets the center point of this circle.

Permanent link · Official RhinoCommon reference

Normal

def Normal(self) -> Vector3d

Gets the normal vector for this circle.

Permanent link · Official RhinoCommon reference

Circumference

def Circumference(self) -> float

Gets or sets the circumference of this circle.

Permanent link · Official RhinoCommon reference

BoundingBox

def BoundingBox(self) -> BoundingBox

Gets the circle's 3d axis aligned bounding box.

Permanent link · Official RhinoCommon reference

ClosestParameter

def ClosestParameter(self, testPoint: Point3d) -> tuple[bool, float]

Python returns (success, angle), not a bare float. Check success before calling PointAt(angle).

A point on the normal axis through the center does not determine a unique closest angular direction. Do not rely on a particular angle in that case.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
circle = rg.Circle(5.0)
ok, angle = circle.ClosestParameter(rg.Point3d(7, 2, 0))
if not ok:
    raise ValueError("Projection failed")
point = circle.PointAt(angle)

Permanent link · Official RhinoCommon reference

ClosestPoint

def ClosestPoint(self, testPoint: Point3d) -> Point3d

Gets the point on the circle which is closest to a test point.

Permanent link · Official RhinoCommon reference

DerivativeAt

def DerivativeAt(self, derivative: int, t: float) -> Vector3d

Determines the value of the Nth derivative at a parameter.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Circle, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

IsInPlane

def IsInPlane(self, plane: Plane, tolerance: float) -> bool

Evaluates whether or not this circle is co-planar with a given plane.

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, t: float) -> Point3d

Circle.PointAt evaluates an angle in radians. On a fixed circle, equal angular increments give equal arc-length increments.

This special relationship does not hold for arbitrary Curve parameters. An ArcCurve representing the circle can have a different domain.

Permanent link · Official RhinoCommon reference

Reverse

def Reverse(self) -> None

Reverse the orientation of the circle. Changes the domain from [a,b] to [-b,-a].

Permanent link · Official RhinoCommon reference

Rotate

def Rotate(self, angle: float, axis: Vector3d) -> bool
def Rotate(self, angle: float, axis: Vector3d, point: Point3d) -> bool
def Rotate(self, sinAngle: float, cosAngle: float, axis: Vector3d) -> bool
def Rotate(self, sinAngle: float, cosAngle: float, axis: Vector3d, point: Point3d) -> bool

Rotates the circle through a given angle.

Permanent link · Official RhinoCommon reference

TangentAt

def TangentAt(self, t: float) -> Vector3d

The tangent follows increasing angle and lies in the circle plane, perpendicular to the radius.

Orientation follows the circle's plane. A tangent alone does not determine a complete spatial frame.

Permanent link · Official RhinoCommon reference

ToNurbsCurve

def ToNurbsCurve(self) -> NurbsCurve
def ToNurbsCurve(self, degree: int, cvCount: int) -> NurbsCurve

Rational NURBS can represent a circle exactly. Rational weights enable that exact conic representation.

Exact shape does not imply identical parameterization. Use the returned curve's domain instead of reusing circle angles as NURBS parameters.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
curve = rg.Circle(5.0).ToNurbsCurve()
assert curve is not None and curve.IsClosed

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> bool

Transforms this circle using an transformation matrix.

Permanent link · Official RhinoCommon reference

Translate

def Translate(self, delta: Vector3d) -> bool

Moves the circle.

Permanent link · Official RhinoCommon reference

TryFitCircleToPoints

def TryFitCircleToPoints(points: Iterable[Point3d]) -> tuple[bool, Circle]

A fitted circle approximates samples. Success does not mean every sample lies exactly on the circle.

Measure residuals and inspect sample distribution. Nearly collinear or clustered points can make the radius estimate unstable.

Permanent link · Official RhinoCommon reference

TryFitCircleTT

def TryFitCircleTT(c1: Curve, c2: Curve, t1: float, t2: float) -> Circle

Try to fit a circle to two curves using tangent relationships.

Permanent link · Official RhinoCommon reference

TryFitCircleTTT

def TryFitCircleTTT(c1: Curve, c2: Curve, c3: Curve, t1: float, t2: float, t3: float) -> Circle

Try to fit a circle to three curves using tangent relationships.

Permanent link · Official RhinoCommon reference

TrySmallestEnclosingCircle

def TrySmallestEnclosingCircle(points: Iterable[Point2d], tolerance: float) -> tuple[bool, Circle, Sequence[int]]

Attempt to create the smallest circle enclosing a set of planar points.

Permanent link · Official RhinoCommon reference

ClippingPlaneSurface

10 members
ClippingPlaneSurface

Represents a planar surface that is used as clipping plane in viewports. A clipping plane object maintains a list of viewports that it clips against.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, plane: Plane) -> None
def __init__(self, planeSurface: PlaneSurface) -> None

Constructs an empty clipping plane surface

Permanent link · Official RhinoCommon reference

PlaneDepth

def PlaneDepth(self) -> float

Distance that the clipping has an effect

Permanent link · Official RhinoCommon reference

PlaneDepthEnabled

def PlaneDepthEnabled(self) -> bool

Determines if the PlaneDepth value should be used

Permanent link · Official RhinoCommon reference

ParticipationListsEnabled

def ParticipationListsEnabled(self) -> bool

Should the object and layer participation lists be used when determining clipping

Permanent link · Official RhinoCommon reference

AddClipViewportId

def AddClipViewportId(self, viewportId: Any) -> bool

Adds a viewport id to the list of viewports that this clipping plane clips.

Permanent link · Official RhinoCommon reference

ClearClipParticipationLists

def ClearClipParticipationLists(self) -> None

Remove list of object ids that this clipping plane surface clips. This causes the clipping plane surface to clip all objects

Permanent link · Official RhinoCommon reference

GetClipParticipation

def GetClipParticipation(self) -> tuple[Sequence[Any], Sequence[int], bool]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

RemoveClipViewportId

def RemoveClipViewportId(self, viewportId: Any) -> bool

Removes a viewport id that this being clipped by this clipping plane.

Permanent link · Official RhinoCommon reference

SetClipParticipation

def SetClipParticipation(self, objectIds: Iterable[Any], layerIndices: Iterable[int], isExclusionList: bool) -> None

Set a list of specific object ids and layers that this clipping plane surface clips.

Permanent link · Official RhinoCommon reference

ViewportIds

def ViewportIds(self) -> Sequence[Any]

Returns the ids of RhinoViewport objects that are clipped by this clipping plane.

Permanent link · Official RhinoCommon reference

ComponentIndex

9 members
ComponentIndextopology

A component reference combines subobject kind and an index within its owner.

Topology changes can invalidate saved indices. Retain owner identity and revision when persistent correspondence matters.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, type: ComponentIndexType, index: int) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ComponentIndexType

def ComponentIndexType(self) -> ComponentIndexType

The interpretation of Index depends on the Type value. Type m_index interpretation (0 based indices) no_type used when context makes it clear what array is being index brep_vertex Brep.m_V[] array index brep_edge Brep.m_E[] array index brep_face Brep.m_F[] array index brep_trim Brep.m_T[] array index brep_loop Brep.m_L[] array index mesh_vertex Mesh.m_V[] array index meshtop_vertex MeshTopology.m_topv[] array index meshtop_edge MeshTopology.m_tope[] array index mesh_face Mesh.m_F[] array index idef_part InstanceDefinition.m_object_uuid[] array index polycurve_segment PolyCurve::m_segment[] array index dim_linear_point LinearDimension2::POINT_INDEX dim_radial_point RadialDimension2::POINT_INDEX dim_angular_point AngularDimension2::POINT_INDEX dim_ordinate_point OrdinateDimension2::POINT_INDEX dim_text_point TextEntity2 origin point.

Permanent link · Official RhinoCommon reference

Index

def Index(self) -> int

The interpretation of m_index depends on the m_type value. m_type m_index interpretation (0 based indices) no_type used when context makes it clear what array is being index brep_vertex Brep.m_V[] array index brep_edge Brep.m_E[] array index brep_face Brep.m_F[] array index brep_trim Brep.m_T[] array index brep_loop Brep.m_L[] array index mesh_vertex Mesh.m_V[] array index meshtop_vertex MeshTopology.m_topv[] array index meshtop_edge MeshTopology.m_tope[] array index mesh_face Mesh.m_F[] array index idef_part InstanceDefinition.m_object_uuid[] array index polycurve_segment PolyCurve::m_segment[] array index dim_linear_point LinearDimension2::POINT_INDEX dim_radial_point RadialDimension2::POINT_INDEX dim_angular_point AngularDimension2::POINT_INDEX dim_ordinate_point OrdinateDimension2::POINT_INDEX dim_text_point TextEntity2 origin point.

Permanent link · Official RhinoCommon reference

IsSet

def IsSet(self) -> bool

True if Rhino.Geometry.ComponentIndex.ComponentIndexType is set to a value between Rhino.Geometry.ComponentIndexType.BrepVertex and Rhino.Geometry.ComponentIndexType.DimLeaderPoint.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[ComponentIndex]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

CompareTo

def CompareTo(self, other: ComponentIndex) -> int

Compares this Rhino.Geometry.ComponentIndex with another Rhino.Geometry.ComponentIndex.

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, other: ComponentIndex) -> bool
def Equals(self, obj: Any) -> bool

Determines whether the specified Rhino.Geometry.ComponentIndex is equal to the current Rhino.Geometry.ComponentIndex, comparing by value.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Computes the hash code for this Rhino.Geometry.ComponentIndex object.

Permanent link · Official RhinoCommon reference

IsUnset

def IsUnset(self) -> bool

Return true is this component index is the same as the Unset component index

Permanent link · Official RhinoCommon reference

ComponentIndexType

0 members
ComponentIndexType

Defines enumerated values to represent component index types.

Permanent link · Official RhinoCommon reference

ComponentStatus

23 members
ComponentStatus

Provides information about selection, highlighting, visibility, editability and integrity states of a component. This structure is immutable.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Clear

Clear: ClassVar[ComponentStatus]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Selected

Selected: ClassVar[ComponentStatus]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SelectedPersistent

SelectedPersistent: ClassVar[ComponentStatus]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Highlighted

Highlighted: ClassVar[ComponentStatus]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Hidden

Hidden: ClassVar[ComponentStatus]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Locked

Locked: ClassVar[ComponentStatus]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Damaged

Damaged: ClassVar[ComponentStatus]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AllSet

AllSet: ClassVar[ComponentStatus]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsClear

def IsClear(self) -> bool

True if every setting is 0 or false.

Permanent link · Official RhinoCommon reference

IsDamaged

def IsDamaged(self) -> bool

Returns false if component is not damaged. True otherwise.

Permanent link · Official RhinoCommon reference

IsHighlighted

def IsHighlighted(self) -> bool

Returns true if highlighted. False otherwise.

Permanent link · Official RhinoCommon reference

IsHidden

def IsHidden(self) -> bool

Returns true if hidden. False otherwise.

Permanent link · Official RhinoCommon reference

IsLocked

def IsLocked(self) -> bool

Returns true if locked. False otherwise.

Permanent link · Official RhinoCommon reference

IsSelected

def IsSelected(self) -> bool

Returns true if selected or selected persistent. False otherwise.

Permanent link · Official RhinoCommon reference

IsSelectedPersistent

def IsSelectedPersistent(self) -> bool

Returns true if selected persistent. False otherwise.

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, other: ComponentStatus) -> bool
def Equals(self, obj: Any) -> bool

Determines if another ComponentStatus and this are equal.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Serves as a special hash function. The inner value is used for the purpose.

Permanent link · Official RhinoCommon reference

HasAllEqualStates

def HasAllEqualStates(self, statesFilter: ComponentStatus, comparand: ComponentStatus) -> bool

For the purposes of this test, Selected and SelectedPersistent are considered equal.

Permanent link · Official RhinoCommon reference

HasNoEqualStates

def HasNoEqualStates(self, statesFilter: ComponentStatus, comparand: ComponentStatus) -> bool

For the purposes of this test, Selected and SelectedPersistent are considered equal.

Permanent link · Official RhinoCommon reference

HasSomeEqualStates

def HasSomeEqualStates(self, statesFilter: ComponentStatus, comparand: ComponentStatus) -> bool

For the purposes of this test, Selected and SelectedPersistent are considered equal.

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str

Provides a string representation of this ComponentStatus.

Permanent link · Official RhinoCommon reference

WithStates

def WithStates(self, additionalStatus: ComponentStatus) -> ComponentStatus

Activates any information flag described in any of the two input component statuses and returns a new ComponentStatus with those flags checked.

Permanent link · Official RhinoCommon reference

Concavity

0 members
Concavity

Enumerates the possible types of edge concavity types.

Permanent link · Official RhinoCommon reference

Cone

15 members
Conesurfaces

A cone narrows to an apex, where regular surface parameterization becomes singular.

Normals and tangent directions at the apex need special handling. Uniform parameter sampling can become spatially uneven near it.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, plane: Plane, height: float, radius: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Cone]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Plane

def Plane(self) -> Plane

Gets or sets the base plane of the cone. The apex of the cone is at the plane's origin.

Permanent link · Official RhinoCommon reference

Height

def Height(self) -> float

Gets or sets the height of the circular right cone.

Permanent link · Official RhinoCommon reference

Radius

def Radius(self) -> float

Gets or sets the radius of the cone.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

true if plane is valid, height is not zero and radius is not zero.

Permanent link · Official RhinoCommon reference

BasePoint

def BasePoint(self) -> Point3d

Center of base circle.

Permanent link · Official RhinoCommon reference

ApexPoint

def ApexPoint(self) -> Point3d

Point at tip of the cone.

Permanent link · Official RhinoCommon reference

Axis

def Axis(self) -> Vector3d

Unit vector axis of cone.

Permanent link · Official RhinoCommon reference

AngleInDegrees

def AngleInDegrees(self) -> float

Computes the angle (in degrees) between the axis and the side of the cone. The angle and the height have the same sign.

Permanent link · Official RhinoCommon reference

AngleInRadians

def AngleInRadians(self) -> float

Computes the angle (in radians) between the axis and the side of the cone. The angle and the height have the same sign.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Cone, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

ToBrep

def ToBrep(self, capBottom: bool) -> Brep

Gets a Brep representation of the cone with a single face for the cone, an edge along the cone seam, and vertices at the base and apex ends of this seam edge. The optional cap is a single face with one circular edge starting and ending at the base vertex.

Permanent link · Official RhinoCommon reference

ToNurbsSurface

def ToNurbsSurface(self) -> NurbsSurface

Constructs a Nurbs surface representation of this Cone. This is synonymous with calling NurbsSurface.CreateFromCone().

Permanent link · Official RhinoCommon reference

ToRevSurface

def ToRevSurface(self) -> RevSurface

Constructs a RevSurface representation of this Cone. This is synonymous with calling RevSurface.CreateFromCone().

Permanent link · Official RhinoCommon reference

ConicSectionType

0 members
ConicSectionType

Defines enumerated values for types of conic sections.

Permanent link · Official RhinoCommon reference

Continuity

0 members
Continuity

Provides enumerated values for continuity along geometry, such as continuous first derivative or continuous unit tangent and curvature.

Permanent link · Official RhinoCommon reference

ControlPoint

9 members
ControlPointnurbs

A NURBS control point combines a Euclidean location and rational weight. It usually is not a point on the geometry.

Changing weight alters the basis contribution without moving the stored location. Preserve weights when exchanging rational curves and surfaces.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, euclideanPt: Point3d, weight: float) -> None
def __init__(self, pt: Point3d) -> None
def __init__(self, pt: Point4d) -> None
def __init__(self, x: float, y: float, z: float) -> None
def __init__(self, x: float, y: float, z: float, weight: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[ControlPoint]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Location

def Location(self) -> Point3d

Gets or sets world 3-D, or Euclidean location of the control point.

Permanent link · Official RhinoCommon reference

X

def X(self) -> float

Gets or sets the X coordinate of the control point.

Permanent link · Official RhinoCommon reference

Y

def Y(self) -> float

Gets or sets the Y coordinate of the control point.

Permanent link · Official RhinoCommon reference

Z

def Z(self) -> float

Gets or sets the Z coordinate of the control point.

Permanent link · Official RhinoCommon reference

Weight

def Weight(self) -> float

Gets or sets the weight of this control point.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: ControlPoint, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, other: ControlPoint) -> bool
def Equals(self, obj: Any) -> bool

Determines if two points exactly match.

Permanent link · Official RhinoCommon reference

Curve

138 members
Curvecalculuscurvesdistancefittingframesmeasurementmutationnurbsparametersprojectionsamplingtolerancetopologyvectors

A parametric curve maps one parameter t to a point in space. Equal parameter steps generally do not produce equal distances. Use length-based sampling when physical spacing matters.

Parameter speed is the magnitude of the derivative with respect to t. Changing the domain can change speed without changing the geometric path.

Permanent link · Official RhinoCommon reference

IsSubDFriendly

def IsSubDFriendly(self) -> bool

Returns true if the curve is a cubic, non-rational, uniform NURBS curve that is either periodic or has natural end conditions. Otherwise, false is returned.

Permanent link · Official RhinoCommon reference

Domain

def Domain(self) -> Interval

Gets or sets the domain of the curve.

Permanent link · Official RhinoCommon reference

Dimension

def Dimension(self) -> int

Gets the dimension of the object. The dimension is typically three. For parameter space trimming curves the dimension is two. In rare cases the dimension can be one or greater than three.

Permanent link · Official RhinoCommon reference

SpanCount

def SpanCount(self) -> int

Gets the number of non-empty smooth (c-infinity) spans in the curve.

Permanent link · Official RhinoCommon reference

Degree

def Degree(self) -> int

Degree is the polynomial degree per span. Order is degree plus one.

Higher degree does not automatically improve quality. Knot multiplicity and control-point placement also govern smoothness and local behavior.

Permanent link · Official RhinoCommon reference

IsClosed

def IsClosed(self) -> bool

Gets a value indicating whether or not this curve is a closed curve.

Permanent link · Official RhinoCommon reference

IsPeriodic

def IsPeriodic(self) -> bool

Gets a value indicating whether or not this curve is considered to be Periodic.

Permanent link · Official RhinoCommon reference

PointAtStart

def PointAtStart(self) -> Point3d

Evaluates point at the start of the curve.

Permanent link · Official RhinoCommon reference

PointAtEnd

def PointAtEnd(self) -> Point3d

Evaluates point at the end of the curve.

Permanent link · Official RhinoCommon reference

PointAtMid

def PointAtMid(self) -> Point3d

Evaluates point at the middle, or mid, of the curve.

Permanent link · Official RhinoCommon reference

TangentAtStart

def TangentAtStart(self) -> Vector3d

Evaluates the unit tangent vector at the start of the curve.

Permanent link · Official RhinoCommon reference

TangentAtEnd

def TangentAtEnd(self) -> Vector3d

Evaluate unit tangent vector at the end of the curve.

Permanent link · Official RhinoCommon reference

ChangeClosedCurveSeam

def ChangeClosedCurveSeam(self, t: float) -> bool

If this curve is closed, then modify it so that the start/end point is at curve parameter t.

Permanent link · Official RhinoCommon reference

ChangeDimension

def ChangeDimension(self, desiredDimension: int) -> bool

Changes the dimension of a curve.

Permanent link · Official RhinoCommon reference

ClosedCurveOrientation

def ClosedCurveOrientation(self) -> CurveOrientation
def ClosedCurveOrientation(self, plane: Plane) -> CurveOrientation
def ClosedCurveOrientation(self, upDirection: Vector3d) -> CurveOrientation
def ClosedCurveOrientation(self, xform: Transform) -> CurveOrientation

Clockwise and counterclockwise depend on the reference plane or viewing direction.

Interpret winding for suitable closed planar curves. Reversing the reference normal reverses apparent winding without changing the geometry.

Permanent link · Official RhinoCommon reference

ClosestPoint

def ClosestPoint(self, testPoint: Point3d) -> tuple[bool, float]
def ClosestPoint(self, testPoint: Point3d, maximumDistance: float) -> tuple[bool, float]

The result is a curve parameter, not a distance. Evaluate PointAt(t) to obtain the projected point, and check success before using t.

After successful projection, evaluate PointAt(t) and measure the distance. The maximum-distance overload can reject distant candidates; a parameter alone is not a distance.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
curve = rg.ArcCurve(rg.Circle(5.0))
ok, t = curve.ClosestPoint(rg.Point3d(7, 2, 0))
if not ok:
    raise ValueError("Projection failed")
projected = curve.PointAt(t)

Permanent link · Official RhinoCommon reference

ClosestPoints

def ClosestPoints(self, geometry: Iterable[GeometryBase]) -> tuple[bool, Point3d, Point3d, int]
def ClosestPoints(self, geometry: Iterable[GeometryBase], maximumDistance: float) -> tuple[bool, Point3d, Point3d, int]
def ClosestPoints(self, otherCurve: Curve) -> tuple[bool, Point3d, Point3d]

Finds the object (and the closest point in that object) that is closest to this curve. Rhino.Geometry.Brep, Rhino.Geometry.Surface, Rhino.Geometry.Curve and Rhino.Geometry.PointCloud are examples of objects that can be passed to this function.

Permanent link · Official RhinoCommon reference

CombineShortSegments

def CombineShortSegments(self, tolerance: float) -> bool

Looks for segments that are shorter than tolerance that can be combined. For NURBS of degree greater than 1, spans are combined by removing knots. Similarly for NURBS segments of polycurves. Otherwise, RemoveShortSegments() is called. Does not change the domain, but it will change the relative parameterization.

Permanent link · Official RhinoCommon reference

Contains

def Contains(self, testPoint: Point3d) -> PointContainment
def Contains(self, testPoint: Point3d, plane: Plane) -> PointContainment
def Contains(self, testPoint: Point3d, plane: Plane, tolerance: float) -> PointContainment

Containment classifies planar closed-curve regions, including inside, outside, boundary, and undefined.

Specify plane and tolerance. Treating the enumeration as a Boolean loses boundary information and can misinterpret an undefined result.

Permanent link · Official RhinoCommon reference

ControlPolygon

def ControlPolygon(self) -> Polyline

Gets the curve's control polygon.

Permanent link · Official RhinoCommon reference

CreateArcBlend

def CreateArcBlend(startPt: Point3d, startDir: Vector3d, endPt: Point3d, endDir: Vector3d, controlPointLengthRatio: float) -> Curve

Creates a polycurve consisting of two tangent arc segments that connect two points and two directions.

Permanent link · Official RhinoCommon reference

CreateArcCornerRectangle

def CreateArcCornerRectangle(rectangle: Rectangle3d, radius: float) -> Curve

Creates an arc-cornered (rounded) rectangular curve.

Permanent link · Official RhinoCommon reference

CreateArcLineArcBlend

def CreateArcLineArcBlend(startPt: Point3d, startDir: Vector3d, endPt: Point3d, endDir: Vector3d, radius: float) -> Curve

Creates an arc-line-arc blend curve between two curves. The output is generally a PolyCurve with three segments: arc, line, arc. In some cases, one or more of those segments will be absent because they would have 0 length. If there is only a single segment, the result will either be an ArcCurve or a LineCurve.

Permanent link · Official RhinoCommon reference

CreateBlendCurve

def CreateBlendCurve(curve0: Curve, t0: float, reverse0: bool, continuity0: BlendContinuity, curve1: Curve, t1: float, reverse1: bool, continuity1: BlendContinuity) -> Curve
def CreateBlendCurve(curveA: Curve, curveB: Curve, continuity: BlendContinuity) -> Curve
def CreateBlendCurve(curveA: Curve, curveB: Curve, continuity: BlendContinuity, bulgeA: float, bulgeB: float) -> Curve

Makes a curve blend between 2 curves at the parameters specified with the directions and continuities specified

Permanent link · Official RhinoCommon reference

CreateBooleanDifference

def CreateBooleanDifference(curveA: Curve, curveB: Curve) -> Sequence[Curve]
def CreateBooleanDifference(curveA: Curve, curveB: Curve, tolerance: float) -> Sequence[Curve]
def CreateBooleanDifference(curveA: Curve, subtractors: Iterable[Curve]) -> Sequence[Curve]
def CreateBooleanDifference(curveA: Curve, subtractors: Iterable[Curve], tolerance: float) -> Sequence[Curve]

Calculates the boolean difference between two closed, planar curves. Note, curves must be co-planar.

Permanent link · Official RhinoCommon reference

CreateBooleanIntersection

def CreateBooleanIntersection(curveA: Curve, curveB: Curve) -> Sequence[Curve]
def CreateBooleanIntersection(curveA: Curve, curveB: Curve, tolerance: float) -> Sequence[Curve]

Calculates the boolean intersection of two closed, planar curves. Note, curves must be co-planar.

Permanent link · Official RhinoCommon reference

CreateBooleanRegions

def CreateBooleanRegions(curves: Iterable[Curve], plane: Plane, combineRegions: bool, tolerance: float) -> CurveBooleanRegions
def CreateBooleanRegions(curves: Iterable[Curve], plane: Plane, points: Iterable[Point3d], combineRegions: bool, tolerance: float) -> CurveBooleanRegions

Calculates curve Boolean regions, which trims and splits curves based on their overlapping regions.

Permanent link · Official RhinoCommon reference

CreateBooleanUnion

def CreateBooleanUnion(curves: Iterable[Curve]) -> Sequence[Curve]
def CreateBooleanUnion(curves: Iterable[Curve], tolerance: float) -> Sequence[Curve]

Calculates the boolean union of two or more closed, planar curves. Note, curves must be co-planar.

Permanent link · Official RhinoCommon reference

CreateConicCornerRectangle

def CreateConicCornerRectangle(rectangle: Rectangle3d, rho: float) -> Curve

Creates a conic-corned (rounded) rectangular curve.

Permanent link · Official RhinoCommon reference

CreateControlPointCurve

def CreateControlPointCurve(points: Iterable[Point3d]) -> Curve
def CreateControlPointCurve(points: Iterable[Point3d], degree: int) -> Curve

Input points form a control polygon; interior points generally are not on the result.

Use interpolation if samples must lie on the curve. Degree and point placement affect flexibility and potential oscillation.

Permanent link · Official RhinoCommon reference

CreateCurve2View

def CreateCurve2View(curveA: Curve, curveB: Curve, vectorA: Vector3d, vectorB: Vector3d, tolerance: float, angleTolerance: float) -> Sequence[Curve]

Creates a third curve from two curves that are planar in different construction planes. The new curve looks the same as each of the original curves when viewed in each plane.

Permanent link · Official RhinoCommon reference

CreateFillet

def CreateFillet(curve0: Curve, curve1: Curve, radius: float, t0Base: float, t1Base: float) -> Arc

Computes the fillet arc for a curve filleting operation.

Permanent link · Official RhinoCommon reference

CreateFilletCornersCurve

def CreateFilletCornersCurve(curve: Curve, radius: float, tolerance: float, angleTolerance: float) -> Curve

Rounds the corners of a kinked curve with arcs of a single, specified radius.

Permanent link · Official RhinoCommon reference

CreateFilletCurves

def CreateFilletCurves(curve0: Curve, point0: Point3d, curve1: Curve, point1: Point3d, radius: float, join: bool, trim: bool, arcExtension: bool, tolerance: float, angleTolerance: float) -> Sequence[Curve]

Creates a tangent arc between two curves and trims or extends the curves to the arc.

Permanent link · Official RhinoCommon reference

CreateInterpolatedCurve

def CreateInterpolatedCurve(points: Iterable[Point3d], degree: int) -> Curve
def CreateInterpolatedCurve(points: Iterable[Point3d], degree: int, knots: CurveKnotStyle) -> Curve
def CreateInterpolatedCurve(points: Iterable[Point3d], degree: int, knots: CurveKnotStyle, startTangent: Vector3d, endTangent: Vector3d) -> Curve

Interpolation aims to pass through samples. Point order, spacing, degree, and knot style affect shape.

Interpolation also follows measurement noise. Check overshoot and curvature; approximation can be preferable for noisy scans.

Permanent link · Official RhinoCommon reference

CreateMatchCurve

def CreateMatchCurve(curve0: Curve, reverse0: bool, continuity: BlendContinuity, curve1: Curve, reverse1: bool, preserve: PreserveEnd, average: bool) -> Sequence[Curve]

Changes a curve end to meet a specified curve with a specified continuity.

Permanent link · Official RhinoCommon reference

CreateMeanCurve

def CreateMeanCurve(curveA: Curve, curveB: Curve) -> Curve
def CreateMeanCurve(curveA: Curve, curveB: Curve, angleToleranceRadians: float) -> Curve

Constructs a mean, or average, curve from two curves.

Permanent link · Official RhinoCommon reference

CreatePeriodicCurve

def CreatePeriodicCurve(curve: Curve) -> Curve
def CreatePeriodicCurve(curve: Curve, smooth: bool) -> Curve

Removes kinks from a curve. Periodic curves deform smoothly without kinks.

Permanent link · Official RhinoCommon reference

CreateRevisionCloud

def CreateRevisionCloud(curve: Curve, segmentCount: int, angle: float, flip: bool) -> Curve
def CreateRevisionCloud(points: Iterable[Point3d], angle: float, flip: bool) -> Curve

Creates a revision cloud curve from a planar curve.

Permanent link · Official RhinoCommon reference

CreateSoftEditCurve

def CreateSoftEditCurve(curve: Curve, t: float, delta: Vector3d, length: float, fixEnds: bool) -> Curve

Creates a soft edited curve from an existing curve using a smooth field of influence.

Permanent link · Official RhinoCommon reference

CreateTextOutlines

def CreateTextOutlines(text: str, font: str, textHeight: float, textStyle: int, closeLoops: bool, plane: Plane, smallCapsScale: float, tolerance: float) -> Sequence[Curve]

Creates outline curves created from a text string. The functionality is similar to what you find in Rhino's TextObject command or TextEntity.Explode() in RhinoCommon.

Permanent link · Official RhinoCommon reference

CreateTweenCurves

def CreateTweenCurves(curve0: Curve, curve1: Curve, numCurves: int) -> Sequence[Curve]
def CreateTweenCurves(curve0: Curve, curve1: Curve, numCurves: int, tolerance: float) -> Sequence[Curve]

Creates curves between two open or closed input curves. Uses the control points of the curves for finding tween curves. That means the first control point of first curve is matched to first control point of the second curve and so on. There is no matching of curves direction. Caller must match input curves direction before calling the function.

Permanent link · Official RhinoCommon reference

CreateTweenCurvesWithMatching

def CreateTweenCurvesWithMatching(curve0: Curve, curve1: Curve, numCurves: int) -> Sequence[Curve]
def CreateTweenCurvesWithMatching(curve0: Curve, curve1: Curve, numCurves: int, tolerance: float) -> Sequence[Curve]

Creates curves between two open or closed input curves. Make the structure of input curves compatible if needed. Refits the input curves to have the same structure. The resulting curves are usually more complex than input unless input curves are compatible and no refit is needed. There is no matching of curves direction. Caller must match input curves direction before calling the function.

Permanent link · Official RhinoCommon reference

CreateTweenCurvesWithSampling

def CreateTweenCurvesWithSampling(curve0: Curve, curve1: Curve, numCurves: int, numSamples: int) -> Sequence[Curve]
def CreateTweenCurvesWithSampling(curve0: Curve, curve1: Curve, numCurves: int, numSamples: int, tolerance: float) -> Sequence[Curve]

Creates curves between two open or closed input curves. Use sample points method to make curves compatible. This is how the algorithm works: Divides the two curves into an equal number of points, finds the midpoint between the corresponding points on the curves and interpolates the tween curve through those points. There is no matching of curves direction. Caller must match input curves direction before calling the function.

Permanent link · Official RhinoCommon reference

CurvatureAt

def CurvatureAt(self, t: float) -> Vector3d

Curvature measures how rapidly the tangent changes with arc length. Its magnitude has inverse-length units; a circle of radius r has curvature magnitude 1/r.

Nonzero curvature has a reciprocal local radius. Curvature vanishes on straight regions and may not have one smooth value at a discontinuity.

Permanent link · Official RhinoCommon reference

DerivativeAt

def DerivativeAt(self, t: float, derivativeCount: int) -> Sequence[Vector3d]
def DerivativeAt(self, t: float, derivativeCount: int, side: CurveEvaluationSide) -> Sequence[Vector3d]

Derivatives are with respect to the curve parameter. Their magnitudes depend on parameterization.

The same geometric path can have different first-derivative magnitudes after a domain change. Use a unit tangent when only direction matters.

Permanent link · Official RhinoCommon reference

DivideAsContour

def DivideAsContour(self, contourStart: Point3d, contourEnd: Point3d, interval: float) -> Sequence[Point3d]

Divides this curve at fixed steps along a defined contour line.

Permanent link · Official RhinoCommon reference

DivideByCount

def DivideByCount(self, segmentCount: int, includeEnds: bool) -> Sequence[float] | tuple[Sequence[float], Sequence[Point3d]]

Equal arc-length divisions need not have equal parameter increments. Returned parameters locate sample points; evaluate them with PointAt.

Division count describes segments, not always the number of returned samples. Endpoint inclusion and closure affect how the resulting sequence should be interpreted.

Permanent link · Official RhinoCommon reference

DivideByLength

def DivideByLength(self, segmentLength: float, includeEnds: bool) -> Sequence[float] | tuple[Sequence[float], Sequence[Point3d]]
def DivideByLength(self, segmentLength: float, includeEnds: bool, reverse: bool) -> Sequence[float] | tuple[Sequence[float], Sequence[Point3d]]

Length division samples by distance along the curve. The final remainder can be shorter than the requested spacing.

Choose endpoint handling and remainder policy before interpreting sample counts. Evaluate returned parameters with PointAt.

Permanent link · Official RhinoCommon reference

DivideEquidistant

def DivideEquidistant(self, distance: float) -> Sequence[Point3d] | tuple[Sequence[Point3d], Sequence[float]]

Calculates 3d points on a curve where the linear distance between the points is equal.

Permanent link · Official RhinoCommon reference

DoDirectionsMatch

def DoDirectionsMatch(curveA: Curve, curveB: Curve) -> bool

Determines whether two curves travel more or less in the same direction.

Permanent link · Official RhinoCommon reference

Duplicate

def Duplicate(self) -> GeometryBase

Constructs an exact duplicate of this Curve.

Permanent link · Official RhinoCommon reference

DuplicateCurve

def DuplicateCurve(self) -> Curve

Constructs an exact duplicate of this curve.

Permanent link · Official RhinoCommon reference

DuplicateSegments

def DuplicateSegments(self) -> Sequence[Curve]

Duplicates curve segments. Explodes polylines, polycurves and G1 discontinuous NURBS curves. Single segment curves, such as lines, arcs, unkinked NURBS curves, are duplicated.

Permanent link · Official RhinoCommon reference

Extend

def Extend(self, domain: Interval) -> Curve
def Extend(self, side: CurveEnd, length: float, style: CurveExtensionStyle) -> Curve
def Extend(self, side: CurveEnd, style: CurveExtensionStyle, endPoint: Point3d) -> Curve
def Extend(self, side: CurveEnd, style: CurveExtensionStyle, geometry: Iterable[GeometryBase]) -> Curve
def Extend(self, t0: float, t1: float) -> Curve

Where possible, analytically extends curve to include the given domain. This will not work on closed curves. The original curve will be identical to the restriction of the resulting curve to the original curve domain.

Permanent link · Official RhinoCommon reference

ExtendByArc

def ExtendByArc(self, side: CurveEnd, geometry: Iterable[GeometryBase]) -> Curve

Extends a curve by an Arc until it intersects a collection of objects.

Permanent link · Official RhinoCommon reference

ExtendByLine

def ExtendByLine(self, side: CurveEnd, geometry: Iterable[GeometryBase]) -> Curve

Extends a curve by a line until it intersects a collection of objects.

Permanent link · Official RhinoCommon reference

ExtendOnSurface

def ExtendOnSurface(self, side: CurveEnd, face: BrepFace) -> Curve
def ExtendOnSurface(self, side: CurveEnd, surface: Surface) -> Curve

Extends a curve on a surface.

Permanent link · Official RhinoCommon reference

ExtremeParameters

def ExtremeParameters(self, direction: Vector3d) -> Sequence[float]

Returns the parameter values of all local extrema. Parameter values are in increasing order so consecutive extrema define an interval on which each component of the curve is monotone. Note, non-periodic curves always return the end points.

Permanent link · Official RhinoCommon reference

Fair

def Fair(self, distanceTolerance: float, angleTolerance: float, clampStart: int, clampEnd: int, iterations: int) -> Curve

Fairs a curve object. Fair works best on degree 3 (cubic) curves. Attempts to remove large curvature variations while limiting the geometry changes to be no more than the specified tolerance.

Permanent link · Official RhinoCommon reference

FilletSurfaceToCurve

def FilletSurfaceToCurve(self, face: BrepFace, t: float, u: float, v: float, radius: float, alignToCurve: int, railDegree: int, arcDegree: int, arcSliders: Iterable[float], numBezierSrfs: int, tolerance: float, out_fillets: Iterable[Brep]) -> tuple[bool, Sequence[float]]

Creates a constant-radius fillet surface between a surface and the curve.

Permanent link · Official RhinoCommon reference

FilletSurfaceToRail

def FilletSurfaceToRail(self, faceWithCurve: BrepFace, secondFace: BrepFace, u1: float, v1: float, railDegree: int, arcDegree: int, arcSliders: Iterable[float], numBezierSrfs: int, extend: bool, split_type: FilletSurfaceSplitType, tolerance: float, out_fillets: Iterable[Brep], out_breps0: Iterable[Brep], out_breps1: Iterable[Brep]) -> tuple[bool, Sequence[float]]

Creates a surface between two surfaces, with a fixed rail curve on the first surface.

Permanent link · Official RhinoCommon reference

FindLocalInflection

def FindLocalInflection(self, N: Vector3d, subDomain: Interval, seed: float) -> tuple[bool, float, float]

Local minimization for point on a curve with tangent perpendicular to N.

Permanent link · Official RhinoCommon reference

Fit

def Fit(self, degree: int, fitTolerance: float, angleTolerance: float) -> Curve

Fits a new curve through an existing curve.

Permanent link · Official RhinoCommon reference

FrameAt

def FrameAt(self, t: float) -> tuple[bool, Plane]

Curve-frame orientation depends on tangent and curvature. Straight and singular regions can make it unstable.

For section placement, compare perpendicular-frame methods and inspect frame rotation between samples. Closed seams need an explicit continuity policy.

Permanent link · Official RhinoCommon reference

GetConicSectionType

def GetConicSectionType(self) -> ConicSectionType | tuple[ConicSectionType, Point3d, Point3d, Point3d]

Returns the type of conic section based on the curve's shape.

Permanent link · Official RhinoCommon reference

GetCurveParameterFromNurbsFormParameter

def GetCurveParameterFromNurbsFormParameter(self, nurbsParameter: float) -> tuple[bool, float]

Convert a NURBS curve parameter to a curve parameter.

Permanent link · Official RhinoCommon reference

GetDistancesBetweenCurves

def GetDistancesBetweenCurves(curveA: Curve, curveB: Curve, tolerance: float) -> tuple[bool, float, float, float, float, float, float]

Calculates the minimum and maximum distances between two curves. This function is useful for computing curve deviation. If you are not computing curve deviation, use Rhino.Geometry.Curve.ClosestPoints(Rhino.Geometry.Curve,Rhino.Geometry.Point3d@,Rhino.Geometry.Point3d@).

Permanent link · Official RhinoCommon reference

GetFilletPoints

def GetFilletPoints(curve0: Curve, curve1: Curve, radius: float, t0Base: float, t1Base: float) -> tuple[bool, float, float, Plane]

Finds points at which to cut a pair of curves so that a fillet of given radius can be inserted.

Permanent link · Official RhinoCommon reference

GetLength

def GetLength(self) -> float
def GetLength(self, fractionalTolerance: float) -> float
def GetLength(self, fractionalTolerance: float, subdomain: Interval) -> float
def GetLength(self, subdomain: Interval) -> float

Arc length measures distance along the curve in model units. A parameter-domain length is generally a different quantity.

Numerical integration and tolerance affect estimates. A closed curve can have coincident endpoints while retaining substantial arc length.

Permanent link · Official RhinoCommon reference

GetLocalPerpPoint

def GetLocalPerpPoint(self, testPoint: Point3d, seedParmameter: float) -> tuple[bool, float]
def GetLocalPerpPoint(self, testPoint: Point3d, seedParmameter: float, subDomain: Interval) -> tuple[bool, float]

Search for a location on the curve, near seedParmameter, that is perpendicular to a test point.

Permanent link · Official RhinoCommon reference

GetLocalTangentPoint

def GetLocalTangentPoint(self, testPoint: Point3d, seedParmameter: float) -> tuple[bool, float]
def GetLocalTangentPoint(self, testPoint: Point3d, seedParmameter: float, subDomain: Interval) -> tuple[bool, float]

Search for a location on the curve, near seedParmameter, that is tangent to a test point.

Permanent link · Official RhinoCommon reference

GetNextDiscontinuity

def GetNextDiscontinuity(self, continuityType: Continuity, t0: float, t1: float) -> tuple[bool, float]
def GetNextDiscontinuity(self, continuityType: Continuity, t0: float, t1: float, cosAngleTolerance: float, curvatureTolerance: float) -> tuple[bool, float]

Searches for a derivative, tangent, or curvature discontinuity.

Permanent link · Official RhinoCommon reference

GetNurbsFormParameterFromCurveParameter

def GetNurbsFormParameterFromCurveParameter(self, curveParameter: float) -> tuple[bool, float]

Convert a curve parameter to a NURBS curve parameter.

Permanent link · Official RhinoCommon reference

GetPerpendicularFrames

def GetPerpendicularFrames(self, parameters: Iterable[float]) -> Sequence[Plane]

Gets a collection of perpendicular frames along the curve. Perpendicular frames are also known as 'Zero-twisting frames' and they minimize rotation from one frame to the next.

Permanent link · Official RhinoCommon reference

GetSubCurves

def GetSubCurves(self) -> Sequence[Curve]

Gets subcurves from a curve. The results will be similar to what is produced by Rhino's Explode command.

Permanent link · Official RhinoCommon reference

HasNurbsForm

def HasNurbsForm(self) -> int

Does a NURBS curve representation of this curve exist?

Permanent link · Official RhinoCommon reference

InflectionPoints

def InflectionPoints(self) -> Sequence[Point3d] | tuple[Sequence[Point3d], Sequence[float]]

Returns a curve's inflection points. An inflection point is a location on a curve at which the sign of the curvature (i.e., the concavity) changes. The curvature at these locations is always 0.

Permanent link · Official RhinoCommon reference

IsArc

def IsArc(self) -> bool
def IsArc(self, tolerance: float) -> bool

Test a curve to see if it can be represented by an arc or circle within RhinoMath.ZeroTolerance.

Permanent link · Official RhinoCommon reference

IsCircle

def IsCircle(self) -> bool
def IsCircle(self, tolerance: float) -> bool

Test a curve to see if it can be represented by a circle within RhinoMath.ZeroTolerance.

Permanent link · Official RhinoCommon reference

IsClosable

def IsClosable(self, tolerance: float) -> bool
def IsClosable(self, tolerance: float, minimumAbsoluteSize: float, minimumRelativeSize: float) -> bool

Decide if it makes sense to close off this curve by moving the endpoint to the start based on start-end gap size and length of curve as approximated by chord defined by 6 points.

Permanent link · Official RhinoCommon reference

IsContinuous

def IsContinuous(self, continuityType: Continuity, t: float) -> bool

Test continuity at a curve parameter value.

Permanent link · Official RhinoCommon reference

IsEllipse

def IsEllipse(self) -> bool
def IsEllipse(self, tolerance: float) -> bool

Test a curve to see if it can be represented by an ellipse within RhinoMath.ZeroTolerance.

Permanent link · Official RhinoCommon reference

IsInPlane

def IsInPlane(self, testPlane: Plane) -> bool
def IsInPlane(self, testPlane: Plane, tolerance: float) -> bool

Test a curve to see if it lies in a specific plane.

Permanent link · Official RhinoCommon reference

IsLinear

def IsLinear(self) -> bool
def IsLinear(self, tolerance: float) -> bool

Test a curve to see if it is linear to within RhinoMath.ZeroTolerance units (1e-12).

Permanent link · Official RhinoCommon reference

IsPlanar

def IsPlanar(self) -> bool
def IsPlanar(self, tolerance: float) -> bool

Test a curve for planarity.

Permanent link · Official RhinoCommon reference

IsPolyline

def IsPolyline(self) -> bool

Several types of Curve can have the form of a polyline including a degree 1 NurbsCurve, a PolylineCurve, and a PolyCurve all of whose segments are some form of polyline. IsPolyline tests a curve to see if it can be represented as a polyline.

Permanent link · Official RhinoCommon reference

IsShort

def IsShort(self, tolerance: float) -> bool
def IsShort(self, tolerance: float, subdomain: Interval) -> bool

Used to quickly find short curves.

Permanent link · Official RhinoCommon reference

JoinCurves

def JoinCurves(inputCurves: Iterable[Curve]) -> Sequence[Curve]
def JoinCurves(inputCurves: Iterable[Curve], joinTolerance: float) -> Sequence[Curve]
def JoinCurves(inputCurves: Iterable[Curve], joinTolerance: float, preserveDirection: bool) -> Sequence[Curve] | tuple[Sequence[Curve], Sequence[int]]
def JoinCurves(inputCurves: Iterable[Curve], joinTolerance: float, preserveDirection: bool, simpleJoin: bool) -> tuple[Sequence[Curve], Sequence[int]]

Joining connects compatible endpoints within tolerance. It does not guarantee one result or a closed curve.

Inspect result count and closure. Excessive tolerance can connect unintended endpoints or conceal meaningful gaps.

Permanent link · Official RhinoCommon reference

LcoalClosestPoint

def LcoalClosestPoint(self, testPoint: Point3d, seed: float) -> tuple[bool, float]

Find parameter of the point on a curve that is locally closest to the testPoint. The search for a local close point starts at a seed parameter.

Permanent link · Official RhinoCommon reference

LengthParameter

def LengthParameter(self, segmentLength: float) -> tuple[bool, float]
def LengthParameter(self, segmentLength: float, fractionalTolerance: float) -> tuple[bool, float]
def LengthParameter(self, segmentLength: float, fractionalTolerance: float, subdomain: Interval) -> tuple[bool, float]
def LengthParameter(self, segmentLength: float, subdomain: Interval) -> tuple[bool, float]

Convert a measured arc length into a curve parameter. Check success before using the result.

This supports fabrication spacing and travel distances. Distances beyond the available curve require an explicit rejection or extrapolation policy.

Permanent link · Official RhinoCommon reference

LocalClosestPoint

def LocalClosestPoint(self, testPoint: Point3d, seed: float) -> tuple[bool, float]

Find parameter of the point on a curve that is locally closest to the testPoint. The search for a local close point starts at a seed parameter.

Permanent link · Official RhinoCommon reference

MakeClosed

def MakeClosed(self, tolerance: float) -> bool

If IsClosed, just return true. Otherwise, decide if curve can be closed as follows: Linear curves polylinear curves with 2 segments, NURBS with 3 or less control points cannot be made closed. Also, if tolerance > 0 and the gap between start and end is larger than tolerance, curve cannot be made closed. Adjust the curve's endpoint to match its start point.

Permanent link · Official RhinoCommon reference

MakeEndsMeet

def MakeEndsMeet(curveA: Curve, adjustStartCurveA: bool, curveB: Curve, adjustStartCurveB: bool) -> bool

Makes adjustments to the ends of one or both input curves so that they meet at a point.

Permanent link · Official RhinoCommon reference

MaxCurvaturePoints

def MaxCurvaturePoints(self) -> Sequence[Point3d] | tuple[Sequence[Point3d], Sequence[float]]

Returns a curve's maximum curvature points. The maximum curvature points identify where the curvature starts to decrease in both directions from the points.

Permanent link · Official RhinoCommon reference

NormalizedLengthParameter

def NormalizedLengthParameter(self, s: float) -> tuple[bool, float]
def NormalizedLengthParameter(self, s: float, fractionalTolerance: float) -> tuple[bool, float]
def NormalizedLengthParameter(self, s: float, fractionalTolerance: float, subdomain: Interval) -> tuple[bool, float]
def NormalizedLengthParameter(self, s: float, subdomain: Interval) -> tuple[bool, float]

Convert an arc-length fraction into a curve parameter, accounting for nonuniform parameter speed.

Equal fractions give equal arc-length intervals within numerical tolerance. Straight-line distances between samples can still differ on a bent curve.

Permanent link · Official RhinoCommon reference

NormalizedLengthParameters

def NormalizedLengthParameters(self, s: Iterable[float], absoluteTolerance: float) -> Sequence[float]
def NormalizedLengthParameters(self, s: Iterable[float], absoluteTolerance: float, fractionalTolerance: float) -> Sequence[float]
def NormalizedLengthParameters(self, s: Iterable[float], absoluteTolerance: float, fractionalTolerance: float, subdomain: Interval) -> Sequence[float]
def NormalizedLengthParameters(self, s: Iterable[float], absoluteTolerance: float, subdomain: Interval) -> Sequence[float]

Input the parameter of the point on the curve that is a prescribed arc length from the start of the curve. A fractional tolerance of 1e-8 is used in this version of the function.

Permanent link · Official RhinoCommon reference

Offset

def Offset(self, directionPoint: Point3d, normal: Vector3d, distance: float, tolerance: float, angleTolerance: float, loose: bool, cornerStyle: CurveOffsetCornerStyle, endStyle: CurveOffsetEndStyle) -> Sequence[Curve]
def Offset(self, directionPoint: Point3d, normal: Vector3d, distance: float, tolerance: float, cornerStyle: CurveOffsetCornerStyle) -> Sequence[Curve]
def Offset(self, plane: Plane, distance: float, tolerance: float, cornerStyle: CurveOffsetCornerStyle) -> Sequence[Curve]

Offset depends on side, plane, corner style, and tolerance. One input can produce several pieces or fail.

Self-intersections and tight curvature can change output topology. Check count, validity, and the intended side before using results.

Permanent link · Official RhinoCommon reference

OffsetNormalToSurface

def OffsetNormalToSurface(self, surface: Surface, height: float) -> Curve

Finds a curve by offsetting an existing curve normal to a surface. The caller is responsible for ensuring that the curve lies on the input surface.

Permanent link · Official RhinoCommon reference

OffsetOnSurface

def OffsetOnSurface(self, face: BrepFace, curveParameters: Iterable[float], offsetDistances: Iterable[float], fittingTolerance: float) -> Sequence[Curve]
def OffsetOnSurface(self, face: BrepFace, distance: float, fittingTolerance: float) -> Sequence[Curve]
def OffsetOnSurface(self, face: BrepFace, throughPoint: Point2d, fittingTolerance: float) -> Sequence[Curve]
def OffsetOnSurface(self, surface: Surface, curveParameters: Iterable[float], offsetDistances: Iterable[float], fittingTolerance: float) -> Sequence[Curve]
def OffsetOnSurface(self, surface: Surface, distance: float, fittingTolerance: float) -> Sequence[Curve]
def OffsetOnSurface(self, surface: Surface, throughPoint: Point2d, fittingTolerance: float) -> Sequence[Curve]

Offset a curve on a brep face surface. This curve must lie on the surface. This overload allows to specify different offsets for different curve parameters.

Permanent link · Official RhinoCommon reference

OffsetTangentToSurface

def OffsetTangentToSurface(self, surface: Surface, height: float) -> Curve

Finds a curve by offsetting an existing curve tangent to a surface. The caller is responsible for ensuring that the curve lies on the input surface.

Permanent link · Official RhinoCommon reference

PerpendicularFrameAt

def PerpendicularFrameAt(self, t: float) -> tuple[bool, Plane]

A perpendicular frame uses the curve tangent as its normal. Check success and frame continuity.

One local frame does not guarantee a globally consistent sequence. Inflections, sampling direction, and closed seams can introduce apparent twists.

Permanent link · Official RhinoCommon reference

PlanarClosedCurveRelationship

def PlanarClosedCurveRelationship(curveA: Curve, curveB: Curve, testPlane: Plane, tolerance: float) -> RegionContainment

Determines whether two coplanar simple closed curves are disjoint or intersect; otherwise, if the regions have a containment relationship, discovers which curve encloses the other.

Permanent link · Official RhinoCommon reference

PlanarCurveCollision

def PlanarCurveCollision(curveA: Curve, curveB: Curve, testPlane: Plane, tolerance: float) -> bool

Determines if two coplanar curves collide (intersect).

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, t: float) -> Point3d

Evaluate t in the curve's Domain. A parameter is not generally a distance or normalized fraction.

Use length-to-parameter conversion for measured spacing. Query the domain before assuming a range such as [0,1].

Permanent link · Official RhinoCommon reference

PointAtLength

def PointAtLength(self, length: float) -> Point3d

Gets a point at a certain length along the curve. The length must be non-negative and less than or equal to the length of the curve. Lengths will not be wrapped when the curve is closed or periodic.

Permanent link · Official RhinoCommon reference

PointAtNormalizedLength

def PointAtNormalizedLength(self, length: float) -> Point3d

A normalized length fraction refers to arc length, not the curve's parameter interval.

The fraction 0.5 identifies the halfway point along a valid curve. A parameter-domain midpoint can be at a different location.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
curve = rg.LineCurve(rg.Point3d(0, 0, 0), rg.Point3d(10, 0, 0))
midpoint = curve.PointAtNormalizedLength(0.5)
assert abs(midpoint.X - 5) < 1e-9

Permanent link · Official RhinoCommon reference

ProjectToBrep

def ProjectToBrep(curve: Curve, brep: Brep, direction: Vector3d, tolerance: float) -> Sequence[Curve]
def ProjectToBrep(curve: Curve, breps: Iterable[Brep], direction: Vector3d, tolerance: float) -> Sequence[Curve] | tuple[Sequence[Curve], Sequence[int]]
def ProjectToBrep(curves: Iterable[Curve], breps: Iterable[Brep], direction: Vector3d, tolerance: float) -> Sequence[Curve] | tuple[Sequence[Curve], Sequence[int], Sequence[int]]
def ProjectToBrep(curves: Iterable[Curve], breps: Iterable[Brep], direction: Vector3d, tolerance: float, loose: bool) -> tuple[Sequence[Curve], Sequence[int], Sequence[int]]

Projects a Curve onto a Brep along a given direction.

Permanent link · Official RhinoCommon reference

ProjectToMesh

def ProjectToMesh(curve: Curve, mesh: Mesh, direction: Vector3d, tolerance: float) -> Sequence[Curve]
def ProjectToMesh(curve: Curve, meshes: Iterable[Mesh], direction: Vector3d, tolerance: float) -> Sequence[Curve]
def ProjectToMesh(curves: Iterable[Curve], meshes: Iterable[Mesh], direction: Vector3d, tolerance: float) -> Sequence[Curve]
def ProjectToMesh(curves: Iterable[Curve], meshes: Iterable[Mesh], direction: Vector3d, tolerance: float, loose: bool) -> Sequence[Curve]

Projects a curve to a mesh using a direction and tolerance.

Permanent link · Official RhinoCommon reference

ProjectToPlane

def ProjectToPlane(curve: Curve, plane: Plane) -> Curve

Plane projection removes displacement normal to the plane and can collapse geometry.

Projection generally changes lengths and angles. A perpendicular line can collapse to a point, making downstream curve operations degenerate.

Permanent link · Official RhinoCommon reference

PullToBrepFace

Curve.PullToBrepFace(curve: Curve, face: BrepFace, tolerance: float) -> Sequence[Curve]
Curve.PullToBrepFace(curve: Curve, face: BrepFace, tolerance: float, loose: bool) -> Sequence[Curve]
<instance>.PullToBrepFace(curve: Curve, face: BrepFace, tolerance: float) -> Sequence[Curve]
<instance>.PullToBrepFace(curve: Curve, face: BrepFace, tolerance: float, loose: bool) -> Sequence[Curve]
<instance>.PullToBrepFace(face: BrepFace, tolerance: float) -> Sequence[Curve]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

PullToMesh

def PullToMesh(self, mesh: Mesh, tolerance: float) -> PolylineCurve
def PullToMesh(self, mesh: Mesh, tolerance: float, loose: bool) -> Curve

Pulling uses proximity to a mesh and differs from projection in a fixed direction.

The target's tessellation affects the result. Inspect behavior near creases, boundaries, and disconnected components.

Permanent link · Official RhinoCommon reference

Rebuild

def Rebuild(self, pointCount: int, degree: int, preserveTangents: bool) -> NurbsCurve

Rebuilding changes degree and control-point count and generally approximates the original shape.

Measure deviation and verify endpoint or tangent constraints. Fewer control points can simplify editing while losing important detail.

Permanent link · Official RhinoCommon reference

RemoveShortSegments

def RemoveShortSegments(self, tolerance: float) -> bool

Looks for segments that are shorter than tolerance that can be removed. Does not change the domain, but it will change the relative parameterization.

Permanent link · Official RhinoCommon reference

Repair

def Repair(self, tolerance: float) -> bool

Repairs a curve.

Permanent link · Official RhinoCommon reference

Reparameterize

def Reparameterize(self) -> Curve

Reparameterizes a curve using automatic parameterization.

Permanent link · Official RhinoCommon reference

Reverse

def Reverse(self) -> bool

Reverse changes traversal in place. Saved parameters can identify different points afterward.

Recompute correspondence or use the documented parameter mapping. Tangent direction and orientation-sensitive operations also change.

Permanent link · Official RhinoCommon reference

RibbonOffset

def RibbonOffset(self, distance: float, blendRadius: float, directionPoint: Point3d, normal: Vector3d, tolerance: float) -> Curve | tuple[Curve, Sequence[Curve], Sequence[Surface]] | tuple[Curve, Sequence[float], Sequence[float]]
def RibbonOffset(self, ribbonParameters: RibbonOffsetParameters) -> tuple[Curve, Sequence[Curve], Sequence[Curve], Sequence[Brep]]

Offsets a closed curve in the following way: pProject the curve to a plane with given normal. Then, loose Offset the projection by distance + blend_radius and trim off self-intersection. THen, Offset the remaining curve back in the opposite direction by blend_radius, filling gaps with blends. Finally, use the elevations of the input curve to get the correct elevations of the result.

Permanent link · Official RhinoCommon reference

SetEndPoint

def SetEndPoint(self, point: Point3d) -> bool

Forces the curve to end at a specified point. Not all curve types support this operation.

Permanent link · Official RhinoCommon reference

SetStartPoint

def SetStartPoint(self, point: Point3d) -> bool

Forces the curve to start at a specified point. Not all curve types support this operation.

Permanent link · Official RhinoCommon reference

Simplify

def Simplify(self, options: CurveSimplifyOptions, distanceTolerance: float, angleToleranceRadians: float) -> Curve

Returns a geometrically equivalent PolyCurve. The PolyCurve has the following properties 1. All the PolyCurve segments are LineCurve, PolylineCurve, ArcCurve, or NurbsCurve. 2. The NURBS Curves segments do not have fully multiple interior knots. 3. Rational NURBS curves do not have constant weights. 4. Any segment for which IsLinear() or IsArc() is true is a Line, Polyline segment, or an Arc. 5. Adjacent co-linear or co-circular segments are combined. 6. Segments that meet with G1-continuity have there ends tuned up so that they meet with G1-continuity to within machine precision.

Permanent link · Official RhinoCommon reference

SimplifyEnd

def SimplifyEnd(self, end: CurveEnd, options: CurveSimplifyOptions, distanceTolerance: float, angleToleranceRadians: float) -> Curve

Same as SimplifyCurve, but simplifies only the last two segments at "side" end.

Permanent link · Official RhinoCommon reference

Smooth

def Smooth(self, smoothFactor: float, bXSmooth: bool, bYSmooth: bool, bZSmooth: bool, bFixBoundaries: bool, coordinateSystem: SmoothingCoordinateSystem) -> Curve
def Smooth(self, smoothFactor: float, bXSmooth: bool, bYSmooth: bool, bZSmooth: bool, bFixBoundaries: bool, coordinateSystem: SmoothingCoordinateSystem, plane: Plane) -> Curve

Smooths a curve by averaging the positions of control points in a specified region.

Permanent link · Official RhinoCommon reference

SpanDomain

def SpanDomain(self, spanIndex: int) -> Interval

Get the domain of the curve span with the given index. Use the SpanCount property to test how many spans there are.

Permanent link · Official RhinoCommon reference

SpanVector

def SpanVector(self) -> Sequence[float]

Returns the vector of span division parameters for this curve.

Permanent link · Official RhinoCommon reference

Split

def Split(self, cutter: Brep, tolerance: float) -> Sequence[Curve]
def Split(self, cutter: Brep, tolerance: float, angleToleranceRadians: float) -> Sequence[Curve]
def Split(self, cutter: Surface, tolerance: float) -> Sequence[Curve]
def Split(self, cutter: Surface, tolerance: float, angleToleranceRadians: float) -> Sequence[Curve]
def Split(self, plane: Plane, tolerance: float, angleToleranceRadians: float) -> Sequence[Curve]
def Split(self, t: float) -> Sequence[Curve]
def Split(self, t: Iterable[float]) -> Sequence[Curve]

Splitting creates pieces separated at curve parameters. Check result count and the domains of the pieces.

Endpoint parameters may not produce a useful new segment. Preserve segment-to-source correspondence when transferring attributes.

Permanent link · Official RhinoCommon reference

TangentAt

def TangentAt(self, t: float) -> Vector3d

The tangent describes the direction of increasing parameter. It is neither a position nor a curvature measurement.

Reversing the curve reverses traversal. At singular or discontinuous regions, a stable tangent may not be available.

Permanent link · Official RhinoCommon reference

ToArcsAndLines

def ToArcsAndLines(self, tolerance: float, angleTolerance: float, minimumLength: float, maximumLength: float) -> PolyCurve

Converts a curve into polycurve consisting of arc segments. Sections of the input curves that are nearly straight are converted to straight-line segments.

Permanent link · Official RhinoCommon reference

ToNurbsCurve

def ToNurbsCurve(self) -> NurbsCurve
def ToNurbsCurve(self, subdomain: Interval) -> NurbsCurve

Constructs a NURBS curve representation of this curve.

Permanent link · Official RhinoCommon reference

ToPolyline

def ToPolyline(self, mainSegmentCount: int, subSegmentCount: int, maxAngleRadians: float, maxChordLengthRatio: float, maxAspectRatio: float, tolerance: float, minEdgeLength: float, maxEdgeLength: float, keepStartPoint: bool) -> PolylineCurve
def ToPolyline(self, mainSegmentCount: int, subSegmentCount: int, maxAngleRadians: float, maxChordLengthRatio: float, maxAspectRatio: float, tolerance: float, minEdgeLength: float, maxEdgeLength: float, keepStartPoint: bool, curveDomain: Interval) -> PolylineCurve
def ToPolyline(self, tolerance: float, angleTolerance: float, minimumLength: float, maximumLength: float) -> PolylineCurve

Polyline conversion approximates shape with straight segments. Deviation and angle limits matter more than density alone.

Choose tolerance in model units for the downstream task. A visually dense polyline remains an approximation of the curve.

Permanent link · Official RhinoCommon reference

TorsionAt

def TorsionAt(self, t: float) -> float

Evaluate the torsion of a curve at a parameter. Sometimes also called the "second curvature", torsion is the rate of change of a curve's osculating plane.

Permanent link · Official RhinoCommon reference

Trim

def Trim(self, domain: Interval) -> Curve
def Trim(self, side: CurveEnd, length: float) -> Curve
def Trim(self, t0: float, t1: float) -> Curve

Curve trimming keeps a parameter interval. It differs from trimming a surface through Brep loops.

Use the source domain. Closed curves require deliberate seam handling when the retained interval crosses the domain boundary.

Permanent link · Official RhinoCommon reference

TrimInterval

def TrimInterval(self, domain: Interval) -> bool
def TrimInterval(self, t0: float, t1: float) -> bool

Trims the curve in-place by removing portions of the curve outside the specified interval.

Permanent link · Official RhinoCommon reference

TryGetArc

def TryGetArc(self) -> tuple[bool, Arc]
def TryGetArc(self, plane: Plane) -> tuple[bool, Arc]
def TryGetArc(self, plane: Plane, tolerance: float) -> tuple[bool, Arc]
def TryGetArc(self, tolerance: float) -> tuple[bool, Arc]

Try to convert this curve into an Arc using RhinoMath.ZeroTolerance.

Permanent link · Official RhinoCommon reference

TryGetCircle

def TryGetCircle(self) -> tuple[bool, Circle]
def TryGetCircle(self, tolerance: float) -> tuple[bool, Circle]

Try to convert this curve into a circle using RhinoMath.ZeroTolerance.

Permanent link · Official RhinoCommon reference

TryGetEllipse

def TryGetEllipse(self) -> tuple[bool, Ellipse]
def TryGetEllipse(self, plane: Plane) -> tuple[bool, Ellipse]
def TryGetEllipse(self, plane: Plane, tolerance: float) -> tuple[bool, Ellipse]
def TryGetEllipse(self, tolerance: float) -> tuple[bool, Ellipse]

Try to convert this curve into an Ellipse within RhinoMath.ZeroTolerance.

Permanent link · Official RhinoCommon reference

TryGetPlane

def TryGetPlane(self) -> tuple[bool, Plane]
def TryGetPlane(self, tolerance: float) -> tuple[bool, Plane]

Test a curve for planarity and return the plane.

Permanent link · Official RhinoCommon reference

TryGetPolyline

def TryGetPolyline(self) -> tuple[bool, Polyline, Sequence[float]] | tuple[bool, Polyline]

Several types of Curve can have the form of a polyline including a degree 1 NurbsCurve, a PolylineCurve, and a PolyCurve all of whose segments are some form of polyline. IsPolyline tests a curve to see if it can be represented as a polyline.

Permanent link · Official RhinoCommon reference

CurveBooleanRegions

10 members
CurveBooleanRegions

Represents the results of a Curve.CreateBooleanRegions calculation.

Permanent link · Official RhinoCommon reference

RegionCount

def RegionCount(self) -> int

Returns the number of curve regions. A curve region is a collection of curves that bound a single connected region of the plane.

Permanent link · Official RhinoCommon reference

PointCount

def PointCount(self) -> int

If this object were created using the Curve.CreateBooleanRegions override that accepts a collection of points as input, then this value will be equal to the length of the points collection.

Permanent link · Official RhinoCommon reference

PlanarCurveCount

def PlanarCurveCount(self) -> int

Returns number of planar curves that were calculated by Curve.CreateBooleanRegions.

Permanent link · Official RhinoCommon reference

BoundaryCount

def BoundaryCount(self, regionIndex: int) -> int

Returns the number of boundary curves in a curve region.

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

PlanarCurve

def PlanarCurve(self, planarCurveIndex: int) -> Curve

Returns a planar curve that was calculated by Curve.CreateBooleanRegions.

Permanent link · Official RhinoCommon reference

RegionCurves

def RegionCurves(self, regionIndex: int) -> Sequence[Curve]

Returns the boundary curves in a curve region. A curve region is a collection of curves that bound a single connected region of the plane. Note, the first curve is always the outer boundary.

Permanent link · Official RhinoCommon reference

RegionPointIndex

def RegionPointIndex(self, pointIndex: int) -> int

If this object were created using the Curve.CreateBooleanRegions override that accepts a collection of points as input, then you this method to retrieve the index of the point contained in a curve region. If this.RegionPointIndex(i) = n, then points[i] is contained in this.RegionCurves(n). If points[i] is not in any region, then this.RegionPointIndex(i) = -1.

Permanent link · Official RhinoCommon reference

SegmentCount

def SegmentCount(self, regionIndex: int, boundaryIndex: int) -> int

Returns the number of segments in a boundary curve in a curve region.

Permanent link · Official RhinoCommon reference

SegmentDetails

def SegmentDetails(self, regionIndex: int, boundaryIndex: int, segmmentIndex: int) -> tuple[int, Interval, bool]

Returns the details of a segment in a boundary curve in a curve region.

Permanent link · Official RhinoCommon reference

CurveEnd

0 members
CurveEnd

Defines the extremes of a curve through a flagged enumeration.

Permanent link · Official RhinoCommon reference

CurveEvaluationSide

0 members
CurveEvaluationSide

Defines enumerated values for the options that defines a curve evaluation side when evaluating kinks.

Permanent link · Official RhinoCommon reference

CurveExtensionStyle

0 members
CurveExtensionStyle

Defines enumerated values for styles to use during curve extension, such as "Line", "Arc" or "Smooth".

Permanent link · Official RhinoCommon reference

CurveKnotStyle

0 members
CurveKnotStyle

Defines enumerated values for knot spacing styles in interpolated curves.

Permanent link · Official RhinoCommon reference

CurveOffsetCornerStyle

0 members
CurveOffsetCornerStyle

Defines enumerated values for all implemented corner styles in curve offsets.

Permanent link · Official RhinoCommon reference

CurveOffsetEndStyle

0 members
CurveOffsetEndStyle

Defines enumerated values for all implemented end styles in curve offsets.

Permanent link · Official RhinoCommon reference

CurveOrientation

0 members
CurveOrientation

Defines enumerated values for closed curve orientations.

Permanent link · Official RhinoCommon reference

CurveProxy

1 members
CurveProxy

Represent curve geometry. Usually this is part of another piece of geometry that can be represented as a "proxy".

Permanent link · Official RhinoCommon reference

ProxyCurveIsReversed

def ProxyCurveIsReversed(self) -> bool

True if "this" is a curve is reversed from the "real" curve geometry

Permanent link · Official RhinoCommon reference

CurveSimplifyOptions

0 members
CurveSimplifyOptions

Enumerates the options to use when simplifying a curve.

Permanent link · Official RhinoCommon reference

Cylinder

18 members
Cylindersurfaces

A cylinder combines a circular cross section and an axis; height limits determine its finite extent.

An analytic cylinder and a capped Brep solid are different representations. Inspect conversion options and closure when volume matters.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, baseCircle: Circle) -> None
def __init__(self, baseCircle: Circle, height: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Cylinder]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets a boolean value indicating whether this cylinder is valid. A valid cylinder is represented by a valid circle and two valid heights.

Permanent link · Official RhinoCommon reference

IsFinite

def IsFinite(self) -> bool

true if the cylinder is finite (Height0 != Height1) false if the cylinder is infinite.

Permanent link · Official RhinoCommon reference

Center

def Center(self) -> Point3d

Gets the center point of the defining circle.

Permanent link · Official RhinoCommon reference

Axis

def Axis(self) -> Vector3d

Gets the axis direction of the cylinder.

Permanent link · Official RhinoCommon reference

TotalHeight

def TotalHeight(self) -> float

Gets the height of the cylinder. Infinite cylinders have a height of zero, not Double.PositiveInfinity.

Permanent link · Official RhinoCommon reference

Height1

def Height1(self) -> float

Gets or sets the start height of the cylinder. The center of bottom cap is: BasePlane.Origin + Height1 * BasePlane.ZAxis.

Permanent link · Official RhinoCommon reference

Height2

def Height2(self) -> float

Gets or sets the end height of the cylinder. If the end height equals the start height, the cylinder is presumed to be infinite. The center of top cap is: BasePlane.Origin + Height2 * BasePlane.ZAxis.

Permanent link · Official RhinoCommon reference

Radius

def Radius(self) -> float

Gets or sets the radius of the cylinder.

Permanent link · Official RhinoCommon reference

BasePlane

def BasePlane(self) -> Plane

Gets or sets the base plane of the cylinder.

Permanent link · Official RhinoCommon reference

CircleAt

def CircleAt(self, linearParameter: float) -> Circle

Compute the circle at the given elevation parameter.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Cylinder, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

LineAt

def LineAt(self, angularParameter: float) -> Line

Compute the line at the given angle parameter. This line will be degenerate if the cylinder is infinite.

Permanent link · Official RhinoCommon reference

ToBrep

def ToBrep(self, capBottom: bool, capTop: bool) -> Brep

Constructs a Brep representation of this Cylinder. This is synonymous with calling NurbsSurface.CreateFromCylinder().

Permanent link · Official RhinoCommon reference

ToNurbsSurface

def ToNurbsSurface(self) -> NurbsSurface

Constructs a Nurbs surface representation of this cylinder. This is synonymous with calling NurbsSurface.CreateFromCylinder().

Permanent link · Official RhinoCommon reference

ToRevSurface

def ToRevSurface(self) -> RevSurface

Constructs a RevSurface representation of this Cylinder. This is synonymous with calling RevSurface.CreateFromCylinder().

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> bool

Transforms this cylinder. Note that non-similarity preserving transformations cannot be applied to a cylinder.

Permanent link · Official RhinoCommon reference

DetailView

5 members
DetailView

Represents a view of the model placed on a page layout.

Permanent link · Official RhinoCommon reference

IsParallelProjection

def IsParallelProjection(self) -> bool

Gets or sets whether the view is parallel.

Permanent link · Official RhinoCommon reference

IsPerspectiveProjection

def IsPerspectiveProjection(self) -> bool

Gets or sets whether the view is perspective.

Permanent link · Official RhinoCommon reference

IsProjectionLocked

def IsProjectionLocked(self) -> bool

Gets or sets whether the view is locked.

Permanent link · Official RhinoCommon reference

PageToModelRatio

def PageToModelRatio(self) -> float

Gets the ratio of page units to model units for this detail view. Returns 0 if the projection is not parallel.

Permanent link · Official RhinoCommon reference

SetScale

def SetScale(self, modelLength: float, modelUnits: UnitSystem, pageLength: float, pageUnits: UnitSystem) -> bool

Sets the detail viewport's projection so geometry is displayed at a certain scale.

Permanent link · Official RhinoCommon reference

DevelopableSrf

4 members
DevelopableSrf

Helpers for developable surface functions

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

GetLocalDevopableRuling

def GetLocalDevopableRuling(rail0: NurbsCurve, t0: float, dom0: Interval, rail1: NurbsCurve, t1: float, dom1: Interval, t0_out: float, t1_out: float) -> tuple[int, float, float]

Finds minimum twist ruling between 2 curves at local domains

Permanent link · Official RhinoCommon reference

RulingMinTwist

def RulingMinTwist(rail0: NurbsCurve, t0: float, dom0: Interval, rail1: NurbsCurve, t1: float, dom1: Interval, t0_out: float, t1_out: float, cos_twist_out: float) -> tuple[bool, float, float, float]
def RulingMinTwist(rail0: NurbsCurve, t0: float, rail1: NurbsCurve, t1: float, dom1: Interval, t1_out: float, cos_twist_out: float) -> tuple[bool, float, float]

Find a ruling from rail0(t0_out) to rail1(t1_out) that has the least twist across the ruling with t0_out in domain0 and t1_out in domain1. max_cos_twist is cos(twist) for the returned ruling

Permanent link · Official RhinoCommon reference

UntwistRulings

def UntwistRulings(rail0: NurbsCurve, rail1: NurbsCurve, rulings: Iterable[Point2d]) -> tuple[bool, Sequence[Point2d]]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Dimension

57 members
Dimension

Base class for dimensions

Permanent link · Official RhinoCommon reference

UseDefaultTextPoint

def UseDefaultTextPoint(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

TextPosition

def TextPosition(self) -> Point2d

Gets and sets the position of text on the plane.

Permanent link · Official RhinoCommon reference

PlainUserText

def PlainUserText(self) -> str

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

TextFormula

def TextFormula(self) -> str

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

TextRotation

def TextRotation(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

NumericValue

def NumericValue(self) -> float

Gets the numeric value (or measurement), depending on geometry type. LinearDimension: distance between arrow tips RadialDimension: radius or diameter depending on type AngularDimension: angle in radians

Permanent link · Official RhinoCommon reference

DetailMeasured

def DetailMeasured(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DistanceScale

def DistanceScale(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ForceArrowPosition

def ForceArrowPosition(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ForceTextPosition

def ForceTextPosition(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ForceDimLine

def ForceDimLine(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ArrowFit

def ArrowFit(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ForceDimensionLineBetweenExtensionLines

def ForceDimensionLineBetweenExtensionLines(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

TextFit

def TextFit(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

TextOrientation

def TextOrientation(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

TextLocation

def TextLocation(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

TextAngleType

def TextAngleType(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DimensionLineExtension

def DimensionLineExtension(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ExtensionLineExtension

def ExtensionLineExtension(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ExtensionLineOffset

def ExtensionLineOffset(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

FixedLengthExtensionOn

def FixedLengthExtensionOn(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

FixedExtensionLength

def FixedExtensionLength(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

BaselineSpacing

def BaselineSpacing(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

CentermarkSize

def CentermarkSize(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

CentermarkStyle

def CentermarkStyle(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SuppressExtension1

def SuppressExtension1(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SuppressExtension2

def SuppressExtension2(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ArrowheadType1

def ArrowheadType1(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ArrowheadType2

def ArrowheadType2(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ArrowSize

def ArrowSize(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ArrowBlockId1

def ArrowBlockId1(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ArrowBlockId2

def ArrowBlockId2(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

LengthFactor

def LengthFactor(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

LengthResolution

def LengthResolution(self) -> int

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

LengthRoundoff

def LengthRoundoff(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Prefix

def Prefix(self) -> str

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Suffix

def Suffix(self) -> str

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ZeroSuppression

def ZeroSuppression(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AltUnitsDisplay

def AltUnitsDisplay(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AltLengthFactor

def AltLengthFactor(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AltLengthResolution

def AltLengthResolution(self) -> int

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AltLengthRoundoff

def AltLengthRoundoff(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AltPrefix

def AltPrefix(self) -> str

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AltSuffix

def AltSuffix(self) -> str

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AltZeroSuppression

def AltZeroSuppression(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AlternateBelowLine

def AlternateBelowLine(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ToleranceFormat

def ToleranceFormat(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ToleranceResolution

def ToleranceResolution(self) -> int

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AltToleranceResolution

def AltToleranceResolution(self) -> int

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ToleranceUpperValue

def ToleranceUpperValue(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ToleranceLowerValue

def ToleranceLowerValue(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ToleranceHeightScale

def ToleranceHeightScale(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Explode

def Explode(self) -> Sequence[GeometryBase]

Explodes this dimension into its geometric components.

Permanent link · Official RhinoCommon reference

GetTextTransform

def GetTextTransform(self, viewport: ViewportInfo, style: DimensionStyle, textScale: float, drawForward: bool) -> Transform

Get the transform for this text object's text geometry

Permanent link · Official RhinoCommon reference

SetAltDimensionLengthDisplayWithZeroSuppressionReset

def SetAltDimensionLengthDisplayWithZeroSuppressionReset(self, ld: Any) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SetDimensionLengthDisplayWithZeroSuppressionReset

def SetDimensionLengthDisplayWithZeroSuppressionReset(self, ld: Any) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

UpdateDimensionText

def UpdateDimensionText(self, style: DimensionStyle, units: UnitSystem) -> None

Remakes dimension text geometry object and sets it on the dimension.

Permanent link · Official RhinoCommon reference

DistancingMode

0 members
DistancingMode

Defines how offset and similar operations should work.

Permanent link · Official RhinoCommon reference

EdgeAdjacency

0 members
EdgeAdjacency

Enumerates all possible Topological Edge adjacency types.

Permanent link · Official RhinoCommon reference

Ellipse

10 members
Ellipsecurves

An ellipse is a planar conic with two principal radii. Its angular parameter is not proportional to arc length.

Equal angular steps travel different distances. Convert to a Curve and use length methods for uniform physical spacing.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, center: Point3d, second: Point3d, third: Point3d) -> None
def __init__(self, plane: Plane, radius1: float, radius2: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Plane

def Plane(self) -> Plane

Gets or sets the base plane of the ellipse.

Permanent link · Official RhinoCommon reference

Radius1

def Radius1(self) -> float

Gets or sets the radius of the ellipse along the base plane X semi-axis.

Permanent link · Official RhinoCommon reference

Radius2

def Radius2(self) -> float

Gets or sets the radius of the ellipse along the base plane Y semi-axis.

Permanent link · Official RhinoCommon reference

Center

def Center(self) -> Point3d

Gets or sets the center of the ellipse.

Permanent link · Official RhinoCommon reference

FocalDistance

def FocalDistance(self) -> float

Gets the distance from the center to a focus.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Returns an indication of the validity of this ellipse.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Ellipse, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

GetFoci

def GetFoci(self) -> tuple[Point3d, Point3d]

Gets the foci. The foci are two points whose sum of distances from any point on the ellipse is always the same.

Permanent link · Official RhinoCommon reference

ToNurbsCurve

def ToNurbsCurve(self) -> NurbsCurve

Constructs a nurbs curve representation of this ellipse. This is equivalent to calling NurbsCurve.CreateFromEllipse().

Permanent link · Official RhinoCommon reference

ExtrudeCornerType

0 members
ExtrudeCornerType

Corner types used for creating a tapered extrusion

Permanent link · Official RhinoCommon reference

Extrusion

33 members
Extrusionsurfacestopology

An extrusion stores profiles and a path compactly. Caps and inner profiles determine solid enclosure.

It can be more economical than a general Brep. Convert when topology is needed and verify IsSolid for volume-related tasks.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

Initializes a new instance of the Rhino.Geometry.Extrusion class.

Permanent link · Official RhinoCommon reference

PathStart

def PathStart(self) -> Point3d

Gets the start point of the path.

Permanent link · Official RhinoCommon reference

PathEnd

def PathEnd(self) -> Point3d

Gets the end point of the path.

Permanent link · Official RhinoCommon reference

PathTangent

def PathTangent(self) -> Vector3d

Gets the up vector of the path.

Permanent link · Official RhinoCommon reference

MiterPlaneNormalAtStart

def MiterPlaneNormalAtStart(self) -> Vector3d

Gets or sets the normal of the miter plane at the start in profile coordinates. In profile coordinates, 0,0,1 always maps to the extrusion axis

Permanent link · Official RhinoCommon reference

MiterPlaneNormalAtEnd

def MiterPlaneNormalAtEnd(self) -> Vector3d

Gets or sets the normal of the miter plane at the end in profile coordinates. In profile coordinates, 0,0,1 always maps to the extrusion axis

Permanent link · Official RhinoCommon reference

IsMiteredAtStart

def IsMiteredAtStart(self) -> bool

Returns a value indicating whether a miter plane at start is defined.

Permanent link · Official RhinoCommon reference

IsMiteredAtEnd

def IsMiteredAtEnd(self) -> bool

Gets a value indicating whether a miter plane at the end is defined.

Permanent link · Official RhinoCommon reference

IsSolid

def IsSolid(self) -> bool

Gets a value indicating whether there is no gap among all surfaces constructing this object.

Permanent link · Official RhinoCommon reference

IsCappedAtBottom

def IsCappedAtBottom(self) -> bool

Gets a value indicating whether the surface that fills the bottom profile is existing.

Permanent link · Official RhinoCommon reference

IsCappedAtTop

def IsCappedAtTop(self) -> bool

Gets a value indicating whether the surface that fills the top profile is existing.

Permanent link · Official RhinoCommon reference

CapCount

def CapCount(self) -> int

Gets the amount of capping surfaces.

Permanent link · Official RhinoCommon reference

ProfileCount

def ProfileCount(self) -> int

Gets the amount of profile curves.

Permanent link · Official RhinoCommon reference

AddInnerProfile

def AddInnerProfile(self, innerProfile: Curve) -> bool

Adds an inner profile.

Permanent link · Official RhinoCommon reference

Create

def Create(curve: Curve, plane: Plane, height: float, cap: bool) -> Extrusion
def Create(planarCurve: Curve, height: float, cap: bool) -> Extrusion

Create an extrusion from a 3d curve, a plane and a height.

Permanent link · Official RhinoCommon reference

CreateBoxExtrusion

def CreateBoxExtrusion(box: Box, cap: bool=...) -> Extrusion

Gets an extrusion from a box.

Permanent link · Official RhinoCommon reference

CreateCylinderExtrusion

def CreateCylinderExtrusion(cylinder: Cylinder, capBottom: bool, capTop: bool) -> Extrusion

Gets an extrusion form of a cylinder.

Permanent link · Official RhinoCommon reference

CreatePipeExtrusion

def CreatePipeExtrusion(cylinder: Cylinder, otherRadius: float, capTop: bool, capBottom: bool) -> Extrusion

Gets an extrusion form of a pipe.

Permanent link · Official RhinoCommon reference

GetBrepFormComponentIndex

def GetBrepFormComponentIndex(self, extrusionComponentIndex: ComponentIndex) -> ComponentIndex

Convert a component index that identifies a part of this extrusion to a component index that identifies a part of the Brep created by Extrusion.ToBrep(false).

Permanent link · Official RhinoCommon reference

GetMesh

def GetMesh(self, meshType: MeshType) -> Mesh

Obtains a reference to a specified type of mesh for this extrusion.

Permanent link · Official RhinoCommon reference

GetPathPlane

def GetPathPlane(self, s: float) -> Plane

Gets the 3D plane perpendicular to the path at a normalized path parameter.

Permanent link · Official RhinoCommon reference

GetProfilePlane

def GetProfilePlane(self, s: float) -> Plane

Gets the 3D plane containing the profile curve at a normalized path parameter.

Permanent link · Official RhinoCommon reference

GetProfileTransformation

def GetProfileTransformation(self, s: float) -> Transform

Gets the transformation that maps the XY profile curve to its 3d location.

Permanent link · Official RhinoCommon reference

GetWireframe

def GetWireframe(self) -> Sequence[Curve]

Constructs all the Wireframe curves for this Extrusion.

Permanent link · Official RhinoCommon reference

PathLineCurve

def PathLineCurve(self) -> LineCurve

Gets the line-like curve that is the conceptual axis of the extrusion.

Permanent link · Official RhinoCommon reference

Profile3d

def Profile3d(self, ci: ComponentIndex) -> Curve
def Profile3d(self, profileIndex: int, s: float) -> Curve

Gets one of the profiles.

Permanent link · Official RhinoCommon reference

ProfileIndex

def ProfileIndex(self, profileParameter: float) -> int

Gets the index of the profile curve at a domain related to a parameter.

Permanent link · Official RhinoCommon reference

SetMesh

def SetMesh(self, mesh: Mesh, meshType: MeshType) -> bool

Sets a specified type of mesh for this extrusion.

Permanent link · Official RhinoCommon reference

SetOuterProfile

def SetOuterProfile(self, outerProfile: Curve, cap: bool) -> bool

Sets the outer profile of the extrusion.

Permanent link · Official RhinoCommon reference

SetPathAndUp

def SetPathAndUp(self, a: Point3d, b: Point3d, up: Vector3d) -> bool

Allows to set the two points at the extremes and the up vector.

Permanent link · Official RhinoCommon reference

ToBrep

def ToBrep(self) -> Brep
def ToBrep(self, splitKinkyFaces: bool) -> Brep

Conversion expands compact extrusion geometry into Brep faces and edges.

Component indices and identity can change. Recompute topology references instead of assuming a one-to-one index mapping.

Permanent link · Official RhinoCommon reference

WallEdge

def WallEdge(self, ci: ComponentIndex) -> Curve

Gets one of the longitudinal curves along the beam or extrusion.

Permanent link · Official RhinoCommon reference

WallSurface

def WallSurface(self, ci: ComponentIndex) -> Surface

Gets one of the longitudinal surfaces of the extrusion.

Permanent link · Official RhinoCommon reference

FilletSurfaceSplitType

0 members
FilletSurfaceSplitType

RhinoFilletSurfaceSplitType

Permanent link · Official RhinoCommon reference

GeometryBase

24 members
GeometryBase

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

Permanent link · Official RhinoCommon reference

IsDocumentControlled

def IsDocumentControlled(self) -> bool

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.

Permanent link · Official RhinoCommon reference

IsShallowDuplicate

def IsShallowDuplicate(self) -> bool

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)

Permanent link · Official RhinoCommon reference

ObjectType

def ObjectType(self) -> Any

Useful for switch statements that need to differentiate between basic object types like points, curves, surfaces, and so on.

Permanent link · Official RhinoCommon reference

IsDeformable

def IsDeformable(self) -> bool

true if object can be accurately modified with "squishy" transformations like projections, shears, and non-uniform scaling.

Permanent link · Official RhinoCommon reference

HasBrepForm

def HasBrepForm(self) -> bool

Returns true if the Brep.TryConvertBrep function will be successful for this object

Permanent link · Official RhinoCommon reference

UserStringCount

def UserStringCount(self) -> int

Gets the amount of user strings.

Permanent link · Official RhinoCommon reference

ComponentIndex

def ComponentIndex(self) -> 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.

Permanent link · Official RhinoCommon reference

DataCRC

def DataCRC(self, currentRemainder: int) -> int

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.

Permanent link · Official RhinoCommon reference

DeleteAllUserStrings

def DeleteAllUserStrings(self) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DeleteUserString

def DeleteUserString(self, key: str) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Duplicate

def Duplicate(self) -> GeometryBase

Constructs a deep (full) copy of this object.

Permanent link · Official RhinoCommon reference

DuplicateShallow

def DuplicateShallow(self) -> GeometryBase

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.

Permanent link · Official RhinoCommon reference

GeometryEquals

def GeometryEquals(first: GeometryBase, second: GeometryBase) -> bool

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.

Permanent link · Official RhinoCommon reference

GeometryReferenceEquals

def GeometryReferenceEquals(one: GeometryBase, other: GeometryBase) -> bool

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.

Permanent link · Official RhinoCommon reference

GetBoundingBox

def GetBoundingBox(self, accurate: bool) -> BoundingBox
def GetBoundingBox(self, plane: Plane) -> BoundingBox | tuple[BoundingBox, Box]
def GetBoundingBox(self, xform: Transform) -> BoundingBox

Bounding box solver. Gets the world axis aligned bounding box for the geometry.

Permanent link · Official RhinoCommon reference

GetUserString

def GetUserString(self, key: str) -> str

Gets user string from this geometry.

Permanent link · Official RhinoCommon reference

GetUserStrings

def GetUserStrings(self) -> Any

Gets a copy of all (user key string, user value string) pairs attached to this geometry.

Permanent link · Official RhinoCommon reference

MakeDeformable

def MakeDeformable(self) -> bool

If possible, converts the object into a form that can be accurately modified with "squishy" transformations like projections, shears, an non-uniform scaling.

Permanent link · Official RhinoCommon reference

MemoryEstimate

def MemoryEstimate(self) -> int

Computes an estimate of the number of bytes that this object is using in memory.

Permanent link · Official RhinoCommon reference

Rotate

def Rotate(self, angleRadians: float, rotationAxis: Vector3d, rotationCenter: Point3d) -> bool

Rotates the object about the specified axis. A positive rotation angle results in a counter-clockwise rotation about the axis (right hand rule).

Permanent link · Official RhinoCommon reference

Scale

def Scale(self, scaleFactor: float) -> bool

Scales the object by the specified factor. The scale is centered at the origin.

Permanent link · Official RhinoCommon reference

SetUserString

def SetUserString(self, key: str, value: str) -> bool

Attach a user string (key,value combination) to this geometry.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> bool

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.

Permanent link · Official RhinoCommon reference

Translate

def Translate(self, translationVector: Vector3d) -> bool
def Translate(self, x: float, y: float, z: float) -> bool

Translates the object along the specified vector.

Permanent link · Official RhinoCommon reference

Hatch

15 members
Hatchannotations

A hatch combines planar boundaries and a display pattern. Pattern scale differs from boundary geometry.

Loops define filled regions and holes. Pattern appearance does not establish a connected surface or a solid.

Permanent link · Official RhinoCommon reference

PatternIndex

def PatternIndex(self) -> int

Gets or sets the index of the pattern in the document hatch pattern table.

Permanent link · Official RhinoCommon reference

PatternRotation

def PatternRotation(self) -> float

Gets or sets the relative rotation of the pattern.

Permanent link · Official RhinoCommon reference

BasePoint

def BasePoint(self) -> Point3d

Gets or sets the hatch pattern base point

Permanent link · Official RhinoCommon reference

Plane

def Plane(self) -> Plane

Gets or sets the hatch plane

Permanent link · Official RhinoCommon reference

PatternScale

def PatternScale(self) -> float

Gets or sets the scaling factor of the pattern.

Permanent link · Official RhinoCommon reference

Create

def Create(curve: Curve, hatchPatternIndex: int, rotationRadians: float, scale: float) -> Sequence[Hatch]
def Create(curve: Curve, hatchPatternIndex: int, rotationRadians: float, scale: float, tolerance: float) -> Sequence[Hatch]
def Create(curves: Iterable[Curve], hatchPatternIndex: int, rotationRadians: float, scale: float) -> Sequence[Hatch]
def Create(curves: Iterable[Curve], hatchPatternIndex: int, rotationRadians: float, scale: float, tolerance: float) -> Sequence[Hatch]
def Create(hatchPlane: Plane, outerLoop: Curve, innerLoops: Iterable[Curve], hatchPatternIndex: int, rotationRadians: float, scale: float) -> Hatch

Constructs an array of Rhino.Geometry.Hatch from one curve.

Permanent link · Official RhinoCommon reference

CreateDisplayGeometry

def CreateDisplayGeometry(self, pattern: Any, patternScale: float) -> tuple[Sequence[Curve], Sequence[Line], Brep]

Generate geometry that would be used to draw the hatch with a given hatch pattern

Permanent link · Official RhinoCommon reference

CreateFromBrep

def CreateFromBrep(brep: Brep, brepFaceIndex: int, hatchPatternIndex: int, rotationRadians: float, scale: float, basePoint: Point3d) -> Hatch

Create a hatch from a planar face of a Brep

Permanent link · Official RhinoCommon reference

Explode

def Explode(self) -> Sequence[GeometryBase]

Decomposes the hatch pattern into an array of geometry.

Permanent link · Official RhinoCommon reference

Get2dCurves

def Get2dCurves(self, outer: bool) -> Sequence[Curve]

Gets 2d curves that define the boundaries of the hatch

Permanent link · Official RhinoCommon reference

Get3dCurves

def Get3dCurves(self, outer: bool) -> Sequence[Curve]

Gets 3d curves that define the boundaries of the hatch

Permanent link · Official RhinoCommon reference

GetGradientFill

def GetGradientFill(self) -> Any

Get gradient fill information for this hatch. If the "GradientType" for the fill is None, then this hatch doesn't have any gradient fill.

Permanent link · Official RhinoCommon reference

ScalePattern

def ScalePattern(self, xform: Transform) -> None

Scale the hatch's pattern

Permanent link · Official RhinoCommon reference

SetGradientFill

def SetGradientFill(self, fill: Any) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ToBrep

def ToBrep(self) -> Brep

Constructs a Brep representation of this hatch.

Permanent link · Official RhinoCommon reference

HermiteSurface

18 members
HermiteSurface

Create an ON_NurbsSurface satisfying Hermite interpolation conditions at a grid of points.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, uCount: int, vCount: int) -> None

Initializes a new Rhino.Geometry.HermiteSurface instance.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Returns true if the all of values in all of the internal data structures contain valid values, false otherwise.

Permanent link · Official RhinoCommon reference

UCount

def UCount(self) -> int

Gets the number of parameters in the "u" direction.

Permanent link · Official RhinoCommon reference

VCount

def VCount(self) -> int

Gets the number of parameters in the "v" direction.

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, uIndex: int, vIndex: int) -> Point3d

Gets the interpolation point at the u,v parameter location.

Permanent link · Official RhinoCommon reference

SetPointAt

def SetPointAt(self, uIndex: int, vIndex: int, point: Point3d) -> None

Sets the interpolation point at the u,v parameter location.

Permanent link · Official RhinoCommon reference

SetTwistAt

def SetTwistAt(self, uIndex: int, vIndex: int, twist: Vector3d) -> None

Set the twist direction (mixed second partial derivative) to interpolate at the u,v parameter location.

Permanent link · Official RhinoCommon reference

SetUParameterAt

def SetUParameterAt(self, index: int, parameter: float) -> None

Sets the "u" parameter at an index. These parameters are strictly increasing.

Permanent link · Official RhinoCommon reference

SetUTangentAt

def SetUTangentAt(self, uIndex: int, vIndex: int, tangent: Vector3d) -> None

Set the "u" tangent direction (actually first derivative) to interpolate at the u,v parameter location.

Permanent link · Official RhinoCommon reference

SetVParameterAt

def SetVParameterAt(self, index: int, parameter: float) -> None

Sets the "v" parameter at an index. These parameters are strictly increasing.

Permanent link · Official RhinoCommon reference

SetVTangentAt

def SetVTangentAt(self, uIndex: int, vIndex: int, tangent: Vector3d) -> None

Set the "v" tangent direction (actually first derivative) to interpolate at the u,v parameter location.

Permanent link · Official RhinoCommon reference

ToNurbsSurface

def ToNurbsSurface(self) -> NurbsSurface

Constructs a NURBS surface satisfying the Hermite interpolation conditions.

Permanent link · Official RhinoCommon reference

TwistAt

def TwistAt(self, uIndex: int, vIndex: int) -> Vector3d

Get the twist direction (mixed second partial derivative) to interpolate at the u,v parameter location.

Permanent link · Official RhinoCommon reference

UParameterAt

def UParameterAt(self, index: int) -> float

Gets the "u" parameter at an index. These parameters are strictly increasing.

Permanent link · Official RhinoCommon reference

UTangentAt

def UTangentAt(self, uIndex: int, vIndex: int) -> Vector3d

Get the "u" tangent direction (actually first derivative) to interpolate at the u,v parameter location.

Permanent link · Official RhinoCommon reference

VParameterAt

def VParameterAt(self, index: int) -> float

Gets the "v" parameter at an index. These parameters are strictly increasing.

Permanent link · Official RhinoCommon reference

VTangentAt

def VTangentAt(self, uIndex: int, vIndex: int) -> Vector3d

Get the "v" tangent direction (actually first derivative) to interpolate at the u,v parameter location.

Permanent link · Official RhinoCommon reference

HiddenLineDrawing

8 members
HiddenLineDrawing

Represents a hidden line drawing object. A hidden line drawing consists of curves generated from source objects. The curves correspond to edges, and silhouettes of source objects and intersections with cutting planes.

Permanent link · Official RhinoCommon reference

Segments

def Segments(self) -> Sequence[HiddenLineDrawingSegment]

Sub-curve objects calculated by the hidden line drawing.

Permanent link · Official RhinoCommon reference

Points

def Points(self) -> Sequence[HiddenLineDrawingPoint]

Point objects calculated by the hidden line drawing.

Permanent link · Official RhinoCommon reference

Viewport

def Viewport(self) -> ViewportInfo

Returns the ViewportInfo used by the hidden line drawing.

Permanent link · Official RhinoCommon reference

WorldToHiddenLine

def WorldToHiddenLine(self) -> Transform

Returns the world-coordinate system to HLD-coordinate system transformation.

Permanent link · Official RhinoCommon reference

BoundingBox

def BoundingBox(self, includeHidden: bool) -> BoundingBox

Get tight bounding box of the hidden line drawing.

Permanent link · Official RhinoCommon reference

Compute

def Compute(parameters: HiddenLineDrawingParameters, multipleThreads: bool) -> HiddenLineDrawing
def Compute(parameters: HiddenLineDrawingParameters, multipleThreads: bool, progress: Any, cancelToken: Any) -> HiddenLineDrawing

Perform the hidden line drawing calculation based on input parameters

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

RejoinCompatibleVisible

def RejoinCompatibleVisible(self) -> None

Join consecutive visible curves from a single FullCurve

Permanent link · Official RhinoCommon reference

HiddenLineDrawingObject

4 members
HiddenLineDrawingObject

Represents an object added to a HiddenLineDrawing

Permanent link · Official RhinoCommon reference

OccludingSections

def OccludingSections(self) -> bool

Objects in this drawing could have occluding sections. Objects must added with the occluding section option set as desired.

Permanent link · Official RhinoCommon reference

Geometry

def Geometry(self) -> GeometryBase

Returns the geometry in world coordinates if UseXform is false. Otherwise, the geometry in object space coordinates is returned.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self) -> Transform

Returns the transformation passed into the Add... function when setting up the hidden line drawing parameters.

Permanent link · Official RhinoCommon reference

Tag

def Tag(self) -> Any

Returns the extra data used to cross-reference the object specified in HiddenLineDrawing.AddObject.

Permanent link · Official RhinoCommon reference

HiddenLineDrawingObjectCurve

11 members
HiddenLineDrawingObjectCurve

Curves generated from source objects which correspond to edges, and silhouettes of source objects and intersections with cutting planes. A HiddenLineDrawingObjectCurve is partitioned into hidden and visible segments called HiddenLineDrawingSegment

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Verifies the object is valid.

Permanent link · Official RhinoCommon reference

SourceObject

def SourceObject(self) -> HiddenLineDrawingObject

Return the source object that this curve came from

Permanent link · Official RhinoCommon reference

SourceObjectComponentIndex

def SourceObjectComponentIndex(self) -> ComponentIndex

Component of source object part that generated this curve.

Permanent link · Official RhinoCommon reference

ClippingPlaneIndex

def ClippingPlaneIndex(self) -> int

Index into HiddenLineDrawing.ClippingPlanes when SilhouetteType == SilhouetteType.SectionCut.

Permanent link · Official RhinoCommon reference

Index

def Index(self) -> int

Index of this object in HiddenLineDrawing.FullCurves.

Permanent link · Official RhinoCommon reference

SilhouetteType

def SilhouetteType(self) -> SilhouetteType

The silhouette event type

Permanent link · Official RhinoCommon reference

OriginalDomainStart

def OriginalDomainStart(self) -> float

Initialized to RhinoMath.UnsetValue. Valid if the full curve is closed. Rejoin can reparameterize the curve by moving the seam. When this has been done the original domain start is stored here.

Permanent link · Official RhinoCommon reference

Parameters

def Parameters(self) -> Sequence[float]

Increasing, partition of curve.Domain.

Permanent link · Official RhinoCommon reference

Segments

def Segments(self) -> Sequence[HiddenLineDrawingSegment]

The HiddenLineDrawingCurve objects that make up this full curve.

Permanent link · Official RhinoCommon reference

IsProjecting

def IsProjecting(self) -> bool

Returns true if all the non clipped portions of this curve are projecting.

Permanent link · Official RhinoCommon reference

Curve

def Curve(self, t: float) -> HiddenLineDrawingSegment
def Curve(self, t: float, side: int) -> HiddenLineDrawingSegment

Returns the HiddenLineDrawingCurve object containing parameter 't'.

Permanent link · Official RhinoCommon reference

HiddenLineDrawingParameters

11 members
HiddenLineDrawingParameters

Input used for computing a hidden line drawing

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

default constructor

Permanent link · Official RhinoCommon reference

AbsoluteTolerance

def AbsoluteTolerance(self) -> float

Absolute tolerance is used to decide if curves overlap or intersect. A suggested value is to use RhinoDoc.AbsoluteTolerance

Permanent link · Official RhinoCommon reference

Flatten

def Flatten(self) -> bool

Flatten the computed geometry

Permanent link · Official RhinoCommon reference

IncludeTangentEdges

def IncludeTangentEdges(self) -> bool

Include tangent edges in hidden line drawing (default is true)

Permanent link · Official RhinoCommon reference

IncludeTangentSeams

def IncludeTangentSeams(self) -> bool

Include tangent seams in hidden line drawing (default is true)

Permanent link · Official RhinoCommon reference

IncludeHiddenCurves

def IncludeHiddenCurves(self) -> bool

Include hidden curves in hidden line drawing (default is true)

Permanent link · Official RhinoCommon reference

OccludingSectionOption

def OccludingSectionOption(self) -> bool

Enable occluding section option (default is false)

Permanent link · Official RhinoCommon reference

AddClippingPlane

def AddClippingPlane(self, plane: Plane) -> None

Specify clipping planes that are active for this view.

Permanent link · Official RhinoCommon reference

AddGeometry

def AddGeometry(self, geometry: GeometryBase, tag: Any) -> bool
def AddGeometry(self, geometry: GeometryBase, tag: Any, occluding_sections: bool) -> bool
def AddGeometry(self, geometry: GeometryBase, xform: Transform, tag: Any) -> bool
def AddGeometry(self, geometry: GeometryBase, xform: Transform, tag: Any, occluding_sections: bool) -> bool

Add geometry that should be included in the calculation

Permanent link · Official RhinoCommon reference

AddGeometryAndPlanes

def AddGeometryAndPlanes(self, geometry: GeometryBase, tag: Any, clips: Iterable[Plane]) -> bool
def AddGeometryAndPlanes(self, geometry: GeometryBase, tag: Any, occluding_sections: bool, clips: Iterable[Plane]) -> bool
def AddGeometryAndPlanes(self, geometry: GeometryBase, xform: Transform, tag: Any, clips: Iterable[Plane]) -> bool
def AddGeometryAndPlanes(self, geometry: GeometryBase, xform: Transform, tag: Any, occluding_sections: bool, clips: Iterable[Plane]) -> bool

Add geometry and its active clipping planes to be included in the calculation

Permanent link · Official RhinoCommon reference

SetViewport

def SetViewport(self, viewport: RhinoViewport) -> None
def SetViewport(self, viewport: ViewportInfo) -> None

Set the viewport for the hidden line drawing (HLD). The viewport supplies the projection that determines the visibility of curves, and the HLD coordinate system in which the resulting curves are represented. The HLD-coordinate system is a right handed system for 3-D model space, in which the 3rd coordinate direction is the projection direction. In particular the z-coordinate direction points from the scene toward the camera.

Permanent link · Official RhinoCommon reference

HiddenLineDrawingPoint

6 members
HiddenLineDrawingPoint

Points generated from source objects which correspond to point and point cloud source objects.

Permanent link · Official RhinoCommon reference

SourceObject

def SourceObject(self) -> HiddenLineDrawingObject

Return the source object that this point came from.

Permanent link · Official RhinoCommon reference

SourceObjectComponentIndex

def SourceObjectComponentIndex(self) -> ComponentIndex

Component of source object part that generated this curve.

Permanent link · Official RhinoCommon reference

ClippingPlaneIndex

def ClippingPlaneIndex(self) -> int

Index into HiddenLineDrawing.ClippingPlanes when SilhouetteType == SilhouetteType.SectionCut.

Permanent link · Official RhinoCommon reference

Location

def Location(self) -> Point3d

Returns the location of this object in HiddenLineDrawing coordinates.

Permanent link · Official RhinoCommon reference

Index

def Index(self) -> int

Index of this object in HiddenLineDrawing.Points.

Permanent link · Official RhinoCommon reference

PointVisibility

def PointVisibility(self) -> Any

Returns the point's visibility

Permanent link · Official RhinoCommon reference

HiddenLineDrawingSegment

6 members
HiddenLineDrawingSegment

The results of HiddenLineDrawing calculation are a collection of segments. A segment is a sub-curve of a HiddenLineDrawingObjectCurve.

Permanent link · Official RhinoCommon reference

Index

def Index(self) -> int

Index of this curve in HiddenLineDrawing.Curves.

Permanent link · Official RhinoCommon reference

CurveGeometry

def CurveGeometry(self) -> Curve

The actual curve geometry

Permanent link · Official RhinoCommon reference

ParentCurve

def ParentCurve(self) -> HiddenLineDrawingObjectCurve

This curve is a sub-curve of the returned HiddenLineDrawingFullCurve object.

Permanent link · Official RhinoCommon reference

SegmentVisibility

def SegmentVisibility(self) -> Any

Returns the segment's visibility

Permanent link · Official RhinoCommon reference

IsSceneSilhouette

def IsSceneSilhouette(self) -> bool

Returns true if this curve is a scene silhouette.

Permanent link · Official RhinoCommon reference

CurveSideFills

def CurveSideFills(self) -> Sequence[Any]

The SideFill fields are only valid for visible curves. With respect to the HiddenLineDrawing, the region to the left (or right respectively) of this curve is described by CurveSideFills[0] or CurveSideFills[1], respectively. If exactly one of these regions is empty this is a scene silhouette. If this region contains a surface it is either a surface which in 3-D is adjacent to this edge or it an surface that is further away from the camera, we call this a shadow surface. unknown is used for unset values and for projecting curves

Permanent link · Official RhinoCommon reference

InstanceDefinitionGeometry

13 members
InstanceDefinitionGeometry

Represents a block definition in a File3dm. This is the same as Rhino.DocObjects.InstanceDefinition, but not associated with a RhinoDoc.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

Initializes a new block definition.

Permanent link · Official RhinoCommon reference

Description

def Description(self) -> str

Gets or sets the description of the definition.

Permanent link · Official RhinoCommon reference

Url

def Url(self) -> str

Gets or sets the URL or hyperlink of the definition.

Permanent link · Official RhinoCommon reference

UrlDescription

def UrlDescription(self) -> str

Gets or sets the description of the URL or hyperlink of the definition.

Permanent link · Official RhinoCommon reference

SourceArchive

def SourceArchive(self) -> str

Gets the full file path for linked instance definitions.

Permanent link · Official RhinoCommon reference

ComponentType

def ComponentType(self) -> Any

Returns Rhino.DocObjects.ModelComponentType.InstanceDefinition.

Permanent link · Official RhinoCommon reference

UserStringCount

def UserStringCount(self) -> int

Gets the amount of user strings.

Permanent link · Official RhinoCommon reference

DeleteAllUserStrings

def DeleteAllUserStrings(self) -> None

Deletes all user strings attached to this geometry.

Permanent link · Official RhinoCommon reference

DeleteUserString

def DeleteUserString(self, key: str) -> bool

Deletes the user string with the specified key from this geometry.

Permanent link · Official RhinoCommon reference

GetObjectIds

def GetObjectIds(self) -> Sequence[Any]

Returns the unique identifiers of all objects that are part of this instance definition's geometry table.

Permanent link · Official RhinoCommon reference

GetUserString

def GetUserString(self, key: str) -> str

Gets user string from this geometry.

Permanent link · Official RhinoCommon reference

GetUserStrings

def GetUserStrings(self) -> Any

Gets a copy of all (user key string, user value string) pairs attached to this geometry.

Permanent link · Official RhinoCommon reference

SetUserString

def SetUserString(self, key: str, value: str) -> bool

Attach a user string (key,value combination) to this geometry.

Permanent link · Official RhinoCommon reference

InstanceReferenceGeometry

3 members
InstanceReferenceGeometry

Represents a reference to the geometry in a block definition.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, instanceDefinitionId: Any, transform: Transform) -> None

Constructor used when creating nested instance references.

Permanent link · Official RhinoCommon reference

ParentIdefId

def ParentIdefId(self) -> Any

The unique id for the parent instance definition of this instance reference.

Permanent link · Official RhinoCommon reference

Xform

def Xform(self) -> Transform

Transformation for this reference.

Permanent link · Official RhinoCommon reference

Interpolator

7 members
Interpolator

Exposes a set of standard numeric interpolation algorithms.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, amount: int, defaultValue: float) -> None
def __init__(self, collection: Iterable[float]) -> None
def __init__(self, initialCapacity: int) -> None
def __init__(self, list: Any) -> None

Constructs a new, empty Interpolator.

Permanent link · Official RhinoCommon reference

Cyclical

def Cyclical(self) -> bool

Gets or sets a value indicating whether or not the values inside this Interpolator are to be treated as cyclical (i.e. circular).

Permanent link · Official RhinoCommon reference

InterpolateCatmullRom

def InterpolateCatmullRom(self, t: float) -> float

Sample the list of numbers with Catmull-Rom interpolation.

Permanent link · Official RhinoCommon reference

InterpolateCosine

def InterpolateCosine(self, t: float) -> float

Sample the list of numbers with cosine interpolation.

Permanent link · Official RhinoCommon reference

InterpolateCubic

def InterpolateCubic(self, t: float) -> float

Sample the list of numbers with cubic interpolation.

Permanent link · Official RhinoCommon reference

InterpolateLinear

def InterpolateLinear(self, t: float) -> float

Sample the list of numbers with linear interpolation.

Permanent link · Official RhinoCommon reference

InterpolateNearestNeighbour

def InterpolateNearestNeighbour(self, t: float) -> float

Sample the list of numbers with Nearest Neighbor interpolation.

Permanent link · Official RhinoCommon reference

Interval

29 members
Intervalparameters

An interval is an ordered numeric domain. Endpoints can increase, decrease, or coincide; domain length is not geometric arc length.

Preserve endpoint order when it encodes direction. A collapsed interval cannot support a meaningful inverse normalization.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, other: Interval) -> None
def __init__(self, t0: float, t1: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Interval]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

T0

def T0(self) -> float

Gets or sets the lower bound of the Interval.

Permanent link · Official RhinoCommon reference

T1

def T1(self) -> float

Gets or sets the upper bound of the Interval.

Permanent link · Official RhinoCommon reference

Min

def Min(self) -> float

Gets the smaller of T0 and T1.

Permanent link · Official RhinoCommon reference

Max

def Max(self) -> float

Gets the larger of T0 and T1.

Permanent link · Official RhinoCommon reference

Mid

def Mid(self) -> float

Gets the average of T0 and T1.

Permanent link · Official RhinoCommon reference

Length

def Length(self) -> float

Gets the signed length of the numeric range. If the interval is decreasing, a negative length will be returned.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets a value indicating whether or not this Interval is valid. Valid intervals must contain valid numbers.

Permanent link · Official RhinoCommon reference

IsSingleton

def IsSingleton(self) -> bool

Returns true if T0 == T1 != ON.UnsetValue.

Permanent link · Official RhinoCommon reference

IsIncreasing

def IsIncreasing(self) -> bool

Returns true if T0 < T1.

Permanent link · Official RhinoCommon reference

IsDecreasing

def IsDecreasing(self) -> bool

Returns true if T[0] > T[1].

Permanent link · Official RhinoCommon reference

CompareTo

def CompareTo(self, other: Interval) -> int

Compares this Rhino.Geometry.Interval with another interval. The lower bound has first evaluation priority.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Interval, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, other: Interval) -> bool
def Equals(self, obj: Any) -> bool

Determines whether the specified Rhino.Geometry.Interval is equal to the current Rhino.Geometry.Interval, comparing by value.

Permanent link · Official RhinoCommon reference

FromIntersection

def FromIntersection(a: Interval, b: Interval) -> Interval

Returns a new Interval that is the Intersection of the two input Intervals.

Permanent link · Official RhinoCommon reference

FromUnion

def FromUnion(a: Interval, b: Interval) -> Interval

Returns a new Interval which contains both inputs.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Computes the hash code for this Rhino.Geometry.Interval object.

Permanent link · Official RhinoCommon reference

Grow

def Grow(self, value: float) -> None

Grows the Rhino.Geometry.Interval to include the given number.

Permanent link · Official RhinoCommon reference

IncludesInterval

def IncludesInterval(self, interval: Interval) -> bool
def IncludesInterval(self, interval: Interval, strict: bool) -> bool

Tests another interval for Interval inclusion.

Permanent link · Official RhinoCommon reference

IncludesParameter

def IncludesParameter(self, t: float) -> bool
def IncludesParameter(self, t: float, strict: bool) -> bool

Tests a parameter for Interval inclusion.

Permanent link · Official RhinoCommon reference

MakeIncreasing

def MakeIncreasing(self) -> None

Ensures this Rhino.Geometry.Interval is either singleton or increasing.

Permanent link · Official RhinoCommon reference

NormalizedIntervalAt

def NormalizedIntervalAt(self, intervalParameter: Interval) -> Interval

Converts interval value, or pair of values, to normalized parameter.

Permanent link · Official RhinoCommon reference

NormalizedParameterAt

def NormalizedParameterAt(self, intervalParameter: float) -> float

Convert a domain parameter to normalized interval coordinates. A collapsed interval has no meaningful inverse mapping.

This converts a coordinate value; it does not reparameterize the geometry or change a curve's Domain.

Permanent link · Official RhinoCommon reference

ParameterAt

def ParameterAt(self, normalizedParameter: float) -> float

Map a normalized coordinate s to T0 + s*(T1-T0). Values outside [0,1] extrapolate.

For a curve domain, s=0.5 gives its parameter midpoint. This is not generally the halfway point along the curve's arc length.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
domain = rg.Interval(10, 20)
assert domain.ParameterAt(0.25) == 12.5

Permanent link · Official RhinoCommon reference

ParameterIntervalAt

def ParameterIntervalAt(self, normalizedInterval: Interval) -> Interval

Converts normalized parameter to interval value, or pair of values.

Permanent link · Official RhinoCommon reference

Reverse

def Reverse(self) -> None

Reverse negates and exchanges the endpoints. Swap only exchanges them.

Reversing [a,b] produces [-b,-a]. Use Swap when you intend to exchange direction without negating the endpoint coordinates.

Permanent link · Official RhinoCommon reference

Swap

def Swap(self) -> None

Exchanges T0 and T1.

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str

Returns a string representation of this Rhino.Geometry.Interval.

Permanent link · Official RhinoCommon reference

InvalidDimensionStyleIdException

1 members
InvalidDimensionStyleIdException

General exception that can be thrown by annotations

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, msg: str) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsoStatus

0 members
IsoStatus

Defines enumerated values for isoparametric curve direction on a surface, such as X or Y, and curve sides, such as North or West boundary. Note: odd values are all x-constant; even values > 0 are all y-constant.

Permanent link · Official RhinoCommon reference

KnotStyle

0 members
KnotStyle

Knot styles for NURBS curves and surfaces. If a knot vector meets the conditions of two styles, then the style with the lowest value is used.

Permanent link · Official RhinoCommon reference

Leader

16 members
Leader

Leader geometry class

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

Constructor

Permanent link · Official RhinoCommon reference

Curve

def Curve(self) -> NurbsCurve

Gets the curve used by this leader

Permanent link · Official RhinoCommon reference

Points2D

def Points2D(self) -> Sequence[Point2d]

Get or set the 2d points defining the curve used by this leader

Permanent link · Official RhinoCommon reference

Points3D

def Points3D(self) -> Sequence[Point3d]

Get or set the 3d points defining the curve used by this leader

Permanent link · Official RhinoCommon reference

LeaderTextHorizontalAlignment

def LeaderTextHorizontalAlignment(self) -> Any

Gets or sets the horizontal alignment of the leader's text

Permanent link · Official RhinoCommon reference

LeaderTextVerticalAlignment

def LeaderTextVerticalAlignment(self) -> Any

Gets or sets the vertical alignment of the leader's text

Permanent link · Official RhinoCommon reference

LeaderArrowType

def LeaderArrowType(self) -> Any

The arrowhead type for the leader

Permanent link · Official RhinoCommon reference

LeaderArrowBlockId

def LeaderArrowBlockId(self) -> Any

Id of the block used as the arrow for the leader when the arrow type is 'User arrow'

Permanent link · Official RhinoCommon reference

LeaderArrowSize

def LeaderArrowSize(self) -> float

The size of the leader arrow

Permanent link · Official RhinoCommon reference

LeaderCurveStyle

def LeaderCurveStyle(self) -> Any

The style of the leader curve: polyline or spline

Permanent link · Official RhinoCommon reference

LeaderContentAngleStyle

def LeaderContentAngleStyle(self) -> Any

Angle for text of leader text

Permanent link · Official RhinoCommon reference

LeaderHasLanding

def LeaderHasLanding(self) -> bool

Returns true if the leader has a landing line

Permanent link · Official RhinoCommon reference

LeaderLandingLength

def LeaderLandingLength(self) -> float

Gets or sets the length of the landing line

Permanent link · Official RhinoCommon reference

Create

def Create(text: str, plane: Plane, dimstyle: DimensionStyle, points: Iterable[Point3d]) -> Leader

Creates a Leader geometry object

Permanent link · Official RhinoCommon reference

CreateWithRichText

def CreateWithRichText(richText: str, plane: Plane, dimstyle: DimensionStyle, points: Iterable[Point3d]) -> Leader

Creates a Leader geometry object

Permanent link · Official RhinoCommon reference

Explode

def Explode(self) -> Sequence[GeometryBase]

Explodes this leader into its geometric components.

Permanent link · Official RhinoCommon reference

LengthMassProperties

26 members
LengthMassPropertiesmeasurement

Length mass properties weight quantities continuously along a curve.

A length centroid differs from an unweighted average of sampled points, especially when sampling is uneven.

Permanent link · Official RhinoCommon reference

Length

def Length(self) -> float

Gets the length solution.

Permanent link · Official RhinoCommon reference

LengthError

def LengthError(self) -> float

Gets the uncertainty in the length calculation.

Permanent link · Official RhinoCommon reference

Centroid

def Centroid(self) -> Point3d

Gets the length centroid in the world coordinate system.

Permanent link · Official RhinoCommon reference

CentroidError

def CentroidError(self) -> Vector3d

Gets the uncertainty in the centroid calculation.

Permanent link · Official RhinoCommon reference

WorldCoordinatesFirstMoments

def WorldCoordinatesFirstMoments(self) -> Vector3d

Returns the world coordinate first moments if they were able to be calculated. X is integral of "x dm" over the length Y is integral of "y dm" over the length Z is integral of "z dm" over the length.

Permanent link · Official RhinoCommon reference

WorldCoordinatesFirstMomentsError

def WorldCoordinatesFirstMomentsError(self) -> Vector3d

Uncertainty in world coordinates first moments calculation.

Permanent link · Official RhinoCommon reference

WorldCoordinatesSecondMoments

def WorldCoordinatesSecondMoments(self) -> Vector3d

Returns the world coordinate second moments if they were able to be calculated. X is integral of "xx dm" over the length Y is integral of "yy dm" over the length Z is integral of "zz dm" over the length.

Permanent link · Official RhinoCommon reference

WorldCoordinatesSecondMomentsError

def WorldCoordinatesSecondMomentsError(self) -> Vector3d

Uncertainty in world coordinates second moments calculation.

Permanent link · Official RhinoCommon reference

WorldCoordinatesProductMoments

def WorldCoordinatesProductMoments(self) -> Vector3d

Returns the world coordinate product moments if they were able to be calculated. X is integral of "xy dm" over the length Y is integral of "yz dm" over the length Z is integral of "zx dm" over the length.

Permanent link · Official RhinoCommon reference

WorldCoordinatesProductMomentsError

def WorldCoordinatesProductMomentsError(self) -> Vector3d

Uncertainty in world coordinates second moments calculation.

Permanent link · Official RhinoCommon reference

WorldCoordinatesMomentsOfInertia

def WorldCoordinatesMomentsOfInertia(self) -> Vector3d

The moments of inertia about the world coordinate axes. X = integral of (y^2 + z^2) dm Y = integral of (z^2 + x^2) dm Z = integral of (z^2 + y^2) dm.

Permanent link · Official RhinoCommon reference

WorldCoordinatesMomentsOfInertiaError

def WorldCoordinatesMomentsOfInertiaError(self) -> Vector3d

Uncertainty in world coordinates moments of inertia calculation.

Permanent link · Official RhinoCommon reference

WorldCoordinatesRadiiOfGyration

def WorldCoordinatesRadiiOfGyration(self) -> Vector3d

Radii of gyration with respect to world coordinate system. X = sqrt(integral of (y^2 + z^2) dm/M) Y = sqrt(integral of (z^2 + x^2) dm/M) Z = sqrt(integral of (z^2 + y^2) dm/M)

Permanent link · Official RhinoCommon reference

CentroidCoordinatesSecondMoments

def CentroidCoordinatesSecondMoments(self) -> Vector3d

Second moments with respect to centroid coordinate system. X = integral of (x-x0)^2 dm Y = integral of (y-y0)^2 dm Z = integral of (z-z0)^2 dm where (x0,y0,z0) = centroid.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesSecondMomentsError

def CentroidCoordinatesSecondMomentsError(self) -> Vector3d

Uncertainty in centroid coordinates second moments calculation.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesProductMoments

def CentroidCoordinatesProductMoments(self) -> Vector3d

Product moments with respect to centroid coordinate system.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesProductMomentsError

def CentroidCoordinatesProductMomentsError(self) -> Vector3d

Uncertainty in product moments with respect to centroid coordinate system.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesMomentsOfInertia

def CentroidCoordinatesMomentsOfInertia(self) -> Vector3d

Moments of inertia with respect to centroid coordinate system. X = integral of ((y-y0)^2 + (z-z0)^2) dm Y = integral of ((z-z0)^2 + (x-x0)^2) dm Z = integral of ((z-z0)^2 + (y-y0)^2) dm where (x0,y0,z0) = centroid.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesMomentsOfInertiaError

def CentroidCoordinatesMomentsOfInertiaError(self) -> Vector3d

Uncertainty in centroid coordinates moments of inertia calculation.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesRadiiOfGyration

def CentroidCoordinatesRadiiOfGyration(self) -> Vector3d

Radii of gyration with respect to centroid coordinate system. X = sqrt(integral of ((y-y0)^2 + (z-z0)^2) dm/M) Y = sqrt(integral of ((z-z0)^2 + (x-x0)^2) dm/M) Z = sqrt(integral of ((z-z0)^2 + (y-y0)^2) dm/M) where (x0,y0,z0) = centroid.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesPrincipalMoments

def CentroidCoordinatesPrincipalMoments(self) -> tuple[bool, float, Vector3d, float, Vector3d, float, Vector3d]

Calculates the eigenvalues and eigenvectors of the moments matrix with respect to centroid coordinates.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesPrincipalMomentsOfInertia

def CentroidCoordinatesPrincipalMomentsOfInertia(self) -> tuple[bool, float, Vector3d, float, Vector3d, float, Vector3d]

Calculates the principal moments of inertia and principal axes with respect to centroid coordinates.

Permanent link · Official RhinoCommon reference

Compute

def Compute(curve: Curve) -> LengthMassProperties
def Compute(curve: Curve, length: bool, firstMoments: bool, secondMoments: bool, productMoments: bool) -> LengthMassProperties
def Compute(curves: Iterable[Curve]) -> LengthMassProperties
def Compute(curves: Iterable[Curve], length: bool, firstMoments: bool, secondMoments: bool, productMoments: bool) -> LengthMassProperties

Calculates the length mass properties of a curve.

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

WorldCoordinatesPrincipalMoments

def WorldCoordinatesPrincipalMoments(self) -> tuple[bool, float, Vector3d, float, Vector3d, float, Vector3d]

Calculates the eigenvalues and eigenvectors of moments matrix in world coordinates.

Permanent link · Official RhinoCommon reference

WorldCoordinatesPrincipalMomentsOfInertia

def WorldCoordinatesPrincipalMomentsOfInertia(self) -> tuple[bool, float, Vector3d, float, Vector3d, float, Vector3d]

Calculates the principal moments of inertia and principal axes with respect to world coordinates.

Permanent link · Official RhinoCommon reference

Light

35 members
Light

Represents a light that shines in the modeling space.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

Initializes a new light.

Permanent link · Official RhinoCommon reference

IsEnabled

def IsEnabled(self) -> bool

Gets or sets a value that defines if the light is turned on (true) or off (false).

Permanent link · Official RhinoCommon reference

LightStyle

def LightStyle(self) -> LightStyle

Gets or sets a light style on this camera.

Permanent link · Official RhinoCommon reference

IsPointLight

def IsPointLight(self) -> bool

Gets a value indicating whether the light style is Rhino.Geometry.Light.LightStyle CameraPoint or WorldPoint.

Permanent link · Official RhinoCommon reference

IsDirectionalLight

def IsDirectionalLight(self) -> bool

Gets a value indicating whether the light style is Rhino.Geometry.Light.LightStyle CameraDirectional or WorldDirectional.

Permanent link · Official RhinoCommon reference

IsSpotLight

def IsSpotLight(self) -> bool

Gets a value indicating whether the light style is Rhino.Geometry.Light.LightStyle CameraSpot or WorldSpot.

Permanent link · Official RhinoCommon reference

IsLinearLight

def IsLinearLight(self) -> bool

Gets a value indicating whether the light style is Rhino.Geometry.Light.LightStyle WorldLinear.

Permanent link · Official RhinoCommon reference

IsRectangularLight

def IsRectangularLight(self) -> bool

Gets a value indicating whether the light style is Rhino.Geometry.Light.LightStyle WorldRectangular.

Permanent link · Official RhinoCommon reference

IsSunLight

def IsSunLight(self) -> bool

Gets a value indicating whether this object is a Sun light.

Permanent link · Official RhinoCommon reference

CoordinateSystem

def CoordinateSystem(self) -> Any

Gets a value, determined by LightStyle, that explains whether the camera directions are relative to World or Camera spaces.

Permanent link · Official RhinoCommon reference

Location

def Location(self) -> Point3d

Gets or sets the light or 3D position or location.

Permanent link · Official RhinoCommon reference

Direction

def Direction(self) -> Vector3d

Gets or sets the vector direction of the camera.

Permanent link · Official RhinoCommon reference

PerpendicularDirection

def PerpendicularDirection(self) -> Vector3d

Gets a perpendicular vector to the camera direction.

Permanent link · Official RhinoCommon reference

Intensity

def Intensity(self) -> float

Gets or sets the light intensity.

Permanent link · Official RhinoCommon reference

PowerWatts

def PowerWatts(self) -> float

Gets or sets the light power in watts (W).

Permanent link · Official RhinoCommon reference

PowerLumens

def PowerLumens(self) -> float

Gets or sets the light power in lumens (lm).

Permanent link · Official RhinoCommon reference

PowerCandela

def PowerCandela(self) -> float

Gets or sets the light power in candelas (cd).

Permanent link · Official RhinoCommon reference

Ambient

def Ambient(self) -> Any

Gets or sets the ambient color.

Permanent link · Official RhinoCommon reference

Diffuse

def Diffuse(self) -> Any

Gets or sets the diffuse color.

Permanent link · Official RhinoCommon reference

Specular

def Specular(self) -> Any

Gets or sets the specular color.

Permanent link · Official RhinoCommon reference

AttenuationVector

def AttenuationVector(self) -> Vector3d

Gets or Sets the attenuation vector.

Permanent link · Official RhinoCommon reference

SpotAngleRadians

def SpotAngleRadians(self) -> float

Gets or sets the spot angle in radians. Ignored for non-spot lights. angle = 0 to pi/2 (0 to 90 degrees).

Permanent link · Official RhinoCommon reference

SpotExponent

def SpotExponent(self) -> float

The spot exponent varies from 0.0 to 128.0 and provides an exponential interface for controlling the focus or concentration of a spotlight (like the OpenGL GL_SPOT_EXPONENT parameter). The spot exponent and hot spot parameters are linked; changing one will change the other. A hot spot setting of 0.0 corresponds to a spot exponent of 128. A hot spot setting of 1.0 corresponds to a spot exponent of 0.0.

Permanent link · Official RhinoCommon reference

HotSpot

def HotSpot(self) -> float

The hot spot setting runs from 0.0 to 1.0 and is used to provides a linear interface for controlling the focus or concentration of a spotlight. A hot spot setting of 0.0 corresponds to a spot exponent of 128. A hot spot setting of 1.0 corresponds to a spot exponent of 0.0.

Permanent link · Official RhinoCommon reference

Length

def Length(self) -> Vector3d

Gets or sets the height in linear and rectangular lights. (ignored for non-linear/rectangular lights.)

Permanent link · Official RhinoCommon reference

Width

def Width(self) -> Vector3d

Gets or sets the width in linear and rectangular lights. (ignored for non-linear/rectangular lights.)

Permanent link · Official RhinoCommon reference

SpotLightShadowIntensity

def SpotLightShadowIntensity(self) -> float

Gets or sets the spot light shadow intensity. (ignored for non-spot lights.)

Permanent link · Official RhinoCommon reference

ShadowIntensity

def ShadowIntensity(self) -> float

Gets or sets the shadow intensity for the light.

Permanent link · Official RhinoCommon reference

Name

def Name(self) -> str

Gets or sets the light name.

Permanent link · Official RhinoCommon reference

Id

def Id(self) -> Any

Gets the ID of this light.

Permanent link · Official RhinoCommon reference

AttenuationType

def AttenuationType(self) -> Any

Get the type of attenuation for this light.

Permanent link · Official RhinoCommon reference

CreateSunLight

def CreateSunLight(northAngleDegrees: float, azimuthDegrees: float, altitudeDegrees: float) -> Light
def CreateSunLight(northAngleDegrees: float, when: Any, latitudeDegrees: float, longitudeDegrees: float) -> Light
def CreateSunLight(sun: Any) -> Light

Constructs a light that represents the Sun.

Permanent link · Official RhinoCommon reference

GetAttenuation

def GetAttenuation(self, d: float) -> float

Gets the attenuation settings (ignored for "directional" and "ambient" lights). attenuation = 1/(a0 + d*a1 + d^2*a2) where d = distance to light.

Permanent link · Official RhinoCommon reference

GetSpotLightRadii

def GetSpotLightRadii(self) -> tuple[bool, float, float]

Gets the spot light radii.

Permanent link · Official RhinoCommon reference

SetAttenuation

def SetAttenuation(self, a0: float, a1: float, a2: float) -> None

Sets the attenuation settings (ignored for "directional" and "ambient" lights). attenuation = 1/(a0 + d*a1 + d^2*a2) where d = distance to light.

Permanent link · Official RhinoCommon reference

LightStyle

0 members
LightStyle

Defines enumerated values to represent light styles or types, such as directional or spotlight.

Permanent link · Official RhinoCommon reference

Line

34 members
Linecurvesdistanceinteropnurbsparameters

A Line is a finite segment parameterized by From + t*Direction. Its segment corresponds to t in [0,1].

Parameters outside that interval lie on the infinite extension. A LineCurve has its own Curve domain, which need not use the same parameterization.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, from_: Point3d, to: Point3d) -> None
def __init__(self, start: Point3d, direction: Vector3d, length: float) -> None
def __init__(self, start: Point3d, span: Vector3d) -> None
def __init__(self, x0: float, y0: float, z0: float, x1: float, y1: float, z1: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

From

def From(self) -> Point3d

Start point of line segment.

Permanent link · Official RhinoCommon reference

FromX

def FromX(self) -> float

Gets or sets the X coordinate of the line From point.

Permanent link · Official RhinoCommon reference

FromY

def FromY(self) -> float

Gets or sets the Y coordinate of the line From point.

Permanent link · Official RhinoCommon reference

FromZ

def FromZ(self) -> float

Gets or sets the Z coordinate of the line From point.

Permanent link · Official RhinoCommon reference

To

def To(self) -> Point3d

End point of line segment.

Permanent link · Official RhinoCommon reference

ToX

def ToX(self) -> float

Gets or sets the X coordinate of the line To point.

Permanent link · Official RhinoCommon reference

ToY

def ToY(self) -> float

Gets or sets the Y coordinate of the line To point.

Permanent link · Official RhinoCommon reference

ToZ

def ToZ(self) -> float

Gets or sets the Z coordinate of the line To point.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Line]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets a value indicating whether or not this line is valid. Valid lines must have valid start and end points, and the points must not be equal.

Permanent link · Official RhinoCommon reference

Length

def Length(self) -> float

Gets or sets the length of this line segment. Note that a negative length will invert the line segment without making the actual length negative. The line From point will remain fixed when a new Length is set.

Permanent link · Official RhinoCommon reference

Direction

def Direction(self) -> Vector3d

Gets the direction of this line segment. The length of the direction vector equals the length of the line segment.

Permanent link · Official RhinoCommon reference

UnitTangent

def UnitTangent(self) -> Vector3d

Gets the tangent of the line segment. Note that tangent vectors are always unit vectors.

Permanent link · Official RhinoCommon reference

BoundingBox

def BoundingBox(self) -> BoundingBox

Gets the line's 3d axis aligned bounding box.

Permanent link · Official RhinoCommon reference

ClosestParameter

def ClosestParameter(self, testPoint: Point3d) -> float

The parameter is normalized along the segment and can lie outside [0,1].

For a valid nonzero line, PointAt(t) reconstructs the supporting-line projection. Clamp explicitly when the result must remain on the finite segment.

Permanent link · Official RhinoCommon reference

ClosestPoint

def ClosestPoint(self, testPoint: Point3d, limitToFiniteSegment: bool) -> Point3d

limitToFiniteSegment controls whether projection is clamped to the segment endpoints.

Unconstrained projection can lie beyond an endpoint. Choose according to whether your algorithm models a bounded edge or its infinite supporting line.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
line = rg.Line(rg.Point3d(0, 0, 0), rg.Point3d(10, 0, 0))
p = line.ClosestPoint(rg.Point3d(15, 2, 0), True)
assert abs(p.X - 10) < 1e-9

Permanent link · Official RhinoCommon reference

DistanceTo

def DistanceTo(self, testPoint: Point3d, limitToFiniteSegment: bool) -> float

Compute the shortest distance between this line segment and a test point.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Line, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, other: Line) -> bool
def Equals(self, obj: Any) -> bool

Determines whether a line has the same value as this line.

Permanent link · Official RhinoCommon reference

Extend

def Extend(self, startLength: float, endLength: float) -> bool

Extend the line by custom distances on both sides.

Permanent link · Official RhinoCommon reference

ExtendThroughBox

def ExtendThroughBox(self, box: BoundingBox) -> bool
def ExtendThroughBox(self, box: BoundingBox, additionalLength: float) -> bool
def ExtendThroughBox(self, box: Box) -> bool
def ExtendThroughBox(self, box: Box, additionalLength: float) -> bool

Ensure the line extends all the way through a box. Note, this does not result in the shortest possible line that overlaps the box.

Permanent link · Official RhinoCommon reference

Flip

def Flip(self) -> None

Flip the endpoints of the line segment.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Computes a hash number that represents this line.

Permanent link · Official RhinoCommon reference

MaximumDistanceTo

def MaximumDistanceTo(self, testLine: Line) -> float
def MaximumDistanceTo(self, testPoint: Point3d) -> float

Finds the largest distance between this line as a finite segment and another finite segment.

Permanent link · Official RhinoCommon reference

MinimumDistanceTo

def MinimumDistanceTo(self, testLine: Line) -> float
def MinimumDistanceTo(self, testPoint: Point3d) -> float

Finds the shortest distance between this line as a finite segment and another finite segment.

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, t: float) -> Point3d

Evaluates the line at the specified parameter.

Permanent link · Official RhinoCommon reference

PointAtLength

def PointAtLength(self, distance: float) -> Point3d

Computes a point located at a specific metric distance from the line origin (Rhino.Geometry.Line.From). If line start and end coincide, then the start point is always returned.

Permanent link · Official RhinoCommon reference

ToNurbsCurve

def ToNurbsCurve(self) -> NurbsCurve

Conversion preserves the straight shape while changing its representation to NurbsCurve.

Check parameter correspondence before reusing saved values on the converted curve. Identical shape does not imply identical parameterization.

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str
def ToString(self, format: str, formatProvider: Any) -> str

Constructs the string representation of this line, in the form "From,To".

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> bool

Transform the line using a Transformation matrix.

Permanent link · Official RhinoCommon reference

TryCreateBetweenCurves

def TryCreateBetweenCurves(curve0: Curve, curve1: Curve, t0: float, t1: float, perpendicular0: bool, perpendicular1: bool) -> tuple[bool, float, float, Line]

t0 and t1 are ref inputs. Python returns success, their updated values, and the resulting line.

The input parameters are initial guesses. Keep the updated parameters when later geometry must correspond to the solver's endpoints.

Permanent link · Official RhinoCommon reference

TryFitLineToPoints

def TryFitLineToPoints(points: Iterable[Point3d]) -> tuple[bool, Line]

Attempt to fit a line through a set of points.

Permanent link · Official RhinoCommon reference

TryGetPlane

def TryGetPlane(self) -> tuple[bool, Plane]

Gets a plane that contains the line. The origin of the plane is at the start of the line. If possible, a plane parallel to the world XY, YZ, or ZX plane is returned.

Permanent link · Official RhinoCommon reference

LinearDimension

16 members
LinearDimension

Represents a linear dimension

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, dimensionPlane: Plane, extensionLine1End: Point2d, extensionLine2End: Point2d, pointOnDimensionLine: Point2d) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DistanceBetweenArrowTips

def DistanceBetweenArrowTips(self) -> float

Gets the distance between arrow tips.

Permanent link · Official RhinoCommon reference

Aligned

def Aligned(self) -> bool

Gets or sets a value indicating whether this annotation is aligned.

Permanent link · Official RhinoCommon reference

AnnotationType

def AnnotationType(self) -> AnnotationType

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ExtensionLine1End

def ExtensionLine1End(self) -> Point2d

End of the first extension line.

Permanent link · Official RhinoCommon reference

ExtensionLine2End

def ExtensionLine2End(self) -> Point2d

End of the second extension line.

Permanent link · Official RhinoCommon reference

Arrowhead1End

def Arrowhead1End(self) -> Point2d

Gets the arrow head end of the first extension line.

Permanent link · Official RhinoCommon reference

Arrowhead2End

def Arrowhead2End(self) -> Point2d

Gets the arrow head end of the second extension line.

Permanent link · Official RhinoCommon reference

DimensionLinePoint

def DimensionLinePoint(self) -> Point2d

Point on annotation plane where dimension line starts

Permanent link · Official RhinoCommon reference

Create

def Create(dimtype: AnnotationType, dimStyle: DimensionStyle, plane: Plane, horizontal: Vector3d, defpoint1: Point3d, defpoint2: Point3d, dimlinepoint: Point3d, rotationInPlane: float) -> LinearDimension

Initialize Dimension parameters

Permanent link · Official RhinoCommon reference

FromPoints

def FromPoints(extensionLine1End: Point3d, extensionLine2End: Point3d, pointOnDimensionLine: Point3d) -> LinearDimension

Initializes a new instance of the Rhino.Geometry.LinearDimension class, based on three points.

Permanent link · Official RhinoCommon reference

Get3dPoints

def Get3dPoints(self) -> tuple[bool, Point3d, Point3d, Point3d, Point3d, Point3d, Point3d]

Get locations of dimension's 3d points

Permanent link · Official RhinoCommon reference

GetDisplayLines

def GetDisplayLines(self, style: DimensionStyle, scale: float) -> tuple[bool, Sequence[Line]]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

GetDistanceDisplayText

def GetDistanceDisplayText(self, unitsystem: UnitSystem, style: DimensionStyle) -> str

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

GetTextRectangle

def GetTextRectangle(self) -> tuple[bool, Sequence[Point3d]]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SetLocations

def SetLocations(self, extensionLine1End: Point2d, extensionLine2End: Point2d, pointOnDimensionLine: Point2d) -> None

Sets the three locations of the point, using two-dimensional points that refer to the plane of the annotation.

Permanent link · Official RhinoCommon reference

LineCurve

2 members
LineCurvecurves

A LineCurve represents a straight segment through Curve. Its Domain need not be [0,1].

Use the underlying Line for normalized segment coordinates or query the Curve domain. Shape equality does not imply parameter equality.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, from_: Point2d, to: Point2d) -> None
def __init__(self, from_: Point3d, to: Point3d) -> None
def __init__(self, line: Line) -> None
def __init__(self, line: Line, t0: float, t1: float) -> None
def __init__(self, other: LineCurve) -> None

Initializes a new instance of the Rhino.Geometry.LineCurve class.

Permanent link · Official RhinoCommon reference

Line

def Line(self) -> Line

Gets or sets the Line value inside this curve.

Permanent link · Official RhinoCommon reference

LoftType

0 members
LoftType

Specifies enumerated constants for all supported loft types.

Permanent link · Official RhinoCommon reference

MatchSrfSettings

13 members
MatchSrfSettings

Settings for matching a surface edge to other edge(s)

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, match: Continuity, otherEnd: Continuity) -> None

Constructor

Permanent link · Official RhinoCommon reference

Continuity

def Continuity(self) -> Continuity

Match the shape of the edge being edited to the target edge Rhino.Geometry.Continuity.C0_continuous: edge position only Rhino.Geometry.Continuity.G1_continuous: edge position and tangency Rhino.Geometry.Continuity.G2_continuous: edge position, tangency and curvature

Permanent link · Official RhinoCommon reference

OtherEnd

def OtherEnd(self) -> Continuity

Maintain the shape of the edge opposite the one being edited Rhino.Geometry.Continuity.None: opposite edge is free to change Rhino.Geometry.Continuity.C0_continuous: opposite edge position only Rhino.Geometry.Continuity.G1_continuous: opposite edge position and tangency Rhino.Geometry.Continuity.G2_continuous: opposite edge position, tangency and curvature

Permanent link · Official RhinoCommon reference

Average

def Average(self) -> bool

If true, change both surfaces

Permanent link · Official RhinoCommon reference

MatchClosestPoints

def MatchClosestPoints(self) -> bool

Match the edge to the closest points on the target edge

Permanent link · Official RhinoCommon reference

RefineMatch

def RefineMatch(self) -> bool

Add control point rows to the surface if necessary

Permanent link · Official RhinoCommon reference

RefinePositionalTolerance

def RefinePositionalTolerance(self) -> float

Absolute distance tolerance for refinement

Permanent link · Official RhinoCommon reference

RefineAngleToleranceRadians

def RefineAngleToleranceRadians(self) -> float

Angle between surface normals during refinement

Permanent link · Official RhinoCommon reference

RefineCurvatureTolerance

def RefineCurvatureTolerance(self) -> float

Percentage radius of curvature difference during refinement

Permanent link · Official RhinoCommon reference

PreserveIso

def PreserveIso(self) -> PreserveIsoCurveMethod

The way the surface iso-lines align with the target

Permanent link · Official RhinoCommon reference

ReverseMatchDirection

def ReverseMatchDirection(self) -> bool

Reverse the direction of the edge to match.

Permanent link · Official RhinoCommon reference

ReverseAverageTargetDirection

def ReverseAverageTargetDirection(self) -> bool

Reverse the direction of the target for the averaged edge.

Permanent link · Official RhinoCommon reference

EnableRefinement

def EnableRefinement(self, enabled: bool, positionalTolerance: float=..., angleToleranceRadians: float=..., curvatureTolerance: float=...) -> None

Enable refinement of the surface being edited

Permanent link · Official RhinoCommon reference

Matrix

22 members
Matrix

Represents an arbitrarily sized matrix of System.Double-precision floating point numbers. If you are working with a 4x4 matrix, then you may want to use the Rhino.Geometry.Transform class instead.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, rowCount: int, columnCount: int) -> None
def __init__(self, xform: Transform) -> None

Initializes a new instance of the matrix.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets a value indicating whether this matrix is valid.

Permanent link · Official RhinoCommon reference

IsSquare

def IsSquare(self) -> bool

Gets a value indicating whether this matrix has the same number of rows and columns. 0x0 matrices are not considered square.

Permanent link · Official RhinoCommon reference

RowCount

def RowCount(self) -> int

Gets the amount of rows.

Permanent link · Official RhinoCommon reference

ColumnCount

def ColumnCount(self) -> int

Gets the amount of columns.

Permanent link · Official RhinoCommon reference

IsRowOrthogonal

def IsRowOrthogonal(self) -> bool

Gets a value indicating whether the matrix is row orthogonal.

Permanent link · Official RhinoCommon reference

IsColumnOrthogonal

def IsColumnOrthogonal(self) -> bool

Gets a value indicating whether the matrix is column orthogonal.

Permanent link · Official RhinoCommon reference

IsRowOrthoNormal

def IsRowOrthoNormal(self) -> bool

Gets a value indicating whether the matrix is row orthonormal.

Permanent link · Official RhinoCommon reference

IsColumnOrthoNormal

def IsColumnOrthoNormal(self) -> bool

Gets a value indicating whether the matrix is column orthonormal.

Permanent link · Official RhinoCommon reference

BackSolve

def BackSolve(self, zeroTolerance: float, b: Iterable[float]) -> Sequence[float]

Solves M*x=b where M is upper triangular with a unit diagonal and b is a column of values.

Permanent link · Official RhinoCommon reference

BackSolvePoints

def BackSolvePoints(self, zeroTolerance: float, b: Iterable[Point3d]) -> Sequence[Point3d]

Solves M*x=b where M is upper triangular with a unit diagonal and b is a column of 3d points.

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

Duplicate

def Duplicate(self) -> Matrix

Create a duplicate of this matrix.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Gets the hash code for this matrix. The hash code will change when the matrix changes so you cannot change matrices while they are stored in hash tables.

Permanent link · Official RhinoCommon reference

Invert

def Invert(self, zeroTolerance: float) -> bool

Modifies this matrix to become its own inverse. Matrix might be non-invertible (singular) and the return value will be false.

Permanent link · Official RhinoCommon reference

RowReduce

def RowReduce(self, zeroTolerance: float) -> tuple[int, float, float]
def RowReduce(self, zeroTolerance: float, b: Iterable[float]) -> tuple[int, float]
def RowReduce(self, zeroTolerance: float, b: Iterable[Point3d]) -> tuple[int, float]

Row reduces a matrix to calculate rank and determinant.

Permanent link · Official RhinoCommon reference

Scale

def Scale(self, s: float) -> None

Modifies the current matrix by multiplying its values by a number.

Permanent link · Official RhinoCommon reference

SetDiagonal

def SetDiagonal(self, d: float) -> None

Sets diagonal value and zeros off all non-diagonal values.

Permanent link · Official RhinoCommon reference

SwapColumns

def SwapColumns(self, columnA: int, columnB: int) -> bool

Exchanges two columns.

Permanent link · Official RhinoCommon reference

SwapRows

def SwapRows(self, rowA: int, rowB: int) -> bool

Exchanges two rows.

Permanent link · Official RhinoCommon reference

Transpose

def Transpose(self) -> bool

Modifies this matrix to be its transpose. This is like swapping rows with columns. http://en.wikipedia.org/wiki/Transpose

Permanent link · Official RhinoCommon reference

Zero

def Zero(self) -> None

Sets all values inside the matrix to zero.

Permanent link · Official RhinoCommon reference

Mesh

135 members
Meshdistanceinteropmeshestopology

A polygon mesh approximates shape with vertices and faces. Density alone does not ensure quality: topology, normals, degeneracy, and manifoldness also matter.

Interpolated normals can create visual smoothness without geometrically smooth faces. Assess connectivity and task-specific error rather than appearance alone.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

Initializes a new empty mesh.

Permanent link · Official RhinoCommon reference

DisjointMeshCount

def DisjointMeshCount(self) -> int

Gets the number of disjoint (topologically unconnected) pieces in this mesh.

Permanent link · Official RhinoCommon reference

IsClosed

def IsClosed(self) -> bool

A closed mesh has no open boundary according to its connectivity. This alone does not establish a suitable solid.

Check manifoldness, consistent orientation, degeneracies, and self-intersection as needed. Visually coincident vertices may still be disconnected.

Permanent link · Official RhinoCommon reference

IsOriented

def IsOriented(self) -> bool

Returns true if the mesh is manifold and every pair of faces that share an "edge" have compatible orientations.

Permanent link · Official RhinoCommon reference

IsSolid

def IsSolid(self) -> bool

Returns true if the mesh is solid. A "solid" is a closed oriented manifold.

Permanent link · Official RhinoCommon reference

HasCachedTextureCoordinates

def HasCachedTextureCoordinates(self) -> bool

Will return true if SetCachedTextureCoordinates has been called; otherwise will return false.

Permanent link · Official RhinoCommon reference

HasPrincipalCurvatures

def HasPrincipalCurvatures(self) -> bool

HasPrincipalCurvatures

Permanent link · Official RhinoCommon reference

Vertices

def Vertices(self) -> Any

Gets access to the vertices set of this mesh.

Permanent link · Official RhinoCommon reference

TopologyVertices

def TopologyVertices(self) -> Any

Gets the Rhino.Geometry.Collections.MeshTopologyVertexList object associated with this mesh. This object stores vertex connectivity and the indices of vertices that were unified while computing the edge topology.

Permanent link · Official RhinoCommon reference

TopologyEdges

def TopologyEdges(self) -> Any

Gets the Rhino.Geometry.Collections.MeshTopologyEdgeList object associated with this mesh. This object stores edge connectivity.

Permanent link · Official RhinoCommon reference

Normals

def Normals(self) -> Any

Gets access to the vertex normal collection in this mesh.

Permanent link · Official RhinoCommon reference

Faces

def Faces(self) -> Any

Gets access to the mesh face list.

Permanent link · Official RhinoCommon reference

Ngons

def Ngons(self) -> Any

Gets access to the mesh ngon list. Ngons represent groups of Faces (triangles + quads). Faces are used to tessellate an Ngon internally. When a triangle or quad is referenced in the Ngon list, it is no longer visualized and conceived as a single entity, but takes part of the Ngon. If you need to get access to both Ngons and the faces that are not referenced by Ngons, that is, all polygons that are visible in the mesh, then use the Rhino.Geometry.Mesh.GetNgonAndFacesEnumerable helper method.

Permanent link · Official RhinoCommon reference

FaceNormals

def FaceNormals(self) -> Any

Gets access to the face normal collection in this mesh.

Permanent link · Official RhinoCommon reference

VertexColors

def VertexColors(self) -> Any

Gets access to the (optional) vertex color collection in this mesh.

Permanent link · Official RhinoCommon reference

TextureCoordinates

def TextureCoordinates(self) -> Any

Gets access to the vertex texture coordinate collection in this mesh.

Permanent link · Official RhinoCommon reference

ComponentStates

def ComponentStates(self) -> Any

Gets access to the vertex hidden/visibility collection in this mesh. This is a runtime property and it is not saved in the 3dm file.

Permanent link · Official RhinoCommon reference

PartitionCount

def PartitionCount(self) -> int

Number of partition information chunks stored on this mesh based on the last call to CreatePartitions

Permanent link · Official RhinoCommon reference

Append

def Append(self, meshes: Iterable[Mesh]) -> None
def Append(self, other: Mesh) -> None

Append a list of meshes. This function is much more efficient than making repeated calls to Mesh.Append(Mesh) when lots of meshes are being joined into a single large mesh.

Permanent link · Official RhinoCommon reference

Check

def Check(self, textLog: Any, parameters: MeshCheckParameters) -> tuple[bool, MeshCheckParameters]

The parameters argument is a ref input. Python returns the Boolean result and updated MeshCheckParameters.

A report covers specific checks rather than every application requirement. Inspect which conditions were tested and retain diagnostic output.

Permanent link · Official RhinoCommon reference

ClearSurfaceData

def ClearSurfaceData(self) -> None

Removes surface parameters, curvature parameters and surface statistics from the mesh.

Permanent link · Official RhinoCommon reference

ClearTextureData

def ClearTextureData(self) -> None

Removes all texture coordinate information from this mesh.

Permanent link · Official RhinoCommon reference

ClosestMeshPoint

def ClosestMeshPoint(self, testPoint: Point3d, maximumDistance: float) -> MeshPoint

A MeshPoint retains face and local-coordinate correspondence as well as position.

This supports attribute interpolation. Stored face indices can become invalid after topology-changing edits.

Permanent link · Official RhinoCommon reference

ClosestPoint

def ClosestPoint(self, testPoint: Point3d) -> Point3d
def ClosestPoint(self, testPoint: Point3d, maximumDistance: float) -> tuple[int, Point3d, Vector3d] | tuple[int, Point3d]

The closest location lies on the polygonal approximation, not necessarily on the original smooth surface.

Tessellation creates distance and normal errors. Choose density according to accuracy requirements and compare with the source when needed.

Permanent link · Official RhinoCommon reference

CollapseFacesByArea

def CollapseFacesByArea(self, lessThanArea: float, greaterThanArea: float) -> int

Collapses multiple mesh faces, with areas less than LessThanArea and greater than GreaterThanArea, based on the principles found in Stan Melax's mesh reduction PDF, see http://pomax.nihongoresources.com/downloads/PolygonReduction.pdf

Permanent link · Official RhinoCommon reference

CollapseFacesByByAspectRatio

def CollapseFacesByByAspectRatio(self, aspectRatio: float) -> int

Collapses a multiple mesh faces, determined by face aspect ratio, based on criteria found in Stan Melax's polygon reduction, see http://pomax.nihongoresources.com/downloads/PolygonReduction.pdf

Permanent link · Official RhinoCommon reference

CollapseFacesByEdgeLength

def CollapseFacesByEdgeLength(self, bGreaterThan: bool, edgeLength: float) -> int

Collapses multiple mesh faces, with greater/less than edge length, based on the principles found in Stan Melax's mesh reduction PDF, see http://pomax.nihongoresources.com/downloads/PolygonReduction.pdf

Permanent link · Official RhinoCommon reference

ColorAt

def ColorAt(self, faceIndex: int, t0: float, t1: float, t2: float, t3: float) -> Any
def ColorAt(self, meshPoint: MeshPoint) -> Any

Evaluate a mesh normal at a set of barycentric coordinates. Barycentric coordinates must be assigned in accordance with the rules as defined by Rhino.Geometry.MeshPoint.T.

Permanent link · Official RhinoCommon reference

Compact

def Compact(self) -> bool

Removes any unreferenced objects from arrays, re-indexes as needed and shrinks arrays to minimum required size.

Permanent link · Official RhinoCommon reference

ComputeAutoCreaseInformation

def ComputeAutoCreaseInformation(self) -> Sequence[int]

Do not use this method. Length: top.Mesh.Vertices.Count

Permanent link · Official RhinoCommon reference

ComputeCurvatureApproximation

def ComputeCurvatureApproximation(self, type: int) -> tuple[bool, Sequence[float]]

Compute an approximation of the discrete curvatures of the mesh vertices, according to which type of curvature information is requested. This method will not yield meaningful values on nonmanifold vertices, and nan on naked vertices. For now, this method operates solely on the mesh topology (the fully welded mesh), but distribtes the result across all the ordinary vertices. This method is a const and thread-safe method and will leave the m_K array untouched. An integer indicating which curvature is desired. gaussian_curvature = 1, mean_curvature = 2, minimum unsigned radius of curvature = 3, maximum unsigned radius of curvature = 4 Resulting curvature array on success, null on failure. On success, the length of the array is the number of vertices.

Permanent link · Official RhinoCommon reference

ComputeThickness

def ComputeThickness(meshes: Iterable[Mesh], maximumThickness: float) -> Sequence[MeshThicknessMeasurement]
def ComputeThickness(meshes: Iterable[Mesh], maximumThickness: float, cancelToken: Any) -> Sequence[MeshThicknessMeasurement]
def ComputeThickness(meshes: Iterable[Mesh], maximumThickness: float, sharpAngle: float, cancelToken: Any) -> Sequence[MeshThicknessMeasurement]

Compute thickness metrics for this mesh.

Permanent link · Official RhinoCommon reference

CopyFrom

def CopyFrom(self, other: Mesh) -> None

Copies mesh values into this mesh from another mesh.

Permanent link · Official RhinoCommon reference

CreateBooleanDifference

def CreateBooleanDifference(firstSet: Iterable[Mesh], secondSet: Iterable[Mesh]) -> Sequence[Mesh]
def CreateBooleanDifference(firstSet: Iterable[Mesh], secondSet: Iterable[Mesh], options: MeshBooleanOptions) -> tuple[Sequence[Mesh], Any]

Computes the solid difference of two sets of Meshes.

Permanent link · Official RhinoCommon reference

CreateBooleanIntersection

def CreateBooleanIntersection(firstSet: Iterable[Mesh], secondSet: Iterable[Mesh]) -> Sequence[Mesh]
def CreateBooleanIntersection(firstSet: Iterable[Mesh], secondSet: Iterable[Mesh], options: MeshBooleanOptions) -> tuple[Sequence[Mesh], Any]

Computes the solid intersection of two sets of meshes.

Permanent link · Official RhinoCommon reference

CreateBooleanSplit

def CreateBooleanSplit(meshesToSplit: Iterable[Mesh], meshSplitters: Iterable[Mesh]) -> Sequence[Mesh]
def CreateBooleanSplit(meshesToSplit: Iterable[Mesh], meshSplitters: Iterable[Mesh], options: MeshBooleanOptions) -> tuple[Sequence[Mesh], Any]

Splits a set of meshes with another set.

Permanent link · Official RhinoCommon reference

CreateBooleanUnion

def CreateBooleanUnion(meshes: Iterable[Mesh]) -> Sequence[Mesh]
def CreateBooleanUnion(meshes: Iterable[Mesh], options: MeshBooleanOptions) -> tuple[Sequence[Mesh], Any]
def CreateBooleanUnion(meshes: Iterable[Mesh], tolerance: float) -> Sequence[Mesh]

Computes the solid union of a set of meshes. WARNING: Use the overload that takes a tolerance or options.

Permanent link · Official RhinoCommon reference

CreateContourCurves

def CreateContourCurves(meshToContour: Mesh, contourStart: Point3d, contourEnd: Point3d, interval: float) -> Sequence[Curve]
def CreateContourCurves(meshToContour: Mesh, contourStart: Point3d, contourEnd: Point3d, interval: float, tolerance: float) -> Sequence[Curve]
def CreateContourCurves(meshToContour: Mesh, sectionPlane: Plane) -> Sequence[Curve]
def CreateContourCurves(meshToContour: Mesh, sectionPlane: Plane, tolerance: float) -> Sequence[Curve]

(Old call maintained for compatibility.)

Permanent link · Official RhinoCommon reference

CreateConvexHull3D

def CreateConvexHull3D(points: Iterable[Point3d], tolerance: float, angleTolerance: float) -> tuple[Mesh, Sequence[Sequence[int]]]

Attempts to create a 3d convex hull mesh from input points.

Permanent link · Official RhinoCommon reference

CreateExtrusion

def CreateExtrusion(profile: Curve, direction: Vector3d) -> Mesh
def CreateExtrusion(profile: Curve, direction: Vector3d, parameters: MeshingParameters) -> Mesh

Constructs a mesh by extruding a curve along a vector.

Permanent link · Official RhinoCommon reference

CreateFromBox

def CreateFromBox(box: BoundingBox, xCount: int, yCount: int, zCount: int) -> Mesh
def CreateFromBox(box: Box, xCount: int, yCount: int, zCount: int) -> Mesh
def CreateFromBox(corners: Iterable[Point3d], xCount: int, yCount: int, zCount: int) -> Mesh

Constructs new mesh that matches a bounding box.

Permanent link · Official RhinoCommon reference

CreateFromBrep

def CreateFromBrep(brep: Brep) -> Sequence[Mesh]
def CreateFromBrep(brep: Brep, meshingParameters: MeshingParameters) -> Sequence[Mesh]

Meshing approximates Brep faces and can return several meshes.

The output connectivity is a different representation from Brep topology. Join and validate deliberately when one coherent mesh is required.

Permanent link · Official RhinoCommon reference

CreateFromClosedPolyline

def CreateFromClosedPolyline(polyline: Polyline) -> Mesh

Attempts to create a Mesh that is a triangulation of a simple closed polyline that projects onto a plane.

Permanent link · Official RhinoCommon reference

CreateFromCone

def CreateFromCone(cone: Cone, vertical: int, around: int) -> Mesh
def CreateFromCone(cone: Cone, vertical: int, around: int, solid: bool) -> Mesh
def CreateFromCone(cone: Cone, vertical: int, around: int, solid: bool, quadCaps: bool) -> Mesh

Constructs a solid mesh cone.

Permanent link · Official RhinoCommon reference

CreateFromCurveExtrusion

def CreateFromCurveExtrusion(curve: Curve, direction: Vector3d, parameters: MeshingParameters, boundingBox: BoundingBox) -> Mesh

Constructs a mesh from an extruded curve. This method is designed for projecting curves onto a mesh. In most cases, a better to use Rhino.Geometry.Mesh.CreateExtrusion(Rhino.Geometry.Curve,Rhino.Geometry.Vector3d).

Permanent link · Official RhinoCommon reference

CreateFromCurvePipe

def CreateFromCurvePipe(curve: Curve, radius: float, segments: int, accuracy: int, capType: MeshPipeCapStyle, faceted: bool, intervals: Iterable[Interval]=...) -> Mesh

Constructs a new mesh pipe from a curve.

Permanent link · Official RhinoCommon reference

CreateFromCylinder

def CreateFromCylinder(cylinder: Cylinder, vertical: int, around: int) -> Mesh
def CreateFromCylinder(cylinder: Cylinder, vertical: int, around: int, capBottom: bool, capTop: bool) -> Mesh
def CreateFromCylinder(cylinder: Cylinder, vertical: int, around: int, capBottom: bool, capTop: bool, circumscribe: bool, quadCaps: bool) -> Mesh
def CreateFromCylinder(cylinder: Cylinder, vertical: int, around: int, capBottom: bool, capTop: bool, quadCaps: bool) -> Mesh

Constructs a capped mesh cylinder.

Permanent link · Official RhinoCommon reference

CreateFromExtrusion

def CreateFromExtrusion(extrusion: Extrusion, meshingParameters: MeshingParameters) -> Mesh

Constructs a mesh from a brep.

Permanent link · Official RhinoCommon reference

CreateFromFilteredFaceList

def CreateFromFilteredFaceList(original: Mesh, inclusion: Iterable[bool]) -> Mesh

Constructs a sub-mesh, that contains a filtered list of faces.

Permanent link · Official RhinoCommon reference

CreateFromIterativeCleanup

def CreateFromIterativeCleanup(meshes: Iterable[Mesh], tolerance: float) -> Sequence[Mesh]

Repairs meshes with vertices that are too near, using a tolerance value.

Permanent link · Official RhinoCommon reference

CreateFromLines

def CreateFromLines(lines: Iterable[Curve], maxFaceValence: int, tolerance: float) -> Mesh

Creates a mesh by analizing the edge structure. Input lines could be from the extraction of edges from an original mesh.

Permanent link · Official RhinoCommon reference

CreateFromPatchSingleFace

def CreateFromPatchSingleFace(mesh: Mesh, components: Iterable[ComponentIndex]) -> Mesh

Creates a single mesh face from the given input.

Permanent link · Official RhinoCommon reference

CreateFromPlanarBoundary

def CreateFromPlanarBoundary(boundary: Curve, parameters: MeshingParameters) -> Mesh
def CreateFromPlanarBoundary(boundary: Curve, parameters: MeshingParameters, tolerance: float) -> Mesh

Do not use this overload. Use version that takes a tolerance parameter instead.

Permanent link · Official RhinoCommon reference

CreateFromPlane

def CreateFromPlane(plane: Plane, xInterval: Interval, yInterval: Interval, xCount: int, yCount: int) -> Mesh

Constructs a planar mesh grid.

Permanent link · Official RhinoCommon reference

CreateFromSphere

def CreateFromSphere(sphere: Sphere, xCount: int, yCount: int) -> Mesh

Constructs a mesh sphere.

Permanent link · Official RhinoCommon reference

CreateFromSubD

def CreateFromSubD(subd: SubD, displayDensity: int) -> Mesh

Create a mesh from a SubD limit surface

Permanent link · Official RhinoCommon reference

CreateFromSubDControlNet

def CreateFromSubDControlNet(subd: SubD) -> Mesh

Create a mesh from a SubD control net

Permanent link · Official RhinoCommon reference

CreateFromSubDControlNetWithTextureCoordinates

def CreateFromSubDControlNetWithTextureCoordinates(subd: SubD) -> Mesh

Create a mesh from a SubD control net including texture coordinates

Permanent link · Official RhinoCommon reference

CreateFromSurface

def CreateFromSurface(surface: Surface) -> Mesh
def CreateFromSurface(surface: Surface, meshingParameters: MeshingParameters) -> Mesh

Constructs a mesh from a surface

Permanent link · Official RhinoCommon reference

CreateFromSurfaceControlNet

def CreateFromSurfaceControlNet(surface: Surface) -> Mesh

Calculate a mesh representation of a surface's control net.

Permanent link · Official RhinoCommon reference

CreateFromTessellation

def CreateFromTessellation(points: Iterable[Point3d], edges: Iterable[Iterable[Point3d]], plane: Plane, allowNewVertices: bool) -> Mesh

Attempts to create a mesh that is a triangulation of a list of points, projected on a plane, including its holes and fixed edges.

Permanent link · Official RhinoCommon reference

CreateFromTorus

def CreateFromTorus(torus: Torus, vertical: int, around: int) -> Mesh

Constructs a mesh torus.

Permanent link · Official RhinoCommon reference

CreateIcoSphere

def CreateIcoSphere(sphere: Sphere, subdivisions: int) -> Mesh

Constructs a icospherical mesh. A mesh icosphere differs from a standard UV mesh sphere in that it's vertices are evenly distributed. A mesh icosphere starts from an icosahedron (a regular polyhedron with 20 equilateral triangles). It is then refined by splitting each triangle into 4 smaller triangles. This splitting can be done several times.

Permanent link · Official RhinoCommon reference

CreatePartitions

def CreatePartitions(self, maximumVertexCount: int, maximumTriangleCount: int) -> bool

In ancient times (or modern smart phone times), some rendering engines were only able to process small batches of triangles and the CreatePartitions() function was provided to partition the mesh into subsets of vertices and faces that those rendering engines could handle.

Permanent link · Official RhinoCommon reference

CreatePatch

def CreatePatch(outerBoundary: Polyline, angleToleranceRadians: float, pullbackSurface: Surface, innerBoundaryCurves: Iterable[Curve], innerBothSideCurves: Iterable[Curve], innerPoints: Iterable[Point3d], trimback: bool, divisions: int) -> Mesh

Construct a mesh patch from a variety of input geometry.

Permanent link · Official RhinoCommon reference

CreateQuadSphere

def CreateQuadSphere(sphere: Sphere, subdivisions: int) -> Mesh

Constructs a quad mesh sphere. A quad mesh sphere differs from a standard UV mesh sphere in that it's vertices are evenly distributed. A quad mesh sphere starts from a cube (a regular polyhedron with 6 square sides). It is then refined by splitting each quad into 4 smaller quads. This splitting can be done several times.

Permanent link · Official RhinoCommon reference

CreateRefinedCatmullClarkMesh

def CreateRefinedCatmullClarkMesh(mesh: Mesh, settings: Any=...) -> Mesh

Instantiates a new mesh that represents a Catmull-Clark subdivision of the mesh.

Permanent link · Official RhinoCommon reference

CreateRefinedLoopMesh

def CreateRefinedLoopMesh(mesh: Mesh, formula: Any=..., settings: Any=...) -> Mesh

Instantiates a new mesh that represents a Loop subdivision of the mesh.

Permanent link · Official RhinoCommon reference

CreateUnweldedMesh

def CreateUnweldedMesh(mesh: Mesh) -> Mesh

Creates a new unwelded mesh from an existing mesh. Texture coordinates are ignored.

Permanent link · Official RhinoCommon reference

CreateVertexColorsFromBitmap

def CreateVertexColorsFromBitmap(self, doc: RhinoDoc, mapping: Any, xform: Transform, bitmap: Any) -> bool

Populate the vertex colors from a bitmap image.

Permanent link · Official RhinoCommon reference

DestroyPartition

def DestroyPartition(self) -> None

Destroys mesh partition.

Permanent link · Official RhinoCommon reference

DestroyTopology

def DestroyTopology(self) -> None

Removes topology data, forcing all topology information to be recomputed.

Permanent link · Official RhinoCommon reference

DestroyTree

def DestroyTree(self) -> None

Destroys the mesh vertex access tree.

Permanent link · Official RhinoCommon reference

Duplicate

def Duplicate(self) -> GeometryBase

Constructs a copy of this mesh. This is the same as Rhino.Geometry.Mesh.DuplicateMesh.

Permanent link · Official RhinoCommon reference

DuplicateMesh

def DuplicateMesh(self) -> Mesh

Constructs a copy of this mesh. This is the same as Rhino.Geometry.Mesh.Duplicate.

Permanent link · Official RhinoCommon reference

EvaluateMeshGeometry

def EvaluateMeshGeometry(self, surface: Surface) -> bool

If the mesh has SurfaceParameters, the surface is evaluated at these parameters and the mesh geometry is updated.

Permanent link · Official RhinoCommon reference

ExplodeAtUnweldedEdges

def ExplodeAtUnweldedEdges(self) -> Sequence[Mesh]

Explode the mesh into sub-meshes where a sub-mesh is a collection of faces that are contained within a closed loop of "unwelded" edges. Unwelded edges are edges where the faces that share the edge have unique mesh vertices (not mesh topology vertices) at both ends of the edge.

Permanent link · Official RhinoCommon reference

ExtendSelectionByEdgeRidge

def ExtendSelectionByEdgeRidge(self, preselectedEdges: Iterable[int], newEdge: int, iterative: bool=...) -> Sequence[int]

Suggests an extension of a selection set by using information related with topology and alignment.

Permanent link · Official RhinoCommon reference

ExtendSelectionByFaceLoop

def ExtendSelectionByFaceLoop(self, preselectedFaces: Iterable[int], newFace: int, iterative: bool=...) -> Sequence[int]

Suggests an extension of a face selection set by using information related with topology and alignment.

Permanent link · Official RhinoCommon reference

ExtractNonManifoldEdges

def ExtractNonManifoldEdges(self, selective: bool) -> Mesh

Extracts, or removes, non-manifold mesh edges.

Permanent link · Official RhinoCommon reference

FileHole

def FileHole(self, topologyEdgeIndex: int) -> bool

Given a starting "naked" edge index, this function attempts to determine a "hole" by chaining additional naked edges together until if returns to the start index. Then it triangulates the closed polygon and either adds the faces to the mesh.

Permanent link · Official RhinoCommon reference

FillHoles

def FillHoles(self) -> bool

Attempts to determine "holes" in the mesh by chaining naked edges together. Then it triangulates the closed polygons adds the faces to the mesh.

Permanent link · Official RhinoCommon reference

Flip

def Flip(self, vertexNormals: bool, faceNormals: bool, faceOrientation: bool) -> None
def Flip(self, vertexNormals: bool, faceNormals: bool, faceOrientation: bool, ngonsBoundaryDirection: bool) -> None

Reverses the direction of the mesh.

Permanent link · Official RhinoCommon reference

GetCachedTextureCoordinates

def GetCachedTextureCoordinates(self, textureMappingId: Any) -> Any
def GetCachedTextureCoordinates(self, rhinoObject: Any, texture: Any) -> Any

Call this method to get cached texture coordinates for a texture mapping with the specified Id.

Permanent link · Official RhinoCommon reference

GetNakedEdgePointStatus

def GetNakedEdgePointStatus(self) -> Sequence[bool]

Returns an array of Boolean values equal in length to the number of vertices in this mesh. Each value corresponds to a mesh vertex and is set to true if the vertex is not completely surrounded by faces.

Permanent link · Official RhinoCommon reference

GetNakedEdges

def GetNakedEdges(self) -> Sequence[Polyline]

Returns all edges of a mesh that are considered "naked" in the sense that the edge only has one face.

Permanent link · Official RhinoCommon reference

GetNgonAndFacesCount

def GetNgonAndFacesCount(self) -> int

Retrieves the count of items that Rhino.Geometry.Mesh.GetNgonAndFacesEnumerable will provide.

Permanent link · Official RhinoCommon reference

GetNgonAndFacesEnumerable

def GetNgonAndFacesEnumerable(self) -> Sequence[MeshNgon]

Retrieves a complete enumerable, i.e., one that provides an iterator over every face that is present, no matter if defined as a triangle, a quad, or a strictly over-four-sided ngon.

Permanent link · Official RhinoCommon reference

GetOutlines

def GetOutlines(self, plane: Plane) -> Sequence[Polyline]
def GetOutlines(self, viewport: RhinoViewport) -> Sequence[Polyline]
def GetOutlines(self, viewportInfo: ViewportInfo, plane: Plane) -> Sequence[Polyline]

Constructs the outlines of a mesh projected against a plane.

Permanent link · Official RhinoCommon reference

GetPartition

def GetPartition(self, which: int) -> MeshPart

Retrieves a partition. See Rhino.Geometry.Mesh.CreatePartitions(System.Int32,System.Int32) for details.

Permanent link · Official RhinoCommon reference

GetSelfIntersections

def GetSelfIntersections(self, tolerance: float, overlapsPolylines: bool, overlapsMesh: bool, textLog: Any, cancel: Any, progress: Any) -> tuple[bool, Sequence[Polyline], Sequence[Polyline], Mesh]

Gets the intersections of this mesh with itself.

Permanent link · Official RhinoCommon reference

GetUnsafeLock

def GetUnsafeLock(self, writable: bool) -> MeshUnsafeLock

Allows to obtain unsafe pointers to the underlying unmanaged data structures of the mesh.

Permanent link · Official RhinoCommon reference

HealNakedEdges

def HealNakedEdges(self, distance: float) -> bool

Attempts to "heal" naked edges in a mesh based on a given distance. First attempts to move vertices to neighboring vertices that are within that distance away. Then it finds edges that have a closest point to the vertex within the distance and splits the edge. When it finds one it splits the edge and makes two new edges using that point.

Permanent link · Official RhinoCommon reference

InvalidateCachedTextureCoordinates

def InvalidateCachedTextureCoordinates(self, bOnlyInvalidateCachedSurfaceParameterMapping: bool=...) -> None

Invalidates all cached texture coordinates. Call this function when you have made changes that will affect the texture coordinates on the mesh.

Permanent link · Official RhinoCommon reference

IsManifold

def IsManifold(self) -> bool
def IsManifold(self, topologicalTest: bool) -> tuple[bool, bool, bool]

Returns true if every mesh "edge" has at most two faces.

Permanent link · Official RhinoCommon reference

IsPointInside

def IsPointInside(self, point: Point3d, tolerance: float, strictlyIn: bool) -> bool

Determines if a point is inside a solid mesh.

Permanent link · Official RhinoCommon reference

MatchEdges

def MatchEdges(self, distance: float, rachet: bool) -> bool

Moves face edges of an open mesh to meet adjacent face edges. The method will first try to match vertices, and then it will try to split edges to make the edges match.

Permanent link · Official RhinoCommon reference

MergeAllCoplanarFaces

def MergeAllCoplanarFaces(self, tolerance: float) -> bool
def MergeAllCoplanarFaces(self, tolerance: float, angleTolerance: float) -> bool

Merges adjacent coplanar faces into single faces.

Permanent link · Official RhinoCommon reference

NormalAt

def NormalAt(self, faceIndex: int, t0: float, t1: float, t2: float, t3: float) -> Vector3d
def NormalAt(self, meshPoint: MeshPoint) -> Vector3d

Evaluate a mesh normal at a set of barycentric coordinates. Barycentric coordinates must be assigned in accordance with the rules as defined by MeshPoint.T.

Permanent link · Official RhinoCommon reference

Offset

def Offset(self, distance: float) -> Mesh
def Offset(self, distance: float, solidify: bool) -> Mesh
def Offset(self, distance: float, solidify: bool, direction: Vector3d) -> Mesh | tuple[Mesh, Sequence[int]]

Makes a new mesh with vertices offset a distance in the opposite direction of the existing vertex normals. Same as Mesh.Offset(distance, false)

Permanent link · Official RhinoCommon reference

PartitionMesh

def PartitionMesh(mesh: Mesh, maxVertexCount: int, maxFaceCount: int) -> Sequence[Mesh]

Some file formats and rendering engines are only able to process small batches of triangles. Use this function to partition the mesh into subsets of vertices and faces that those file formats and rendering engines can handle.

Permanent link · Official RhinoCommon reference

PatchSingleFace

def PatchSingleFace(self, components: Iterable[ComponentIndex]) -> bool

Creates a single mesh face from the given input. The new mesh will be apppended to this mesh.

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, faceIndex: int, t0: float, t1: float, t2: float, t3: float) -> Point3d
def PointAt(self, meshPoint: MeshPoint) -> Point3d

Evaluates a mesh at a set of barycentric coordinates. Barycentric coordinates must be assigned in accordance with the rules as defined by MeshPoint.T.

Permanent link · Official RhinoCommon reference

PullCurve

def PullCurve(self, curve: Curve, tolerance: float) -> PolylineCurve

Gets a polyline approximation of the input curve and then moves its control points to the closest point on the mesh. Then it "connects the points" over edges so that a polyline on the mesh is formed.

Permanent link · Official RhinoCommon reference

PullPointsToMesh

def PullPointsToMesh(self, points: Iterable[Point3d]) -> Sequence[Point3d]

Pulls a collection of points to a mesh.

Permanent link · Official RhinoCommon reference

QuadRemesh

def QuadRemesh(self, parameters: QuadRemeshParameters) -> Mesh
def QuadRemesh(self, parameters: QuadRemeshParameters, guideCurves: Iterable[Curve]) -> Mesh

Quad remesh this mesh.

Permanent link · Official RhinoCommon reference

QuadRemeshAsync

def QuadRemeshAsync(self, faceBlocks: Iterable[int], parameters: QuadRemeshParameters, guideCurves: Iterable[Curve], progress: Any, cancelToken: Any) -> Any
def QuadRemeshAsync(self, parameters: QuadRemeshParameters, guideCurves: Iterable[Curve], progress: Any, cancelToken: Any) -> Any
def QuadRemeshAsync(self, parameters: QuadRemeshParameters, progress: Any, cancelToken: Any) -> Any

Quad remesh this mesh asynchronously.

Permanent link · Official RhinoCommon reference

QuadRemeshBrep

def QuadRemeshBrep(brep: Brep, parameters: QuadRemeshParameters) -> Mesh
def QuadRemeshBrep(brep: Brep, parameters: QuadRemeshParameters, guideCurves: Iterable[Curve]) -> Mesh

Create QuadRemesh from a Brep Set Brep Face Mode by setting QuadRemeshParameters.PreserveMeshArrayEdgesMode

Permanent link · Official RhinoCommon reference

QuadRemeshBrepAsync

def QuadRemeshBrepAsync(brep: Brep, parameters: QuadRemeshParameters, guideCurves: Iterable[Curve], progress: Any, cancelToken: Any) -> Any
def QuadRemeshBrepAsync(brep: Brep, parameters: QuadRemeshParameters, progress: Any, cancelToken: Any) -> Any

Quad remesh this Brep asynchronously.

Permanent link · Official RhinoCommon reference

RebuildMesh

def RebuildMesh(mesh: Mesh) -> Mesh
def RebuildMesh(mesh: Mesh, preserveTextureCoordinates: bool, preserveVertexColors: bool) -> Mesh

Use this function to rebuild meshes that are not acting properly. Vertices and faces are kept. Face normals and vertex normals are recalculated. Texture coordinates, vertex colors, surface curvatures, and surfaces parameters are not replaced.

Permanent link · Official RhinoCommon reference

RebuildNormals

def RebuildNormals(self) -> None

Removes mesh normals and reconstructs the face and vertex normals based on the orientation of the faces.

Permanent link · Official RhinoCommon reference

Reduce

def Reduce(self, desiredPolygonCount: int, allowDistortion: bool, accuracy: int, normalizeSize: bool) -> bool
def Reduce(self, desiredPolygonCount: int, allowDistortion: bool, accuracy: int, normalizeSize: bool, threaded: bool) -> bool
def Reduce(self, parameters: ReduceMeshParameters) -> bool
def Reduce(self, parameters: ReduceMeshParameters, threaded: bool) -> bool
def Reduce(self, desiredPolygonCount: int, allowDistortion: bool, accuracy: int, normalizeSize: bool, cancelToken: Any, progress: Any) -> tuple[bool, str]
def Reduce(self, desiredPolygonCount: int, allowDistortion: bool, accuracy: int, normalizeSize: bool, cancelToken: Any, progress: Any, threaded: bool) -> tuple[bool, str]

Reduction trades face count for approximation. Important features and topology can be lost.

Measure deviation and inspect small holes or sharp edges. Lower face count alone does not establish a useful result.

Permanent link · Official RhinoCommon reference

ReleaseUnsafeLock

def ReleaseUnsafeLock(self, meshData: MeshUnsafeLock) -> None

Updates the Mesh data with the information that was stored via the Rhino.Geometry.MeshUnsafeLock.

Permanent link · Official RhinoCommon reference

RequireIterativeCleanup

def RequireIterativeCleanup(meshes: Iterable[Mesh], tolerance: float) -> bool

Analyzes some meshes, and determines if a pass of CreateFromIterativeCleanup would change the array. All available cleanup steps are used. Currently available cleanup steps are: - mending of single precision coincidence even though double precision vertices differ. - union of nearly identical vertices, irrespectively of their origin. - removal of t-joints along edges.

Permanent link · Official RhinoCommon reference

SetCachedTextureCoordinates

def SetCachedTextureCoordinates(self, tm: Any, xf: Transform) -> Transform

Set cached texture coordinates using the specified mapping.

Permanent link · Official RhinoCommon reference

SetCachedTextureCoordinatesFromMaterial

def SetCachedTextureCoordinatesFromMaterial(self, rhinoObject: Any, material: Any) -> None

Sets up cached texture coordinate set for each texture in the material. Textures in the Material define which mapping channels are used and the RhinoObject defines what texture mapping is used for each mapping channel. After this method is called all necessary texture coordinate sets are cached and correct texture coordinates for each texture can be fetched using GetCachedTextureCoordinates(RhinoObject rhinoObject, Rhino.DocObjects.Texture texture) If any texture coordinates are already cached they will not be re-computed.

Permanent link · Official RhinoCommon reference

SetSurfaceParametersFromTextureCoordinates

def SetSurfaceParametersFromTextureCoordinates(self) -> bool

If the mesh does not have surface evaluation parameters, has texture coordinates, and the surface parameters can be set in a way so the existing texture coordinates can be computed from the surface parameters, then this function sets the surface parameters. This is useful when meshes that have texture coordinates and do not have surface parameters want to set the surface parameters in a way so that the texture mapping of type TextureMappingType.SurfaceParameters will restore the texture coordinates.

Permanent link · Official RhinoCommon reference

SetTextureCoordinates

def SetTextureCoordinates(self, tm: Any, xf: Transform, lazy: bool) -> None
def SetTextureCoordinates(self, tm: Any, xf: Transform, lazy: bool, seamCheck: bool) -> None

Set texture coordinates using given mapping and applying given transform. Set lazy to false to generate texture coordinates right away.

Permanent link · Official RhinoCommon reference

ShrinkWrap

Mesh.ShrinkWrap(geometryBases: Iterable[GeometryBase], parameters: ShrinkWrapParameters, meshingParameters: MeshingParameters) -> Mesh
Mesh.ShrinkWrap(meshes: Iterable[Mesh], parameters: ShrinkWrapParameters) -> Mesh
Mesh.ShrinkWrap(pointCloud: PointCloud, parameters: ShrinkWrapParameters) -> Mesh
Mesh.ShrinkWrap(geometryBases: Iterable[GeometryBase], parameters: ShrinkWrapParameters, meshingParameters: MeshingParameters, token: Any) -> Mesh
Mesh.ShrinkWrap(meshes: Iterable[Mesh], parameters: ShrinkWrapParameters, token: Any) -> Mesh
Mesh.ShrinkWrap(pointCloud: PointCloud, parameters: ShrinkWrapParameters, token: Any) -> Mesh
<instance>.ShrinkWrap(geometryBases: Iterable[GeometryBase], parameters: ShrinkWrapParameters, meshingParameters: MeshingParameters) -> Mesh
<instance>.ShrinkWrap(meshes: Iterable[Mesh], parameters: ShrinkWrapParameters) -> Mesh
<instance>.ShrinkWrap(pointCloud: PointCloud, parameters: ShrinkWrapParameters) -> Mesh
<instance>.ShrinkWrap(parameters: ShrinkWrapParameters) -> Mesh
<instance>.ShrinkWrap(geometryBases: Iterable[GeometryBase], parameters: ShrinkWrapParameters, meshingParameters: MeshingParameters, token: Any) -> Mesh
<instance>.ShrinkWrap(meshes: Iterable[Mesh], parameters: ShrinkWrapParameters, token: Any) -> Mesh
<instance>.ShrinkWrap(pointCloud: PointCloud, parameters: ShrinkWrapParameters, token: Any) -> Mesh
<instance>.ShrinkWrap(parameters: ShrinkWrapParameters, token: Any) -> Mesh

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Smooth

def Smooth(self, smoothFactor: float, bXSmooth: bool, bYSmooth: bool, bZSmooth: bool, bFixBoundaries: bool, coordinateSystem: SmoothingCoordinateSystem) -> bool
def Smooth(self, smoothFactor: float, bXSmooth: bool, bYSmooth: bool, bZSmooth: bool, bFixBoundaries: bool, coordinateSystem: SmoothingCoordinateSystem, plane: Plane) -> bool
def Smooth(self, smoothFactor: float, numSteps: int, bXSmooth: bool, bYSmooth: bool, bZSmooth: bool, bFixBoundaries: bool, coordinateSystem: SmoothingCoordinateSystem, plane: Plane) -> bool
def Smooth(self, vertexIndices: Iterable[int], smoothFactor: float, bXSmooth: bool, bYSmooth: bool, bZSmooth: bool, bFixBoundaries: bool, coordinateSystem: SmoothingCoordinateSystem, plane: Plane) -> bool
def Smooth(self, vertexIndices: Iterable[int], smoothFactor: float, numSteps: int, bXSmooth: bool, bYSmooth: bool, bZSmooth: bool, bFixBoundaries: bool, coordinateSystem: SmoothingCoordinateSystem, plane: Plane) -> bool

Smooths a mesh by averaging the positions of mesh vertices in a specified region.

Permanent link · Official RhinoCommon reference

SolidOrientation

def SolidOrientation(self) -> int

Determines orientation of a "solid" mesh.

Permanent link · Official RhinoCommon reference

Split

def Split(self, mesh: Mesh) -> Sequence[Mesh]
def Split(self, meshes: Iterable[Mesh]) -> Sequence[Mesh]
def Split(self, plane: Plane) -> Sequence[Mesh]
def Split(self, meshes: Iterable[Mesh], tolerance: float, splitAtCoplanar: bool, createNgons: bool, textLog: Any, cancel: Any, progress: Any) -> Sequence[Mesh]
def Split(self, meshes: Iterable[Mesh], tolerance: float, splitAtCoplanar: bool, textLog: Any, cancel: Any, progress: Any) -> Sequence[Mesh]

Split a mesh with another mesh. Suggestion: upgrade to overload with tolerance.

Permanent link · Official RhinoCommon reference

SplitDisjointPieces

def SplitDisjointPieces(self) -> Sequence[Mesh]

Splits up the mesh into its unconnected pieces.

Permanent link · Official RhinoCommon reference

SplitMesh

def SplitMesh(mesh: Mesh, maxCount: int, countSum: bool, countTriangles: bool) -> Sequence[Mesh]

Some file formats and rendering engines are only able to process small batches of triangles. Use this function to split the mesh into subsets of vertices and faces that those file formats and rendering engines can handle.

Permanent link · Official RhinoCommon reference

SplitWithProjectedPolylines

def SplitWithProjectedPolylines(self, curves: Iterable[PolylineCurve], tolerance: float) -> Sequence[Mesh]
def SplitWithProjectedPolylines(self, curves: Iterable[PolylineCurve], tolerance: float, textLog: Any, cancel: Any, progress: Any) -> Sequence[Mesh]

Splits a mesh by adding edges in correspondence with input polylines, and divides the mesh at partitioned areas. Polyline segments that are measured not to be on the mesh will be ignored.

Permanent link · Official RhinoCommon reference

Subdivide

def Subdivide(self) -> bool
def Subdivide(self, faceIndices: Iterable[int]) -> bool

Subdivides the faces of the mesh.

Permanent link · Official RhinoCommon reference

UnifyNormals

def UnifyNormals(self) -> int
def UnifyNormals(self, countOnly: bool) -> int

Unifying normals seeks consistent face orientation. It does not alone choose outward orientation.

Use a solid-orientation check afterward. Disconnected components can need separate decisions about their outward sides.

Permanent link · Official RhinoCommon reference

Unweld

def Unweld(self, angleToleranceRadians: float, modifyNormals: bool) -> None

Makes sure that faces sharing an edge and having a difference of normal greater than or equal to angleToleranceRadians have unique vertices along that edge, adding vertices if necessary.

Permanent link · Official RhinoCommon reference

UnweldEdge

def UnweldEdge(self, edgeIndices: Iterable[int], modifyNormals: bool) -> bool

Adds creases to a smooth mesh by creating coincident vertices along selected edges.

Permanent link · Official RhinoCommon reference

UnweldVertices

def UnweldVertices(self, topologyVertexIndices: Iterable[int], modifyNormals: bool) -> bool

Ensures that faces sharing a common topological vertex have unique indices into the Rhino.Geometry.Collections.MeshVertexList collection.

Permanent link · Official RhinoCommon reference

Volume

def Volume(self) -> float

Compute volume of the mesh.

Permanent link · Official RhinoCommon reference

Weld

def Weld(self, angleToleranceRadians: float) -> None

Welding changes connectivity and normals around shared positions using an angular criterion.

It can affect sharp-edge shading. A smooth appearance does not prove that gaps or nonmanifold conditions were repaired.

Permanent link · Official RhinoCommon reference

WithDisplacement

def WithDisplacement(self, displacement: MeshDisplacementInfo) -> Mesh

Constructs new mesh from the current one, with displacement applied to it.

Permanent link · Official RhinoCommon reference

WithEdgeSoftening

def WithEdgeSoftening(self, softeningRadius: float, chamfer: bool, faceted: bool, force: bool, angleThreshold: float) -> Mesh

Constructs new mesh from the current one, with edge softening applied to it.

Permanent link · Official RhinoCommon reference

WithShutLining

def WithShutLining(self, faceted: bool, tolerance: float, curves: Iterable[ShutLiningCurveInfo]) -> Mesh

Constructs new mesh from the current one, with shut lining applied to it.

Permanent link · Official RhinoCommon reference

MeshBooleanOptions

5 members
MeshBooleanOptions

Contains a set of data to pass to boolean options.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Tolerance

def Tolerance(self) -> float

Gets or sets a tolerance value for intersections and overlaps. Rhino.Geometry.Intersect.Intersection.MeshIntersectionsTolerancesCoefficient

Permanent link · Official RhinoCommon reference

TextLog

def TextLog(self) -> Any

Gets or sets a text log to write computed operations into.

Permanent link · Official RhinoCommon reference

CancellationToken

def CancellationToken(self) -> Any

A token that allows to request the cancellation of the operation.

Permanent link · Official RhinoCommon reference

ProgressReporter

def ProgressReporter(self) -> Any

Gets or sets the object that is responsible to keep track of calculation progression.

Permanent link · Official RhinoCommon reference

MeshCheckParameters

26 members
MeshCheckParameters

Output of a mesh checking operations.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

CheckForDegenerateFaces

def CheckForDegenerateFaces(self) -> bool

If true, then look for triangles and quads that have zero area and quads where one sub triangle has zero area.

Permanent link · Official RhinoCommon reference

DegenerateFaceCount

def DegenerateFaceCount(self) -> int

Gets the total degenerate face count for all meshes.

Permanent link · Official RhinoCommon reference

CheckForInvalidNgons

def CheckForInvalidNgons(self) -> bool

If true, then look for ngons that have invalid information.

Permanent link · Official RhinoCommon reference

InvalidNgonCount

def InvalidNgonCount(self) -> int

Gets the total number of invalid ngons for all meshes.

Permanent link · Official RhinoCommon reference

CheckForNakedEdges

def CheckForNakedEdges(self) -> bool

If true, then look for topological edges in the mesh topology where the face count is 1. Note, this check is also made if CheckForDuplicateFaces is true but the output is not shown if CheckForNakedEdges is false.

Permanent link · Official RhinoCommon reference

NakedEdgeCount

def NakedEdgeCount(self) -> int

Gets the total number of naked edges for all meshes.

Permanent link · Official RhinoCommon reference

CheckForNonManifoldEdges

def CheckForNonManifoldEdges(self) -> bool

If true, then look for topological edges in the mesh topology where the face count is greater than 2. Note, this check is also made if CheckForDuplicateFaces is true but the output is not shown if CheckForNonManifoldEdges is false.

Permanent link · Official RhinoCommon reference

NonManifoldEdgeCount

def NonManifoldEdgeCount(self) -> int

Gets the total number of non-manifold edges for all meshes.

Permanent link · Official RhinoCommon reference

CheckForExtremelyShortEdges

def CheckForExtremelyShortEdges(self) -> bool

If true, then look for topological edges where the distance between the endpoints is less than ExtremelyShortEdgeDistance.

Permanent link · Official RhinoCommon reference

ExtremelyShortEdgeCount

def ExtremelyShortEdgeCount(self) -> int

Gets the total number of extremely short edges for all meshes.

Permanent link · Official RhinoCommon reference

CheckForBadNormals

def CheckForBadNormals(self) -> bool

If true, then look for vertex normals that are not unit vectors, are zero length or vary greatly from the general direction of the face normals.

Permanent link · Official RhinoCommon reference

NonUnitVectorNormalCount

def NonUnitVectorNormalCount(self) -> int

Get the total count of normals that are not unit vectors for all meshes.

Permanent link · Official RhinoCommon reference

ZeroLengthNormalCount

def ZeroLengthNormalCount(self) -> int

Gets the total count of zero length normals for all meshes.

Permanent link · Official RhinoCommon reference

VertexFaceNormalsDifferCount

def VertexFaceNormalsDifferCount(self) -> int

Gets the total count of vertex normals that differ greatly from face normals for all meshes.

Permanent link · Official RhinoCommon reference

CheckForDuplicateFaces

def CheckForDuplicateFaces(self) -> bool

If true, then look for faces that have vertices (not necessarily vertex indexes) that are identical.

Permanent link · Official RhinoCommon reference

DuplicateFaceCount

def DuplicateFaceCount(self) -> int

Gets the total count of duplicate faces for all meshes.

Permanent link · Official RhinoCommon reference

CheckForRandomFaceNormals

def CheckForRandomFaceNormals(self) -> bool

If true, then look for adjacent faces that have the same edge orientation. This typically means that clockwise/counterclockwise orientation, and face normal are not in sync.

Permanent link · Official RhinoCommon reference

RandomFaceNormalCount

def RandomFaceNormalCount(self) -> int

Gets the total count of random face normals for all meshes.

Permanent link · Official RhinoCommon reference

CheckForDisjointMeshes

def CheckForDisjointMeshes(self) -> bool

If true, then look for faces in the mesh that are totally isolated from other faces in the mesh. (i.e. an island of faces, or many islands, that have a boundary of naked edges)

Permanent link · Official RhinoCommon reference

DisjointMeshCount

def DisjointMeshCount(self) -> int

Gets the total count of disjoint pieces for all meshes.

Permanent link · Official RhinoCommon reference

CheckForUnusedVertices

def CheckForUnusedVertices(self) -> bool

If true, then look for vertices that are not referenced by any face in the mesh.

Permanent link · Official RhinoCommon reference

UnusedVertexCount

def UnusedVertexCount(self) -> int

Gets the total count of unused vertices for all meshes.

Permanent link · Official RhinoCommon reference

CheckForSelfIntersection

def CheckForSelfIntersection(self) -> bool

If true, then look for self intersections.

Permanent link · Official RhinoCommon reference

SelfIntersectingPairsCount

def SelfIntersectingPairsCount(self) -> int

Gets the total count of self intersections for all meshes.

Permanent link · Official RhinoCommon reference

Defaults

def Defaults() -> MeshCheckParameters

Gets the default mesh check parameters.

Permanent link · Official RhinoCommon reference

MeshDisplacementInfo

17 members
MeshDisplacementInfo

Contains mesh displacement information.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, texture: Any, mapping: Any) -> None

Constructs a displacement information instance with default values. Users of this class should not rely on default values to stay constant across service releases.

Permanent link · Official RhinoCommon reference

Texture

def Texture(self) -> Any

The texture used as displacement.

Permanent link · Official RhinoCommon reference

Black

def Black(self) -> float

Value considered lowest point in the displacement.

Permanent link · Official RhinoCommon reference

White

def White(self) -> float

Value considered highest point of the displacement texture.

Permanent link · Official RhinoCommon reference

Mapping

def Mapping(self) -> Any

The texture mapping of the mesh.

Permanent link · Official RhinoCommon reference

MappingTransform

def MappingTransform(self) -> Transform

Texture mapping transform.

Permanent link · Official RhinoCommon reference

InstanceTransform

def InstanceTransform(self) -> Transform

Instance transformation of the mesh.

Permanent link · Official RhinoCommon reference

BlackMove

def BlackMove(self) -> float

The amount of displacement for the black color in the texture.

Permanent link · Official RhinoCommon reference

PostWeldAngle

def PostWeldAngle(self) -> float

Specifies the maximum angle between face normals of adjacent faces that will get welded together.

Permanent link · Official RhinoCommon reference

RefineSensitivity

def RefineSensitivity(self) -> float

Specifies how sensitive the divider for contrasts is on the displacement texture. Specify 1 to split all mesh edges on each refine step. Specify 0.99 to make even slight contrasts on the displacement texture cause edges to be split. Specifying 0.01 only splits edges where heavy contrast exists.

Permanent link · Official RhinoCommon reference

SweepPitch

def SweepPitch(self) -> float

Specifies how densely the object is initially subdivided. The lower the value, the higher the resolution of the displaced mesh.

Permanent link · Official RhinoCommon reference

WhiteMove

def WhiteMove(self) -> float

The amount of displacement for the white color in the texture.

Permanent link · Official RhinoCommon reference

ChannelNumber

def ChannelNumber(self) -> int

Mapping channel number for the displacement mapping.

Permanent link · Official RhinoCommon reference

FaceLimit

def FaceLimit(self) -> int

Runs a mesh reduction as a post process o simplify the result of displacement to meet the specified number of faces.

Permanent link · Official RhinoCommon reference

FairingAmount

def FairingAmount(self) -> int

Straightens rough feature edges. The value specifies the number of passes.

Permanent link · Official RhinoCommon reference

RefineStepCount

def RefineStepCount(self) -> int

Specifies the number of refinement passes.

Permanent link · Official RhinoCommon reference

MemoryLimit

def MemoryLimit(self) -> int

Specifies how much memory can be allocated for use by the displacement mesh. Value in megabytes.

Permanent link · Official RhinoCommon reference

MeshExtruder

12 members
MeshExtruder

Extrudes a mesh and provides preview

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, inputMesh: Mesh, componentIndices: Iterable[ComponentIndex]) -> None

Construct object to extrude given mesh faces, edges and ngons.

Permanent link · Official RhinoCommon reference

PreviewLines

def PreviewLines(self) -> Sequence[Line]

Gets Line objects to preview extruded mesh.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self) -> Transform

Transform of extrusion

Permanent link · Official RhinoCommon reference

UVN

def UVN(self) -> bool

Whether or not to perform extrude in UVN basis.

Permanent link · Official RhinoCommon reference

EdgeBasedUVN

def EdgeBasedUVN(self) -> bool

Edge based UVN defines UVN directions according to boundary edge directions

Permanent link · Official RhinoCommon reference

KeepOriginalFaces

def KeepOriginalFaces(self) -> bool

Whether or not to keep original faces.

Permanent link · Official RhinoCommon reference

TextureCoordinateMode

def TextureCoordinateMode(self) -> MeshExtruderParameterMode

Mode for creating texture coordinates for extruded areas

Permanent link · Official RhinoCommon reference

SurfaceParameterMode

def SurfaceParameterMode(self) -> MeshExtruderParameterMode

Mode for creating surface parameters for extruded areas

Permanent link · Official RhinoCommon reference

FaceDirectionMode

def FaceDirectionMode(self) -> MeshExtruderFaceDirectionMode

Face direction mode determines how faces are oriented

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Dispose of this object and any unmanaged memory associated with it.

Permanent link · Official RhinoCommon reference

ExtrudedMesh

def ExtrudedMesh(self) -> tuple[bool, Mesh, Sequence[ComponentIndex]] | tuple[bool, Mesh]

Creates new extruded mesh. Returns true if any edges or faces were extruded.

Permanent link · Official RhinoCommon reference

GetWallFaces

def GetWallFaces(self) -> Sequence[int]

Return list of faces that were added to connect transformed edges/faces to non-transformed edges/faces.

Permanent link · Official RhinoCommon reference

MeshExtruderFaceDirectionMode

0 members
MeshExtruderFaceDirectionMode

Defines how mesh extruder decides orients faces

Permanent link · Official RhinoCommon reference

MeshExtruderParameterMode

0 members
MeshExtruderParameterMode

Parameter mode for creating texture coordinates and surface parameters

Permanent link · Official RhinoCommon reference

MeshFace

18 members
MeshFacemeshes

A face stores vertex indices. Triangles and quads have different index relationships.

Indices belong to the owning mesh and can change after edits. A nonplanar quad's triangulation affects interpolation and measurements.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, a: int, b: int, c: int) -> None
def __init__(self, a: int, b: int, c: int, d: int) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[MeshFace]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

A

def A(self) -> int

Gets or sets the first corner index of the mesh face.

Permanent link · Official RhinoCommon reference

B

def B(self) -> int

Gets or sets the second corner index of the mesh face.

Permanent link · Official RhinoCommon reference

C

def C(self) -> int

Gets or sets the third corner index of the mesh face.

Permanent link · Official RhinoCommon reference

D

def D(self) -> int

Gets or sets the fourth corner index of the mesh face. If D equals C, the mesh face is considered to be a triangle rather than a quad.

Permanent link · Official RhinoCommon reference

IsTriangle

def IsTriangle(self) -> bool

Gets a value indicating whether or not this mesh face is a triangle. A mesh face is considered to be a triangle when C equals D, thus it is possible for an Invalid mesh face to also be a triangle.

Permanent link · Official RhinoCommon reference

IsQuad

def IsQuad(self) -> bool

Gets a value indicating whether or not this mesh face is a quad. A mesh face is considered to be a triangle when C does not equal D, thus it is possible for an Invalid mesh face to also be a quad.

Permanent link · Official RhinoCommon reference

CompareTo

def CompareTo(self, other: MeshFace) -> int

Compares this Rhino.Geometry.MeshFace with another Rhino.Geometry.MeshFace and returns a value of 1, 0, or -1, referring to dictionary order. Index evaluation priority is first A, then B, then C, then D.

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, other: MeshFace) -> bool
def Equals(self, obj: Any) -> bool

Returns a value indicating whether the other mesh face has precisely the same value as the current one.

Permanent link · Official RhinoCommon reference

Flip

def Flip(self) -> MeshFace

Reverses the orientation of the face by swapping corners. The first corner is always maintained.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Returns a runtime-stable hash code for the current mesh face. You are not allowed to rely on persistence of this hash code in serialization, but for each version of RhinoCommon, this hash code will be the same for each mesh face.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool
def IsValid(self, points: Iterable[Point3d]) -> bool
def IsValid(self, vertexCount: int) -> bool

Gets a value indicating whether or not this mesh face is considered to be valid. Note that even valid mesh faces could potentially be invalid in the context of a specific Mesh, if one or more of the corner indices exceeds the number of vertices on the mesh. If you want to perform a complete validity check, use IsValid(int) instead.

Permanent link · Official RhinoCommon reference

IsValidEx

def IsValidEx(self, points: Iterable[Point3d]) -> tuple[bool, Sequence[Point3d]]

Gets a value indicating whether or not this mesh face is considered to be valid. Unlike the simple IsValid function, this function takes actual point locations into account.

Permanent link · Official RhinoCommon reference

Repair

def Repair(self, points: Iterable[Point3d]) -> bool

Attempts to repair this mesh face by taking both face indexes and actual vertex locations into account.

Permanent link · Official RhinoCommon reference

RepairEx

def RepairEx(self, points: Iterable[Point3d]) -> tuple[bool, Sequence[Point3d]]

Attempts to repair this mesh face by taking both face indexes and actual vertex locations into account.

Permanent link · Official RhinoCommon reference

Set

def Set(self, a: int, b: int, c: int) -> None
def Set(self, a: int, b: int, c: int, d: int) -> None

Sets all the corners for this face as a triangle.

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str

Returns a string representation for this Rhino.Geometry.MeshFace. This is to provide a meaningful visualization of this structure and is subject to change in newer releases.

Permanent link · Official RhinoCommon reference

MeshingParameters

37 members
MeshingParameterssampling

Meshing limits interact: edge length, angle, and geometric deviation address different approximation errors.

A density value alone is not an accuracy guarantee. Choose model-unit limits according to display, analysis, or fabrication needs.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, density: float) -> None
def __init__(self, density: float, minimumEdgeLength: float) -> None
def __init__(self, source: MeshingParameters) -> None
def __init__(self, info: Any, context: Any) -> None

Initializes a new instance with default values. Initial values are same as Rhino.Geometry.MeshingParameters.Default.

Permanent link · Official RhinoCommon reference

Minimal

Minimal: ClassVar[MeshingParameters]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Default

Default: ClassVar[MeshingParameters]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Coarse

Coarse: ClassVar[MeshingParameters]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

FastRenderMesh

FastRenderMesh: ClassVar[MeshingParameters]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Smooth

Smooth: ClassVar[MeshingParameters]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

QualityRenderMesh

QualityRenderMesh: ClassVar[MeshingParameters]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DefaultAnalysisMesh

DefaultAnalysisMesh: ClassVar[MeshingParameters]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

TextureRange

def TextureRange(self) -> MeshingParameterTextureRange

Gets or sets how and if textures will be packed.

Permanent link · Official RhinoCommon reference

JaggedSeams

def JaggedSeams(self) -> bool

Gets or sets whether or not the mesh is allowed to have jagged seams. When this flag is set to true, meshes on either side of a Brep Edge will not match up.

Permanent link · Official RhinoCommon reference

RefineGrid

def RefineGrid(self) -> bool

Gets or sets a value indicating whether or not the sampling grid can be refined when certain tolerances are not met.

Permanent link · Official RhinoCommon reference

DoublePrecision

def DoublePrecision(self) -> bool

Gets or sets a value indicating whether or not the mesh should have double precision vertices in addition to the floats.

Permanent link · Official RhinoCommon reference

SimplePlanes

def SimplePlanes(self) -> bool

Gets or sets a value indicating whether or not planar areas are allowed to be meshed in a simplified manner.

Permanent link · Official RhinoCommon reference

ComputeCurvature

def ComputeCurvature(self) -> bool

Gets or sets a value indicating whether or not surface curvature data will be embedded in the mesh.

Permanent link · Official RhinoCommon reference

ClosedObjectPostProcess

def ClosedObjectPostProcess(self) -> bool

Gets or sets a value indicating whether or not to post process non-closed meshes that should be closed. If the Brep being meshed is closed, JaggedSeams = false, and ClosedObjectPostProcess = true, and the resulting mesh is not closed, then a post meshing process is applied to find and close gaps in the mesh. Typically the resulting mesh is not closed because the input Brep has a geometric flaw, like loops in trimming curve.

Permanent link · Official RhinoCommon reference

GridMinCount

def GridMinCount(self) -> int

Gets or sets the minimum number of grid quads in the initial sampling grid.

Permanent link · Official RhinoCommon reference

GridMaxCount

def GridMaxCount(self) -> int

Gets or sets the maximum number of grid quads in the initial sampling grid.

Permanent link · Official RhinoCommon reference

GridAngle

def GridAngle(self) -> float

Gets or sets the maximum allowed angle difference (in radians) for a single sampling quad. The angle pertains to the surface normals.

Permanent link · Official RhinoCommon reference

GridAspectRatio

def GridAspectRatio(self) -> float

Gets or sets the maximum allowed aspect ratio of sampling quads.

Permanent link · Official RhinoCommon reference

GridAmplification

def GridAmplification(self) -> float

Gets or sets the grid amplification factor. Values lower than 1.0 will decrease the number of initial quads, values higher than 1.0 will increase the number of initial quads.

Permanent link · Official RhinoCommon reference

Tolerance

def Tolerance(self) -> float

Gets or sets the maximum allowed edge deviation. This tolerance is measured between the center of the mesh edge and the surface.

Permanent link · Official RhinoCommon reference

MinimumTolerance

def MinimumTolerance(self) -> float

Gets or sets the minimum tolerance.

Permanent link · Official RhinoCommon reference

RelativeTolerance

def RelativeTolerance(self) -> float

Gets or sets the relative tolerance.

Permanent link · Official RhinoCommon reference

MinimumEdgeLength

def MinimumEdgeLength(self) -> float

Gets or sets the minimum allowed mesh edge length.

Permanent link · Official RhinoCommon reference

MaximumEdgeLength

def MaximumEdgeLength(self) -> float

Gets or sets the maximum allowed mesh edge length.

Permanent link · Official RhinoCommon reference

RefineAngle

def RefineAngle(self) -> float

Gets or sets the mesh parameter refine angle in radians.

Permanent link · Official RhinoCommon reference

RefineAngleInDegrees

def RefineAngleInDegrees(self) -> float

Gets or sets the mesh parameter refine angle in degrees.

Permanent link · Official RhinoCommon reference

CopyFrom

def CopyFrom(self, source: MeshingParameters) -> None

Call this method to copy MeshingParameters from another instance.

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

DocumentCurrentSetting

def DocumentCurrentSetting(doc: RhinoDoc) -> MeshingParameters

Gets the MeshingParameters that are currently set for a document. These are the same settings that are shown in the DocumentProperties "mesh settings" user interface.

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, other: MeshingParameters) -> bool
def Equals(self, obj: Any) -> bool

Determines whether the specified MeshingParameters has the same values as the present MeshingParameters.

Permanent link · Official RhinoCommon reference

FromEncodedString

def FromEncodedString(value: str) -> MeshingParameters

Converts encoded serialized string into a MeshingParameters

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Computes a hash number that represents the current MeshingParameters.

Permanent link · Official RhinoCommon reference

GetObjectData

def GetObjectData(self, info: Any, context: Any) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SetSubDDisplayParameters

def SetSubDDisplayParameters(self, subDDisplayParameters: SubDDisplayParameters) -> None

Sets the SubD display parameters.

Permanent link · Official RhinoCommon reference

SubDDisplayParameters

def SubDDisplayParameters(self) -> SubDDisplayParameters

Gets the SubD display parameters.

Permanent link · Official RhinoCommon reference

ToEncodedString

def ToEncodedString(self) -> str

Returns a encoded string that represents the MeshingParameters.

Permanent link · Official RhinoCommon reference

MeshingParameterStyle

0 members
MeshingParameterStyle

Type of Mesh Parameters used by the RhinoDoc for meshing objects

Permanent link · Official RhinoCommon reference

MeshingParameterTextureRange

0 members
MeshingParameterTextureRange

Defines how to pack render/meshes textures.

Permanent link · Official RhinoCommon reference

MeshNgon

11 members
MeshNgonmeshes

An ngon groups underlying faces under a polygonal boundary; it does not remove those faces.

Use face membership for calculations. Ngon count is not a replacement for the underlying computational triangle count.

Permanent link · Official RhinoCommon reference

Empty

Empty: ClassVar[MeshNgon]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

BoundaryVertexCount

def BoundaryVertexCount(self) -> int

Get the number of vertices in this ngon. Rhino.Geometry.MeshNgon about length information.

Permanent link · Official RhinoCommon reference

FaceCount

def FaceCount(self) -> int

Get the number of faces in this ngon.

Permanent link · Official RhinoCommon reference

BoundaryVertexIndexList

def BoundaryVertexIndexList(self) -> Sequence[int]

Get the outer boundary mesh vertex list of the ngon. Vertices are sorted counterclockwise with respect to the direction of the face, although the degree by which vertex normals will respect this might vary.

Permanent link · Official RhinoCommon reference

CompareTo

def CompareTo(self, otherNgon: MeshNgon) -> int

Compares this Rhino.Geometry.MeshNgon with otherNgon and returns a value of 1, 0, or -1. Priority is for vertex count, then face count, then vertex index list values, then face index list values.

Permanent link · Official RhinoCommon reference

Create

def Create(meshVertexIndexList: Iterable[int], meshFaceIndexList: Iterable[int]) -> MeshNgon

Constructs an ngon from lists of mesh vertex and face indexes.

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, otherNgon: MeshNgon) -> bool
def Equals(self, otherObj: Any) -> bool

Determines if this ngon and otherNgon are identical.

Permanent link · Official RhinoCommon reference

FaceIndexList

def FaceIndexList(self) -> Sequence[int]

Get the ngon's mesh face index list.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Returns a runtime-stable hash code for the current mesh ngon. You are not allowed to rely on persistence of this hash code in serialization, but for each instance of the application, this hash code will be the same for ngons with identical vertex and face lists.

Permanent link · Official RhinoCommon reference

Set

def Set(self, meshVertexIndexList: Iterable[int], meshFaceIndexList: Iterable[int]) -> None

Set the ngon vertex and face index lists.

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str

Returns a string representation for this Rhino.Geometry.MeshNgon. This is to provide a meaningful visualization of this structure and is subject to change in newer releases.

Permanent link · Official RhinoCommon reference

MeshPart

6 members
MeshPart

Represents a portion of a mesh for partitioning

Permanent link · Official RhinoCommon reference

StartVertexIndex

def StartVertexIndex(self) -> int

Start of subinterval of parent mesh vertex array

Permanent link · Official RhinoCommon reference

EndVertexIndex

def EndVertexIndex(self) -> int

End of subinterval of parent mesh vertex array

Permanent link · Official RhinoCommon reference

StartFaceIndex

def StartFaceIndex(self) -> int

Start of subinterval of parent mesh face array

Permanent link · Official RhinoCommon reference

EndFaceIndex

def EndFaceIndex(self) -> int

End of subinterval of parent mesh face array

Permanent link · Official RhinoCommon reference

VertexCount

def VertexCount(self) -> int

EndVertexIndex - StartVertexIndex

Permanent link · Official RhinoCommon reference

TriangleCount

def TriangleCount(self) -> int

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

MeshPipeCapStyle

0 members
MeshPipeCapStyle

Enumerates methods to end a mesh pipe.

Permanent link · Official RhinoCommon reference

MeshPoint

9 members
MeshPointmeshes

A mesh point describes a location relative to a mesh face and its interpolation coordinates.

Keep the mesh unchanged while reusing stored indices and weights. Topology changes can invalidate correspondence.

Permanent link · Official RhinoCommon reference

Mesh

def Mesh(self) -> Mesh

The mesh that is related to this point.

Permanent link · Official RhinoCommon reference

EdgeParameter

def EdgeParameter(self) -> float

Edge parameter when found.

Permanent link · Official RhinoCommon reference

ComponentIndex

def ComponentIndex(self) -> ComponentIndex

Gets the component index of the intersecting element in the mesh.

Permanent link · Official RhinoCommon reference

EdgeIndex

def EdgeIndex(self) -> int

When set, EdgeIndex is an index of an edge in the mesh's edge list.

Permanent link · Official RhinoCommon reference

FaceIndex

def FaceIndex(self) -> int

FaceIndex is an index of a face in mesh.Faces. When ComponentIndex refers to a vertex, any face that uses the vertex may appear as FaceIndex. When ComponenctIndex refers to an Edge or EdgeIndex is set, then any face that uses that edge may appear as FaceIndex.

Permanent link · Official RhinoCommon reference

Triangle

def Triangle(self) -> str

Face triangle where the intersection takes place: 0 is unset A is 0,1,2 B is 0,2,3 C is 0,1,3 D is 1,2,3

Permanent link · Official RhinoCommon reference

T

def T(self) -> Sequence[float]

Barycentric quad coordinates for the point on the mesh face mesh.Faces[FaceIndex]. If the face is a triangle disregard T[3] (it should be set to 0.0). If the face is a quad and is split between vertices 0 and 2, then T[3] will be 0.0 when point is on the triangle defined by vi[0], vi[1], vi[2], and T[1] will be 0.0 when point is on the triangle defined by vi[0], vi[2], vi[3]. If the face is a quad and is split between vertices 1 and 3, then T[2] will be 0.0 when point is on the triangle defined by vi[0], vi[1], vi[3], and m_t[0] will be 0.0 when point is on the triangle defined by vi[1], vi[2], vi[3].

Permanent link · Official RhinoCommon reference

Point

def Point(self) -> Point3d

Gets the location (position) of this point.

Permanent link · Official RhinoCommon reference

GetTriangle

def GetTriangle(self) -> tuple[bool, int, int, int]

Gets the mesh face indices of the triangle where the intersection is on the face takes into consideration the way the quad was split during the intersection.

Permanent link · Official RhinoCommon reference

MeshThicknessMeasurement

6 members
MeshThicknessMeasurement

Thickness measurement used in the mesh thickness solver.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, meshIndex: int, vertexIndex: int, thickness: float, point: Point3d, oppositePoint: Point3d) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

MeshIndex

def MeshIndex(self) -> int

Gets the index of the mesh associated with this thickness measurement.

Permanent link · Official RhinoCommon reference

VertexIndex

def VertexIndex(self) -> int

Gets the index of the vertex associated with this thickness measurement.

Permanent link · Official RhinoCommon reference

Thickness

def Thickness(self) -> float

Gets the local thickness of the mesh.

Permanent link · Official RhinoCommon reference

Point

def Point(self) -> Point3d

Gets the location of the thickness measurement.

Permanent link · Official RhinoCommon reference

OppositePoint

def OppositePoint(self) -> Point3d

Gets the point opposite to the measurement point.

Permanent link · Official RhinoCommon reference

MeshType

0 members
MeshType

Defines enumerated values for various mesh types.

Permanent link · Official RhinoCommon reference

MeshUnsafeLock

7 members
MeshUnsafeLock

Permits access to the underlying mesh raw data structures in an unsafe way.

Permanent link · Official RhinoCommon reference

FaceNormalsArray

def FaceNormalsArray(self) -> tuple[Any, int]

Retrieves a pointer to the raw mesh face normals array, which uses vectors defined with single precision floating point numbers, or throws an exception if none is available.

Permanent link · Official RhinoCommon reference

FacesArray

def FacesArray(self) -> tuple[Any, int]

Retrieves a pointer to the raw faces array, which uses 4 integers for each face. Rhino.Geometry.MeshFace.

Permanent link · Official RhinoCommon reference

NormalVector3fArray

def NormalVector3fArray(self) -> tuple[Any, int]

Retrieves a pointer to the raw mesh vertex normal array, which uses vectors defined with single precision floating point numbers, or throws an exception if none is available.

Permanent link · Official RhinoCommon reference

Release

def Release(self) -> None

Releases the lock and updates the underlying unmanaged data structures.

Permanent link · Official RhinoCommon reference

VertexColorsArray

def VertexColorsArray(self) -> tuple[Any, int]

Retrieves a pointer to the raw mesh vertex colors array, which uses RGBA integers or throws an exception if none is available.

Permanent link · Official RhinoCommon reference

VertexPoint3dArray

def VertexPoint3dArray(self) -> tuple[Any, int]

Retrieves a pointer to the raw mesh vertex array, which uses coordinates defined with double precision floating point numbers, or throws an exception if none is available.

Permanent link · Official RhinoCommon reference

VertexPoint3fArray

def VertexPoint3fArray(self) -> tuple[Any, int]

Retrieves a pointer to the raw mesh vertex array, which uses coordinates defined with single precision floating point numbers, or null if none is available.

Permanent link · Official RhinoCommon reference

MeshUnwrapMethod

0 members
MeshUnwrapMethod

Unwrapping method used

Permanent link · Official RhinoCommon reference

MeshUnwrapper

3 members
MeshUnwrapper

Unwraps meshes and stores the result in their texture coordinates

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, mesh: Mesh) -> None
def __init__(self, meshes: Iterable[Mesh]) -> None

Creates a mesh unwrapper for a single mesh

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Dispose of this object and any unmanaged memory associated with it.

Permanent link · Official RhinoCommon reference

Unwrap

def Unwrap(self, method: MeshUnwrapMethod) -> bool

Unwraps the meshes passed in as constructor arguments and stores the results in texture coordinates.

Permanent link · Official RhinoCommon reference

MorphControl

7 members
MorphControl

Represents a geometry that is able to control the morphing behavior of some other geometry.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, originCurve: NurbsCurve, targetCurve: NurbsCurve) -> None

Constructs a MorphControl that allows for morphing between two curves.

Permanent link · Official RhinoCommon reference

SpaceMorphTolerance

def SpaceMorphTolerance(self) -> float

The 3d fitting tolerance used when morphing surfaces and breps. The default is 0.0 and any value <= 0.0 is ignored by morphing functions. The value returned by Tolerance does not affect the way meshes and points are morphed.

Permanent link · Official RhinoCommon reference

QuickPreview

def QuickPreview(self) -> bool

true if the morph should be done as quickly as possible because the result is being used for some type of dynamic preview. If QuickPreview is true, the tolerance may be ignored. The QuickPreview value does not affect the way meshes and points are morphed. The default is false.

Permanent link · Official RhinoCommon reference

PreserveStructure

def PreserveStructure(self) -> bool

true if the morph should be done in a way that preserves the structure of the geometry. In particular, for NURBS objects, true means that only the control points are moved. The PreserveStructure value does not affect the way meshes and points are morphed. The default is false.

Permanent link · Official RhinoCommon reference

Curve

def Curve(self) -> NurbsCurve

Returns the morph control's curve. While this should never be null, the calling function should check.

Permanent link · Official RhinoCommon reference

Surface

def Surface(self) -> NurbsSurface

Returns the morph control's surface. While this should never be null, the calling function should check.

Permanent link · Official RhinoCommon reference

Morph

def Morph(self, geometry: GeometryBase) -> bool

Applies the space morph to geometry.

Permanent link · Official RhinoCommon reference

NurbsCurve

38 members
NurbsCurvenurbs

A NURBS curve combines control points, weights, degree, and knots. Control points generally do not lie on the curve. Degree and knot multiplicity affect smoothness.

Basis functions over knot spans determine shape. Moving a control point and constraining an evaluated point are different geometric operations.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, degree: int, pointCount: int) -> None
def __init__(self, dimension: int, rational: bool, order: int, pointCount: int) -> None
def __init__(self, other: NurbsCurve) -> None

Constructs a new NURBS curve with a specific degree and control point count.

Permanent link · Official RhinoCommon reference

Order

def Order(self) -> int

Gets the order of the curve. Order = Degree + 1.

Permanent link · Official RhinoCommon reference

IsRational

def IsRational(self) -> bool

Rational NURBS allow nonunit weights and exact conic representation.

Equal weights can represent a nonrational shape within rational storage. The property describes representation; changing individual weights changes relative control influence.

Permanent link · Official RhinoCommon reference

Knots

def Knots(self) -> Any

Knots divide parameter space. Repeated interior knots can reduce parametric continuity.

For ordinary interior multiplicity m and degree p, continuity is generally C^(p-m). Geometric continuity can be higher in special configurations.

Permanent link · Official RhinoCommon reference

Points

def Points(self) -> Any

Control points influence a curve through basis functions. Most do not lie on the evaluated shape.

Control-point edits affect a neighborhood determined by knots and degree. Inspect PointAt results rather than relying on the control polygon alone.

Permanent link · Official RhinoCommon reference

HasBezierSpans

def HasBezierSpans(self) -> bool

Returns true if the NURBS curve has Bezier spans (all distinct knots have multiplicity = degree)

Permanent link · Official RhinoCommon reference

Append

def Append(self, nurbsCurve: NurbsCurve) -> bool

Appends a NURBS curve to this curve.

Permanent link · Official RhinoCommon reference

ConvertSpanToBezier

def ConvertSpanToBezier(self, spanIndex: int) -> BezierCurve

Converts a span of the NURBS curve into a Bezier.

Permanent link · Official RhinoCommon reference

Create

def Create(periodic: bool, degree: int, points: Iterable[Point3d]) -> NurbsCurve

Constructs a 3D NURBS curve from a list of control points.

Permanent link · Official RhinoCommon reference

CreateFromArc

def CreateFromArc(arc: Arc) -> NurbsCurve
def CreateFromArc(arc: Arc, degree: int, cvCount: int) -> NurbsCurve

Gets a rational degree 2 NURBS curve representation of the arc. Note that the parameterization of NURBS curve does not match arc's transcendental parameterization.

Permanent link · Official RhinoCommon reference

CreateFromCircle

def CreateFromCircle(circle: Circle) -> NurbsCurve
def CreateFromCircle(circle: Circle, degree: int, cvCount: int) -> NurbsCurve

Gets a rational degree 2 NURBS curve representation of the circle. Note that the parameterization of NURBS curve does not match circle's transcendental parameterization. Use GetRadianFromNurbFormParameter() and GetParameterFromRadian() to convert between the NURBS curve parameter and the transcendental parameter.

Permanent link · Official RhinoCommon reference

CreateFromEllipse

def CreateFromEllipse(ellipse: Ellipse) -> NurbsCurve

Gets a rational degree 2 NURBS curve representation of the ellipse. Note that the parameterization of the NURBS curve does not match with the transcendental parameterization of the ellipsis.

Permanent link · Official RhinoCommon reference

CreateFromFitPoints

def CreateFromFitPoints(points: Iterable[Point3d], tolerance: float, degree: int, periodic: bool, startTangent: Vector3d, endTangent: Vector3d) -> NurbsCurve
def CreateFromFitPoints(points: Iterable[Point3d], tolerance: float, periodic: bool) -> NurbsCurve

Fits a NURBS curve to a dense, ordered set of points.

Permanent link · Official RhinoCommon reference

CreateFromLine

def CreateFromLine(line: Line) -> NurbsCurve

Gets a non-rational, degree 1 NURBS curve representation of the line.

Permanent link · Official RhinoCommon reference

CreateHSpline

def CreateHSpline(points: Iterable[Point3d]) -> NurbsCurve
def CreateHSpline(points: Iterable[Point3d], startTangent: Vector3d, endTangent: Vector3d) -> NurbsCurve

Construct an H-spline from a sequence of interpolation points

Permanent link · Official RhinoCommon reference

CreateNonRationalArcBezier

def CreateNonRationalArcBezier(degree: int, center: Point3d, start: Point3d, end: Point3d, radius: float, tanSlider: float, midSlider: float) -> NurbsCurve

Creates a non-rational approximation of a rational arc as a single bezier segment

Permanent link · Official RhinoCommon reference

CreateParabolaFromFocus

def CreateParabolaFromFocus(focus: Point3d, startPoint: Point3d, endPoint: Point3d) -> NurbsCurve

Creates a parabola from focus and end points.

Permanent link · Official RhinoCommon reference

CreateParabolaFromPoints

def CreateParabolaFromPoints(startPoint: Point3d, innerPoint: Point3d, endPoint: Point3d) -> NurbsCurve

Creates a parabola from three points.

Permanent link · Official RhinoCommon reference

CreateParabolaFromVertex

def CreateParabolaFromVertex(vertex: Point3d, startPoint: Point3d, endPoint: Point3d) -> NurbsCurve

Creates a parabola from vertex and end points.

Permanent link · Official RhinoCommon reference

CreatePlanarRailFrames

def CreatePlanarRailFrames(self, parameters: Iterable[float], normal: Vector3d) -> Sequence[Plane]

Computes planar rail sweep frames at specified parameters.

Permanent link · Official RhinoCommon reference

CreateRailFrames

def CreateRailFrames(self, parameters: Iterable[float]) -> Sequence[Plane]

Computes relatively parallel rail sweep frames at specified parameters.

Permanent link · Official RhinoCommon reference

CreateSpiral

def CreateSpiral(axisStart: Point3d, axisDir: Vector3d, radiusPoint: Point3d, pitch: float, turnCount: float, radius0: float, radius1: float) -> NurbsCurve
def CreateSpiral(railCurve: Curve, t0: float, t1: float, radiusPoint: Point3d, pitch: float, turnCount: float, radius0: float, radius1: float, pointsPerTurn: int) -> NurbsCurve

Creates a C1 cubic NURBS approximation of a helix or spiral. For a helix, you may have radius0 == radius1. For a spiral radius0 == radius1 produces a circle. Zero and negative radii are permissible.

Permanent link · Official RhinoCommon reference

CreateSubDFriendly

def CreateSubDFriendly(curve: Curve) -> NurbsCurve
def CreateSubDFriendly(curve: Curve, pointCount: int, periodicClosedCurve: bool) -> NurbsCurve
def CreateSubDFriendly(points: Iterable[Point3d], interpolatePoints: bool, periodicClosedCurve: bool) -> NurbsCurve

Create a NURBS curve, that is suitable for calculations like lofting SubD objects, from an existing curve.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: NurbsCurve, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

GrevilleParameter

def GrevilleParameter(self, index: int) -> float

Gets the greville (edit point) parameter that belongs to the control point at the specified index.

Permanent link · Official RhinoCommon reference

GrevilleParameters

def GrevilleParameters(self) -> Sequence[float]

Gets all Greville parameters for this curve.

Permanent link · Official RhinoCommon reference

GrevillePoint

def GrevillePoint(self, index: int) -> Point3d

Gets the Greville parameter that belongs to the control point at the specified index.

Permanent link · Official RhinoCommon reference

GrevillePoints

def GrevillePoints(self) -> Any
def GrevillePoints(self, all: bool) -> Any

Gets all Greville points for this curve.

Permanent link · Official RhinoCommon reference

IncreaseDegree

def IncreaseDegree(self, desiredDegree: int) -> bool

Degree elevation can increase degree while preserving the represented shape.

This differs from rebuilding. Elevation changes the control representation without necessarily adding geometric detail.

Permanent link · Official RhinoCommon reference

IsDuplicate

def IsDuplicate(curveA: NurbsCurve, curveB: NurbsCurve, ignoreParameterization: bool, tolerance: float) -> bool

Determines if two curves are similar.

Permanent link · Official RhinoCommon reference

MakeCompatible

def MakeCompatible(curves: Iterable[Curve], startPt: Point3d, endPt: Point3d, simplifyMethod: int, numPoints: int, refitTolerance: float, angleTolerance: float) -> Sequence[NurbsCurve]

For expert use only. From the input curves, make an array of compatible NURBS curves.

Permanent link · Official RhinoCommon reference

MakePiecewiseBezier

def MakePiecewiseBezier(self, setEndWeightsToOne: bool) -> bool

Clamps ends and adds knots so the NURBS curve has Bezier spans (all distinct knots have multiplicity = degree).

Permanent link · Official RhinoCommon reference

MakeUniform

def MakeUniform(self) -> bool

Changes a NURBS curve so each control point affects the curve exactly the same way. This make the knot vectors uniform without changing the control point locations. This will change the object shape slightly.

Permanent link · Official RhinoCommon reference

MatchToCurve

def MatchToCurve(self, targetCurve: Curve, maxEndDistance: float, maxInteriorDistance: float, matchTolerance: float, maxLevel: int) -> NurbsCurve

Constructs a NURBS curve with the start and end matching the start and end of targetCurve, and Greville points on targetCurve.

Permanent link · Official RhinoCommon reference

Reparameterize

def Reparameterize(self) -> Curve
def Reparameterize(self, c: float) -> bool

Reparameterizes a curve using automatic parameterization.

Permanent link · Official RhinoCommon reference

SetEndCondition

def SetEndCondition(self, bSetEnd: bool, continuity: Any, point: Point3d, tangent: Vector3d) -> bool
def SetEndCondition(self, bSetEnd: bool, continuity: Any, point: Point3d, tangent: Vector3d, curvature: Vector3d) -> bool

Set end condition of a NURBS curve to point, tangent and curvature.

Permanent link · Official RhinoCommon reference

SetGrevillePoints

def SetGrevillePoints(self, points: Iterable[Point3d]) -> bool

Sets all Greville edit points for this curve.

Permanent link · Official RhinoCommon reference

UVNDirectionsAt

def UVNDirectionsAt(self, t: float) -> tuple[bool, Vector3d, Vector3d, Vector3d]

Calculates the u, V, and N directions of a NURBS curve at a parameter similar to the method used by Rhino's MoveUVN command.

Permanent link · Official RhinoCommon reference

NurbsSurface

34 members
NurbsSurfacenurbs

A tensor-product NURBS surface uses a control net and two knot directions. Its rectangular parameter domain does not imply uniform distances on the surface.

The control net defines an underlying surface. Brep topology adds trimmed regions and holes that need not follow the rectangular net.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, other: NurbsSurface) -> None

Initializes a new NURBS surface by copying the values from another surface.

Permanent link · Official RhinoCommon reference

KnotsU

def KnotsU(self) -> Any

The U direction knot vector.

Permanent link · Official RhinoCommon reference

KnotsV

def KnotsV(self) -> Any

The V direction knot vector.

Permanent link · Official RhinoCommon reference

Points

def Points(self) -> Any

The control net defines the underlying surface; its points generally do not lie on that surface.

Trim boundaries belong to Brep topology. Editing the control net does not directly edit a face's UV trimming loops.

Permanent link · Official RhinoCommon reference

IsRational

def IsRational(self) -> bool

Gets a value indicating whether or not the NURBS surface is rational.

Permanent link · Official RhinoCommon reference

OrderU

def OrderU(self) -> int

Gets the order in the U direction.

Permanent link · Official RhinoCommon reference

OrderV

def OrderV(self) -> int

Gets the order in the V direction.

Permanent link · Official RhinoCommon reference

ConvertSpanToBezier

def ConvertSpanToBezier(self, spanIndex0: int, spanIndex1: int) -> BezierSurface

Convert a NURBS surface bispan into a Bezier surface.

Permanent link · Official RhinoCommon reference

CopyFrom

def CopyFrom(self, other: NurbsSurface) -> None

Copies this NURBS surface from another NURBS surface.

Permanent link · Official RhinoCommon reference

Create

def Create(dimension: int, isRational: bool, order0: int, order1: int, controlPointCount0: int, controlPointCount1: int) -> NurbsSurface

Constructs a new NURBS surface with internal uninitialized arrays.

Permanent link · Official RhinoCommon reference

CreateCurveOnSurface

def CreateCurveOnSurface(surface: Surface, points: Iterable[Point2d], tolerance: float, periodic: bool) -> NurbsCurve

Fit a sequence of 2d points on a surface to make a curve on the surface.

Permanent link · Official RhinoCommon reference

CreateCurveOnSurfacePoints

def CreateCurveOnSurfacePoints(surface: Surface, fixedPoints: Iterable[Point2d], tolerance: float, periodic: bool, initCount: int, levels: int) -> Sequence[Point2d]

Computes a discrete spline curve on the surface. In other words, computes a sequence of points on the surface, each with a corresponding parameter value.

Permanent link · Official RhinoCommon reference

CreateFromCone

def CreateFromCone(cone: Cone) -> NurbsSurface

Constructs a new NURBS surfaces from cone data.

Permanent link · Official RhinoCommon reference

CreateFromCorners

def CreateFromCorners(corner1: Point3d, corner2: Point3d, corner3: Point3d) -> NurbsSurface
def CreateFromCorners(corner1: Point3d, corner2: Point3d, corner3: Point3d, corner4: Point3d) -> NurbsSurface
def CreateFromCorners(corner1: Point3d, corner2: Point3d, corner3: Point3d, corner4: Point3d, tolerance: float) -> NurbsSurface

Makes a surface from 3 corner points.

Permanent link · Official RhinoCommon reference

CreateFromCylinder

def CreateFromCylinder(cylinder: Cylinder) -> NurbsSurface

Constructs a new NURBS surfaces from cylinder data.

Permanent link · Official RhinoCommon reference

CreateFromPlane

def CreateFromPlane(plane: Plane, uInterval: Interval, vInterval: Interval, uDegree: int, vDegree: int, uPointCount: int, vPointCount: int) -> NurbsSurface

Creates a NURBS surface from a plane and additional parameters.

Permanent link · Official RhinoCommon reference

CreateFromPoints

def CreateFromPoints(points: Iterable[Point3d], uCount: int, vCount: int, uDegree: int, vDegree: int) -> NurbsSurface

Constructs a NURBS surface from a 2D grid of control points.

Permanent link · Official RhinoCommon reference

CreateFromSphere

def CreateFromSphere(sphere: Sphere) -> NurbsSurface

Constructs a new NURBS surfaces from sphere data.

Permanent link · Official RhinoCommon reference

CreateFromTorus

def CreateFromTorus(torus: Torus) -> NurbsSurface

Constructs a new NURBS surfaces from torus data.

Permanent link · Official RhinoCommon reference

CreateNetworkSurface

def CreateNetworkSurface(curves: Iterable[Curve], continuity: int, edgeTolerance: float, interiorTolerance: float, angleTolerance: float) -> tuple[NurbsSurface, int]
def CreateNetworkSurface(uCurves: Iterable[Curve], uContinuityStart: int, uContinuityEnd: int, vCurves: Iterable[Curve], vContinuityStart: int, vContinuityEnd: int, edgeTolerance: float, interiorTolerance: float, angleTolerance: float) -> tuple[NurbsSurface, int]

Builds a surface from an auto-sorted network of curves/edges.

Permanent link · Official RhinoCommon reference

CreateRailRevolvedSurface

def CreateRailRevolvedSurface(profile: Curve, rail: Curve, axis: Line, scaleHeight: bool) -> NurbsSurface

Constructs a railed Surface-of-Revolution.

Permanent link · Official RhinoCommon reference

CreateRuledSurface

def CreateRuledSurface(curveA: Curve, curveB: Curve) -> NurbsSurface

Constructs a ruled surface between two curves. Curves must share the same knot-vector.

Permanent link · Official RhinoCommon reference

CreateSubDFriendly

def CreateSubDFriendly(surface: Surface) -> NurbsSurface

Create a bi-cubic SubD friendly surface from a surface.

Permanent link · Official RhinoCommon reference

CreateThroughPoints

def CreateThroughPoints(points: Iterable[Point3d], uCount: int, vCount: int, uDegree: int, vDegree: int, uClosed: bool, vClosed: bool) -> NurbsSurface

Constructs a NURBS surface from a 2D grid of points.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: NurbsSurface, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

FindClosestIsoCurve

def FindClosestIsoCurve(self, testPoint: Point3d) -> IsoStatus

Find the closest isoparamentric curve, given a test point.

Permanent link · Official RhinoCommon reference

IncreaseDegreeU

def IncreaseDegreeU(self, desiredDegree: int) -> bool

Increase the degree of this surface in U direction.

Permanent link · Official RhinoCommon reference

IncreaseDegreeV

def IncreaseDegreeV(self, desiredDegree: int) -> bool

Increase the degree of this surface in V direction.

Permanent link · Official RhinoCommon reference

MakeCompatible

def MakeCompatible(surface0: Surface, surface1: Surface) -> tuple[bool, NurbsSurface, NurbsSurface]

For expert use only. Makes a pair of compatible NURBS surfaces based on two input surfaces.

Permanent link · Official RhinoCommon reference

MakeNonRational

def MakeNonRational(self) -> bool

Makes this surface non-rational.

Permanent link · Official RhinoCommon reference

MakeRational

def MakeRational(self) -> bool

Makes this surface rational.

Permanent link · Official RhinoCommon reference

MakeUniform

def MakeUniform(self, direction: int) -> bool

Changes a NURBS surface so each control point affects the surface exactly the same way. This make the knot vectors uniform without changing the control point locations. This will change the object shape slightly.

Permanent link · Official RhinoCommon reference

MatchToCurve

def MatchToCurve(self, side: IsoStatus, targetCurve: Curve, maxEndDistance: float, maxInteriorDistance: float, matchTolerance: float, maxLevel: int) -> NurbsSurface

Constructs a NURBS surface with start and end edge isocurve matching the start and end of targetCurve, and Greville points on targetCurve.

Permanent link · Official RhinoCommon reference

UVNDirectionsAt

def UVNDirectionsAt(self, u: float, v: float) -> tuple[bool, Vector3d, Vector3d, Vector3d]

Calculates the U, V, and N directions of a NURBS surface at a u,v parameter similar to the method used by Rhino's MoveUVN command.

Permanent link · Official RhinoCommon reference

OrdinateDimension

14 members
OrdinateDimension

Represents an ordinate dimension

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, plane: Plane, direction: Any, basepoint: Point3d, defpoint: Point3d, leaderpoint: Point3d, kinkoffset1: float, kinkoffset2: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DefPoint

def DefPoint(self) -> Point2d

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

LeaderPoint

def LeaderPoint(self) -> Point2d

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

KinkPoint1

def KinkPoint1(self) -> Point2d

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

KinkPoint2

def KinkPoint2(self) -> Point2d

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

KinkOffset1

def KinkOffset1(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

KinkOffset2

def KinkOffset2(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Direction

def Direction(self) -> Any

Gets or sets the measured direction.

Permanent link · Official RhinoCommon reference

AdjustFromPoints

def AdjustFromPoints(self, plane: Plane, direction: Any, basepoint: Point3d, defpoint: Point3d, leaderpoint: Point3d, kinkoffset1: float, kinkoffset2: float) -> bool

Update Dimension geometry from point locations

Permanent link · Official RhinoCommon reference

Create

def Create(dimStyle: DimensionStyle, plane: Plane, direction: Any, basepoint: Point3d, defpoint: Point3d, leaderpoint: Point3d, kinkoffset1: float, kinkoffset2: float) -> OrdinateDimension

Initialize Dimension parameters

Permanent link · Official RhinoCommon reference

Get3dPoints

def Get3dPoints(self) -> tuple[bool, Point3d, Point3d, Point3d, Point3d, Point3d]

Get locations of dimension's 3d points

Permanent link · Official RhinoCommon reference

GetDisplayLines

def GetDisplayLines(self, style: DimensionStyle, scale: float) -> tuple[bool, Sequence[Line]]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

GetDistanceDisplayText

def GetDistanceDisplayText(self, unitsystem: UnitSystem, style: DimensionStyle) -> str

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

GetTextRectangle

def GetTextRectangle(self) -> tuple[bool, Sequence[Point3d]]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Particle

8 members
Particle

Represents a simple particle. This base class only defines position and display properties (size, color, bitmap id). You will most likely create a class that derives from this particle class to perform some sort of physical simulation (movement over time or frames).

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

Initializes a new instance of the Rhino.Geometry.Particle class.

Permanent link · Official RhinoCommon reference

ParentSystem

def ParentSystem(self) -> ParticleSystem

Gets the parent particle system of this particle.

Permanent link · Official RhinoCommon reference

Index

def Index(self) -> int

Index in ParentSystem for this Particle. Can change when the particle system is modified.

Permanent link · Official RhinoCommon reference

Location

def Location(self) -> Point3d

3d Location of the Particle.

Permanent link · Official RhinoCommon reference

Size

def Size(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Color

def Color(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DisplayBitmapIndex

def DisplayBitmapIndex(self) -> int

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Update

def Update(self) -> None

Base class implementation does nothing.

Permanent link · Official RhinoCommon reference

ParticleSystem

9 members
ParticleSystem

A Rhino.Geometry.ParticleSystem object.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DrawRequiresDepthSorting

def DrawRequiresDepthSorting(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DisplaySizesInWorldUnits

def DisplaySizesInWorldUnits(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

BoundingBox

def BoundingBox(self) -> BoundingBox

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Add

def Add(self, particle: Particle) -> bool

Adds a particle to this ParticleSystem. A Particle can only be in one system at a time. If the Particle already exists in a different system, this function will return false. You should remove the particle from the other system first before adding it.

Permanent link · Official RhinoCommon reference

Clear

def Clear(self) -> None

Remove all Particles from this system.

Permanent link · Official RhinoCommon reference

GetEnumerator

def GetEnumerator(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Remove

def Remove(self, particle: Particle) -> None

Removes a single particle from this system.

Permanent link · Official RhinoCommon reference

Update

def Update(self) -> None

Calls Update on every particle in the system.

Permanent link · Official RhinoCommon reference

PipeCapMode

0 members
PipeCapMode

Styles used for creating Brep pipes.

Permanent link · Official RhinoCommon reference

Plane

38 members
Planedistanceframesmutation

A valid plane is an oriented frame with an origin and orthonormal axes. Its Z axis is the normal.

Projection into plane coordinates loses the normal offset. Retain signed distance separately when the original 3D point must be reconstructed.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, a: float, b: float, c: float, d: float) -> None
def __init__(self, origin: Point3d, normal: Vector3d) -> None
def __init__(self, origin: Point3d, xDirection: Vector3d, yDirection: Vector3d) -> None
def __init__(self, origin: Point3d, xPoint: Point3d, yPoint: Point3d) -> None
def __init__(self, other: Plane) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Origin

def Origin(self) -> Point3d

Gets or sets the origin point of this plane.

Permanent link · Official RhinoCommon reference

OriginX

def OriginX(self) -> float

Gets or sets the X coordinate of the origin of this plane.

Permanent link · Official RhinoCommon reference

OriginY

def OriginY(self) -> float

Gets or sets the Y coordinate of the origin of this plane.

Permanent link · Official RhinoCommon reference

OriginZ

def OriginZ(self) -> float

Gets or sets the Z coordinate of the origin of this plane.

Permanent link · Official RhinoCommon reference

XAxis

def XAxis(self) -> Vector3d

Gets or sets the X axis vector of this plane.

Permanent link · Official RhinoCommon reference

YAxis

def YAxis(self) -> Vector3d

Gets or sets the Y axis vector of this plane.

Permanent link · Official RhinoCommon reference

ZAxis

def ZAxis(self) -> Vector3d

Gets or sets the Z axis vector of this plane.

Permanent link · Official RhinoCommon reference

WorldXY

WorldXY: ClassVar[Plane]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

WorldYZ

WorldYZ: ClassVar[Plane]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

WorldZX

WorldZX: ClassVar[Plane]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Plane]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Normal

def Normal(self) -> Vector3d

Gets the normal of this plane. This is essentially the ZAxis of the plane.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets a value indicating whether or not this is a valid plane. A plane is considered to be valid when all fields contain reasonable information and the equation jibes with point and z-axis.

Permanent link · Official RhinoCommon reference

Clone

def Clone(self) -> Plane

Returns a deep copy of this instance.

Permanent link · Official RhinoCommon reference

ClosestParameter

def ClosestParameter(self, testPoint: Point3d) -> tuple[bool, float, float]

Python returns (success, u, v). Check success before evaluating PointAt(u,v).

For a valid orthonormal plane, the local axes measure model distances. Unlike a general surface domain, this parameterization has a uniform metric.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
plane = rg.Plane.WorldXY
ok, u, v = plane.ClosestParameter(rg.Point3d(2, 3, 7))
if not ok:
    raise ValueError("Projection failed")
projected = plane.PointAt(u, v)

Permanent link · Official RhinoCommon reference

ClosestPoint

def ClosestPoint(self, testPoint: Point3d) -> Point3d

Gets the point on the plane closest to a test point.

Permanent link · Official RhinoCommon reference

CreateFromFrame

def CreateFromFrame(origin: Point3d, xDirection: Vector3d, yDirection: Vector3d) -> Plane

Constructs a plane from a point, and two vectors in the plane.

Permanent link · Official RhinoCommon reference

CreateFromNormal

def CreateFromNormal(origin: Point3d, normal: Vector3d) -> Plane

Constructs a plane from a point and normal vector.

Permanent link · Official RhinoCommon reference

CreateFromNormalYup

def CreateFromNormalYup(origin: Point3d, normal: Vector3d, yDirection: Vector3d) -> Plane

Construct a plane from a point, a normal vector, and a vector that projects to the positive YAxis.

Permanent link · Official RhinoCommon reference

CreateFromPoints

def CreateFromPoints(origin: Point3d, xPoint: Point3d, yPoint: Point3d) -> Plane

Construct a plane from three non-collinear points.

Permanent link · Official RhinoCommon reference

DistanceTo

def DistanceTo(self, bbox: BoundingBox) -> tuple[bool, float, float]
def DistanceTo(self, testPoint: Point3d) -> float

The point overload returns signed distance. Its sign depends on the plane normal.

Reversing the normal changes the sign without changing the plane's point set. Use absolute distance for orientation-independent proximity.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Plane, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, plane: Plane) -> bool
def Equals(self, obj: Any) -> bool

Determines if another plane has the same components as this plane.

Permanent link · Official RhinoCommon reference

ExtendThroughBox

def ExtendThroughBox(self, box: BoundingBox) -> tuple[bool, Interval, Interval]
def ExtendThroughBox(self, box: Box) -> tuple[bool, Interval, Interval]

Extends this plane through a bounding box.

Permanent link · Official RhinoCommon reference

FitPlaneToPoints

def FitPlaneToPoints(points: Iterable[Point3d]) -> tuple[PlaneFitResult, Plane, float] | tuple[PlaneFitResult, Plane]

Fit a plane through a collection of points.

Permanent link · Official RhinoCommon reference

Flip

def Flip(self) -> None

Flip exchanges X and Y axes and reverses orientation. It changes the plane and returns None.

The same geometric plane can have opposite normals. Orientation affects signed distance and apparent winding of planar curves.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
plane = rg.Plane(rg.Plane.WorldXY)
plane.Flip()
assert plane.Normal.Z < 0

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Gets a non-unique hashing code for this entity.

Permanent link · Official RhinoCommon reference

GetPlaneEquation

def GetPlaneEquation(self) -> Sequence[float]

Gets the plane equation for this plane in the format of Ax+By+Cz+D=0.

Permanent link · Official RhinoCommon reference

IsCoplanar

def IsCoplanar(self, plane: Plane) -> bool
def IsCoplanar(self, plane: Plane, tolerance: float) -> bool

Test if this plane is co-planar with a another plane.

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, u: float, v: float) -> Point3d
def PointAt(self, u: float, v: float, w: float) -> Point3d

Evaluate local plane coordinates. The three-coordinate overload includes displacement along the normal.

Use the frame rather than assuming WorldXY. Local coordinates describe positions relative to the plane's translated and rotated axes.

Permanent link · Official RhinoCommon reference

RemapToPlaneSpace

def RemapToPlaneSpace(self, ptSample: Point3d) -> tuple[bool, Point3d]

Convert a point from World space coordinates into Plane space coordinates.

Permanent link · Official RhinoCommon reference

Rotate

def Rotate(self, angle: float, axis: Vector3d) -> bool
def Rotate(self, angle: float, axis: Vector3d, centerOfRotation: Point3d) -> bool
def Rotate(self, sinAngle: float, cosAngle: float, axis: Vector3d) -> bool
def Rotate(self, sinAngle: float, cosAngle: float, axis: Vector3d, centerOfRotation: Point3d) -> bool

Rotate the plane about its origin point.

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str
def ToString(self, format: str, formatProvider: Any) -> str

Constructs the string representation of this plane.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> bool

Transform the plane with a Transformation matrix.

Permanent link · Official RhinoCommon reference

Translate

def Translate(self, delta: Vector3d) -> bool

Translate (move) the plane along a vector.

Permanent link · Official RhinoCommon reference

UpdateEquation

def UpdateEquation(self) -> bool

Update Equations

Permanent link · Official RhinoCommon reference

ValueAt

def ValueAt(self, p: Point3d) -> float

Get the value of the plane equation at the point.

Permanent link · Official RhinoCommon reference

PlaneFitResult

0 members
PlaneFitResult

Enumerates all possible outcomes of a Least-Squares plane fitting operation.

Permanent link · Official RhinoCommon reference

PlaneSurface

6 members
PlaneSurfacesurfaces

A plane surface is a bounded surface portion, distinct from the infinite mathematical plane frame.

Domain and extents control evaluation. Converting it to Brep adds boundaries rather than making a solid.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, plane: Plane) -> None
def __init__(self, plane: Plane, xExtents: Interval, yExtents: Interval) -> None

Constructs a new plane surface.

Permanent link · Official RhinoCommon reference

Plane

def Plane(self) -> Plane

Gets or sets the plane surface's plane.

Permanent link · Official RhinoCommon reference

CreateThroughBox

def CreateThroughBox(lineInPlane: Line, vectorInPlane: Vector3d, box: BoundingBox) -> PlaneSurface
def CreateThroughBox(plane: Plane, box: BoundingBox) -> PlaneSurface

Create a plane that contains the intersection of a bounding box.

Permanent link · Official RhinoCommon reference

GetExtents

def GetExtents(self, direction: int) -> Interval

Gets the extents of the plane surface.

Permanent link · Official RhinoCommon reference

SetExtents

def SetExtents(self, direction: int, extents: Interval, syncDomain: bool) -> None

Sets the extents of the plane surface.

Permanent link · Official RhinoCommon reference

ToMesh

def ToMesh(self) -> Mesh

Computes a polygon mesh of the surface made of one quad.

Permanent link · Official RhinoCommon reference

Point

2 members
Pointcoordinates

Point is a GeometryBase object containing a location. Point3d is a numeric value type.

Use Point for geometry-object behavior and Point3d for calculations. Convert explicitly when moving between numeric coordinates and document geometry.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, location: Point3d) -> None

Initializes a new point instance with a location.

Permanent link · Official RhinoCommon reference

Location

def Location(self) -> Point3d

Gets or sets the location (position) of this point.

Permanent link · Official RhinoCommon reference

Point2d

20 members
Point2dcoordinates

A 2D point is an ordered pair. UV coordinates describe a parameter domain and need not measure physical distance.

Keep the frame explicit when moving between image coordinates, a plane, and a surface domain. Equal UV offsets can correspond to different distances on a curved surface.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, point: Point2d) -> None
def __init__(self, point: Point3d) -> None
def __init__(self, vector: Vector2d) -> None
def __init__(self, x: float, y: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

X

def X(self) -> float

Gets or sets the X (first) coordinate of the point.

Permanent link · Official RhinoCommon reference

Y

def Y(self) -> float

Gets or sets the Y (second) coordinate of the point.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

If any coordinate of a point is UnsetValue, then the point is not valid.

Permanent link · Official RhinoCommon reference

MinimumCoordinate

def MinimumCoordinate(self) -> float

Gets the smallest (both positive and negative) valid coordinate, or RhinoMath.UnsetValue if no coordinate is valid.

Permanent link · Official RhinoCommon reference

MaximumCoordinate

def MaximumCoordinate(self) -> float

Gets the largest valid coordinate, or RhinoMath.UnsetValue if no coordinate is valid.

Permanent link · Official RhinoCommon reference

Origin

Origin: ClassVar[Point2d]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Point2d]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Add

def Add(point: Point2d, vector: Vector2d) -> Point2d
def Add(point1: Point2d, point2: Point2d) -> Point2d
def Add(vector: Vector2d, point: Point2d) -> Point2d

Adds a point with a vector. (Provided for languages that do not support operator overloading. You can use the + operator otherwise)

Permanent link · Official RhinoCommon reference

CompareTo

def CompareTo(self, other: Point2d) -> int

Compares this Rhino.Geometry.Point2d with another Rhino.Geometry.Point2d. Coordinates evaluation priority is first X, then Y.

Permanent link · Official RhinoCommon reference

DistanceTo

def DistanceTo(self, other: Point2d) -> float

Computes the distance between two points.

Permanent link · Official RhinoCommon reference

DistanceToSquared

def DistanceToSquared(self, other: Point2d) -> float

Computes the square of the distance between two 2d points. This method is usually largely faster than DistanceTo().

Permanent link · Official RhinoCommon reference

Divide

def Divide(point: Point2d, t: float) -> Point2d

Divides a Rhino.Geometry.Point2d by a number. (Provided for languages that do not support operator overloading. You can use the / operator otherwise)

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Point2d, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, point: Point2d) -> bool
def Equals(self, obj: Any) -> bool

Determines whether the specified Point2d has the same values as the present point.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Computes a hash number that represents the current point.

Permanent link · Official RhinoCommon reference

Multiply

def Multiply(point: Point2d, t: float) -> Point2d
def Multiply(t: float, point: Point2d) -> Point2d

Multiplies a Rhino.Geometry.Point2d by a number. (Provided for languages that do not support operator overloading. You can use the * operator otherwise)

Permanent link · Official RhinoCommon reference

Subtract

def Subtract(point: Point2d, vector: Vector2d) -> Point2d
def Subtract(point1: Point2d, point2: Point2d) -> Vector2d

Subtracts a vector from a point. (Provided for languages that do not support operator overloading. You can use the - operator otherwise)

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str
def ToString(self, format: str, formatProvider: Any) -> str

Constructs the string representation for the current point.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> None

Transforms the present point in place. The transformation matrix acts on the left of the point. i.e., result = transformation*point

Permanent link · Official RhinoCommon reference

Point2f

12 members
Point2f

Represents the two coordinates of a point in two-dimensional space, using System.Single-precision floating point numbers.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, x: float, y: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Point2f]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets a value indicating whether this point is considered valid.

Permanent link · Official RhinoCommon reference

X

def X(self) -> float

Gets or sets the X (first) component of the vector.

Permanent link · Official RhinoCommon reference

Y

def Y(self) -> float

Gets or sets the Y (second) component of the vector.

Permanent link · Official RhinoCommon reference

CompareTo

def CompareTo(self, other: Point2f) -> int

Compares this Rhino.Geometry.Point2f with another Rhino.Geometry.Point2f. Coordinates evaluation priority is first X, then Y.

Permanent link · Official RhinoCommon reference

DistanceTo

def DistanceTo(self, other: Point2f) -> float

Computes the distance between two points.

Permanent link · Official RhinoCommon reference

DistanceToSquared

def DistanceToSquared(self, other: Point2f) -> float

Computes the squared distance between two points.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Point2f, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, point: Point2f) -> bool
def Equals(self, obj: Any) -> bool

Determines whether the specified Rhino.Geometry.Point2f has the same values as the present point.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Computes a hash number that represents the current point.

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str
def ToString(self, format: str, formatProvider: Any) -> str

Constructs the string representation for the current point.

Permanent link · Official RhinoCommon reference

Point3d

27 members
Point3dcoordinatesdistancetolerancetransforms

A point is a location, while a vector is a displacement. Coordinates use model units; subtracting two points produces a vector.

An independent Point3d stores numbers without a unit label. Keep unit conversions explicit when exchanging coordinates between documents.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, point: Point3d) -> None
def __init__(self, point: Point3f) -> None
def __init__(self, point: Point4d) -> None
def __init__(self, vector: Vector3d) -> None
def __init__(self, x: float, y: float, z: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Origin

Origin: ClassVar[Point3d]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Point3d]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

X

def X(self) -> float

Gets or sets the X (first) coordinate of this point.

Permanent link · Official RhinoCommon reference

Y

def Y(self) -> float

Gets or sets the Y (second) coordinate of this point.

Permanent link · Official RhinoCommon reference

Z

def Z(self) -> float

Gets or sets the Z (third) coordinate of this point.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Each coordinate of the point must pass the Rhino.RhinoMath.IsValidDouble(System.Double) test.

Permanent link · Official RhinoCommon reference

MinimumCoordinate

def MinimumCoordinate(self) -> float

Gets the smallest (both positive and negative) coordinate value in this point.

Permanent link · Official RhinoCommon reference

MaximumCoordinate

def MaximumCoordinate(self) -> float

Gets the largest (both positive and negative) valid coordinate in this point, or RhinoMath.UnsetValue if no coordinate is valid, as an absolute value.

Permanent link · Official RhinoCommon reference

Add

def Add(point: Point3d, vector: Vector3d) -> Point3d
def Add(point: Point3d, vector: Vector3f) -> Point3d
def Add(point1: Point3d, point2: Point3d) -> Point3d
def Add(vector: Vector3d, point: Point3d) -> Point3d

Sums up a point and a vector, and returns a new point. (Provided for languages that do not support operator overloading. You can use the + operator otherwise)

Permanent link · Official RhinoCommon reference

ArePointsCoplanar

def ArePointsCoplanar(points: Iterable[Point3d], tolerance: float) -> bool

Determines whether a set of points is coplanar within a given tolerance.

Permanent link · Official RhinoCommon reference

CompareTo

def CompareTo(self, other: Point3d) -> int

Compares this Rhino.Geometry.Point3d with another Rhino.Geometry.Point3d. Component evaluation priority is first X, then Y, then Z.

Permanent link · Official RhinoCommon reference

CullDuplicates

def CullDuplicates(points: Iterable[Point3d], tolerance: float) -> Sequence[Point3d]

Removes duplicates in the supplied set of points.

Permanent link · Official RhinoCommon reference

DistanceTo

def DistanceTo(self, other: Point3d) -> float

Euclidean distance measures the straight segment between points, not travel along a curve or surface.

For distance along a path, use the curve's length methods. Coincident endpoints can have zero straight-line distance while the path between them has substantial length.

Permanent link · Official RhinoCommon reference

DistanceToSquared

def DistanceToSquared(self, other: Point3d) -> float

Squared distance avoids a square root in comparisons. Compare it with a squared threshold.

A threshold of d model units becomes d*d in squared units. Nearest-point ordering is unchanged for finite nonnegative distances.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
a, b = rg.Point3d(0, 0, 0), rg.Point3d(3, 4, 0)
assert a.DistanceToSquared(b) == 25.0
assert a.DistanceTo(b) == 5.0

Permanent link · Official RhinoCommon reference

Divide

def Divide(point: Point3d, t: float) -> Point3d

Divides a Rhino.Geometry.Point3d by a number. (Provided for languages that do not support operator overloading. You can use the / operator otherwise)

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Point3d, epsilon: float) -> bool

Tolerance equality is not an exact identity and is generally not transitive.

A can be close to B and B close to C while A is not close to C. Use an explicit clustering policy when deduplicating points.

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, point: Point3d) -> bool
def Equals(self, obj: Any) -> bool

Determines whether the specified Rhino.Geometry.Point3d has the same values as the present point.

Permanent link · Official RhinoCommon reference

FromPoint3f

def FromPoint3f(point: Point3f) -> Point3d

Converts a single-precision point in a double-precision point.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Computes a hash code for the present point.

Permanent link · Official RhinoCommon reference

Interpolate

def Interpolate(self, pA: Point3d, pB: Point3d, t: float) -> None

Interpolate between two points.

Permanent link · Official RhinoCommon reference

Multiply

def Multiply(point: Point3d, t: float) -> Point3d
def Multiply(t: float, point: Point3d) -> Point3d

Multiplies a Rhino.Geometry.Point3d by a number. (Provided for languages that do not support operator overloading. You can use the * operator otherwise)

Permanent link · Official RhinoCommon reference

SortAndCullPointList

def SortAndCullPointList(points: Iterable[Point3d], minimumDistance: float) -> Sequence[Point3d]

Orders a set of points so they will be connected in a "reasonable polyline" order. Also, removes points from the list if their common distance exceeds a specified threshold.

Permanent link · Official RhinoCommon reference

Subtract

def Subtract(point: Point3d, vector: Vector3d) -> Point3d
def Subtract(point1: Point3d, point2: Point3d) -> Vector3d

Subtracts a vector from a point. (Provided for languages that do not support operator overloading. You can use the - operator otherwise)

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str
def ToString(self, format: str, formatProvider: Any) -> str

Constructs the string representation for the current point.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> None

This method changes the point in place and returns None. Keep a copy if the original coordinates are needed.

Translation affects points because they represent positions. A pure translation leaves a direction vector unchanged.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
p = rg.Point3d(1, 2, 3)
p.Transform(rg.Transform.Translation(10, 0, 0))
assert abs(p.X - 11) < 1e-9

Permanent link · Official RhinoCommon reference

TryParse

def TryParse(input: str) -> tuple[bool, Point3d]

Converts the string representation of a point to the equivalent Point3d structure.

Permanent link · Official RhinoCommon reference

Point3dGrid

1 members
Point3dGrid

Represents a rectangular grid of 3D points.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, rows: int, columns: int) -> None

Initializes a rectangular grid of points, with no points in it.

Permanent link · Official RhinoCommon reference

Point3f

16 members
Point3f

Represents the three coordinates of a point in three-dimensional space, using System.Single-precision floating point numbers.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, x: float, y: float, z: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Origin

Origin: ClassVar[Point3f]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Point3f]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

X

def X(self) -> float

Gets or sets the X (first) component of the vector.

Permanent link · Official RhinoCommon reference

Y

def Y(self) -> float

Gets or sets the Y (second) component of the vector.

Permanent link · Official RhinoCommon reference

Z

def Z(self) -> float

Gets or sets the Z (third) component of the vector.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Each coordinate of the point must pass the Rhino.RhinoMath.IsValidSingle(System.Single) test.

Permanent link · Official RhinoCommon reference

CompareTo

def CompareTo(self, other: Point3f) -> int

Compares this Rhino.Geometry.Point3f with another Rhino.Geometry.Point3f. Component evaluation priority is first X, then Y, then Z.

Permanent link · Official RhinoCommon reference

DistanceTo

def DistanceTo(self, other: Point3f) -> float

Computes the distance between two points.

Permanent link · Official RhinoCommon reference

DistanceToSquared

def DistanceToSquared(self, other: Point3f) -> float

Computes the squared distance between two points.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Point3f, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, point: Point3f) -> bool
def Equals(self, obj: Any) -> bool

Determines whether the specified Point3f has the same values as the present point.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Computes a hash code for the present point.

Permanent link · Official RhinoCommon reference

Subtract

def Subtract(point1: Point3f, point2: Point3f) -> Vector3f

Subtracts a point from another point. (Provided for languages that do not support operator overloading. You can use the - operator otherwise)

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str
def ToString(self, format: str, formatProvider: Any) -> str

Constructs the string representation for the current point.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> None

Transforms the present point in place. The transformation matrix acts on the left of the point. i.e., result = transformation*point

Permanent link · Official RhinoCommon reference

Point4d

15 members
Point4d

Represents the four coordinates of a point in four-dimensional space. The W (fourth) dimension is often considered the weight of the point as seen in 3D space.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, point: Point3d) -> None
def __init__(self, point: Point4d) -> None
def __init__(self, x: float, y: float, z: float, w: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

X

def X(self) -> float

Gets or sets the X (first) coordinate of this point.

Permanent link · Official RhinoCommon reference

Y

def Y(self) -> float

Gets or sets the Y (second) coordinate of this point.

Permanent link · Official RhinoCommon reference

Z

def Z(self) -> float

Gets or sets the Z (third) coordinate of this point.

Permanent link · Official RhinoCommon reference

W

def W(self) -> float

Gets or sets the W (fourth) coordinate -or weight- of this point.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Point4d]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Returns an indication regarding the validity of this point.

Permanent link · Official RhinoCommon reference

Add

def Add(point1: Point4d, point2: Point4d) -> Point4d

Sums two Rhino.Geometry.Point4d together. (Provided for languages that do not support operator overloading. You can use the + operator otherwise)

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Point4d, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, point: Point4d) -> bool
def Equals(self, obj: Any) -> bool

Determines whether the specified point has same value as the present point.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Computes the hash code for the present point.

Permanent link · Official RhinoCommon reference

Multiply

def Multiply(point: Point4d, d: float) -> Point4d

Multiplies a point by a number. (Provided for languages that do not support operator overloading. You can use the * operator otherwise)

Permanent link · Official RhinoCommon reference

Subtract

def Subtract(point1: Point4d, point2: Point4d) -> Point4d

Subtracts the second point from the first point. (Provided for languages that do not support operator overloading. You can use the - operator otherwise)

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str
def ToString(self, format: str, formatProvider: Any) -> str

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> None

Transforms the present point in place. The transformation matrix acts on the left of the point. i.e., result = transformation*point

Permanent link · Official RhinoCommon reference

PointCloud

35 members
PointClouddistancespatial-index

A point cloud is a sample collection, not a connected surface.

Nearest-sample distance differs from distance to a reconstructed surface. Account for density, noise, and coordinate units.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, other: PointCloud) -> None
def __init__(self, points: Iterable[Point3d]) -> None

Initializes a new instance of the Rhino.Geometry.PointCloud class that is empty.

Permanent link · Official RhinoCommon reference

Count

def Count(self) -> int

Gets the number of points in this point cloud.

Permanent link · Official RhinoCommon reference

HiddenPointCount

def HiddenPointCount(self) -> int

Gets the number of points that have their Hidden flag set.

Permanent link · Official RhinoCommon reference

ContainsColors

def ContainsColors(self) -> bool

Gets a value indicating whether or not the points in this point cloud have colors assigned to them.

Permanent link · Official RhinoCommon reference

ContainsNormals

def ContainsNormals(self) -> bool

Gets a value indicating whether or not the points in this point cloud have normals assigned to them.

Permanent link · Official RhinoCommon reference

ContainsHiddenFlags

def ContainsHiddenFlags(self) -> bool

Gets a value indicating whether or not the points in this point cloud have hidden flags assigned to them.

Permanent link · Official RhinoCommon reference

ContainsPointValues

def ContainsPointValues(self) -> bool

Gets a value indicating whether or not the points in this point cloud have extra values assigned to them. Extra values can be used to store a user-defined values, such as intensity.

Permanent link · Official RhinoCommon reference

Add

def Add(self, point: Point3d) -> None
def Add(self, point: Point3d, normal: Vector3d) -> None
def Add(self, point: Point3d, color: Any) -> None
def Add(self, point: Point3d, normal: Vector3d, color: Any) -> None
def Add(self, point: Point3d, normal: Vector3d, color: Any, value: float) -> None

Append a new point to the end of the list.

Permanent link · Official RhinoCommon reference

AddRange

def AddRange(self, points: Iterable[Point3d]) -> None
def AddRange(self, points: Iterable[Point3d], normals: Iterable[Vector3d]) -> None
def AddRange(self, points: Iterable[Point3d], colors: Iterable[Any]) -> None
def AddRange(self, points: Iterable[Point3d], normals: Iterable[Vector3d], colors: Iterable[Any]) -> None
def AddRange(self, points: Iterable[Point3d], normals: Iterable[Vector3d], colors: Iterable[Any], values: Iterable[float]) -> None

Appends a collection of points to this point cloud.

Permanent link · Official RhinoCommon reference

AppendNew

def AppendNew(self) -> PointCloudItem

Appends a new PointCloudItem to the end of this point cloud.

Permanent link · Official RhinoCommon reference

AsReadOnlyListOfPoints

def AsReadOnlyListOfPoints(self) -> Sequence[Point3d]

Returns an enumerator and list indexer over point cloud locations.

Permanent link · Official RhinoCommon reference

ClearColors

def ClearColors(self) -> None

Destroys the color information in this point cloud.

Permanent link · Official RhinoCommon reference

ClearHiddenFlags

def ClearHiddenFlags(self) -> None

Destroys the hidden flag information in this point cloud.

Permanent link · Official RhinoCommon reference

ClearNormals

def ClearNormals(self) -> None

Destroys the normal vector information in this point cloud.

Permanent link · Official RhinoCommon reference

ClearPointValues

def ClearPointValues(self) -> None

Destroys the extra value information in this point cloud. Extra values can be used to store a user-defined values, such as intensity.

Permanent link · Official RhinoCommon reference

ClosestPoint

def ClosestPoint(self, testPoint: Point3d) -> int

The result identifies the nearest stored sample, rather than projecting onto a surface between samples.

Check the index before accessing an item. Sparse regions can have large errors relative to an underlying physical shape.

Permanent link · Official RhinoCommon reference

CreateContourCurves

def CreateContourCurves(self, contourStart: Point3d, contourEnd: Point3d, interval: float, absoluteTolerance: float) -> Sequence[Curve]
def CreateContourCurves(self, startPoint: Point3d, endPoint: Point3d, interval: float, absoluteTolerance: float, maxDistance: float, minDistance: float, openCurves: bool, createSpline: bool, createPolyline: bool, fitTolerance: float) -> Sequence[Curve]

Creates a planar curves by intersecting a plane with a point cloud.

Permanent link · Official RhinoCommon reference

CreateFromMesh

def CreateFromMesh(mesh: Mesh) -> PointCloud

Creates a point cloud from a mesh.

Permanent link · Official RhinoCommon reference

CreateSectionCurve

def CreateSectionCurve(self, plane: Plane, absoluteTolerance: float) -> Sequence[Curve]
def CreateSectionCurve(self, plane: Plane, absoluteTolerance: float, maxDistance: float, minDistance: float, openCurves: bool, createSpline: bool, createPolyline: bool, fitTolerance: float) -> Sequence[Curve]

Creates planar curves by intersecting a plane with a point cloud.

Permanent link · Official RhinoCommon reference

GetColors

def GetColors(self) -> Sequence[Any]

Copy all the point colors in this point cloud to an array.

Permanent link · Official RhinoCommon reference

GetEnumerator

def GetEnumerator(self) -> Any

Gets an enumerator that allows to modify each point cloud point.

Permanent link · Official RhinoCommon reference

GetNormals

def GetNormals(self) -> Sequence[Vector3d]

Copy all the normal vectors in this point cloud to an array.

Permanent link · Official RhinoCommon reference

GetPoints

def GetPoints(self) -> Sequence[Point3d]

Copy all the point coordinates in this point cloud to an array.

Permanent link · Official RhinoCommon reference

GetPointValues

def GetPointValues(self) -> Sequence[float]

Copy all the extra point values in this point cloud to an array. Extra values can be used to store a user-defined value, such as intensity.

Permanent link · Official RhinoCommon reference

GetRandomSubsample

def GetRandomSubsample(self, numberOfPoints: int) -> PointCloud
def GetRandomSubsample(self, numberOfPoints: int, cancelToken: Any, progress: Any) -> PointCloud

Returns a random subsample of a point cloud.

Permanent link · Official RhinoCommon reference

GetUnsafeLock

def GetUnsafeLock(self, writable: bool) -> PointCloudUnsafeLock

Allows the developer to obtain unsafe pointers to the underlying unmanaged data structures of the PointCloud.

Permanent link · Official RhinoCommon reference

Insert

def Insert(self, index: int, point: Point3d) -> None
def Insert(self, index: int, point: Point3d, normal: Vector3d) -> None
def Insert(self, index: int, point: Point3d, color: Any) -> None
def Insert(self, index: int, point: Point3d, normal: Vector3d, color: Any) -> None
def Insert(self, index: int, point: Point3d, normal: Vector3d, color: Any, value: float) -> None

Inserts a new point into the point list.

Permanent link · Official RhinoCommon reference

InsertNew

def InsertNew(self, index: int) -> PointCloudItem

Inserts a new Rhino.Geometry.PointCloudItem at a specific position of the point cloud.

Permanent link · Official RhinoCommon reference

InsertRange

def InsertRange(self, index: int, points: Iterable[Point3d]) -> None

Append a collection of points to this point cloud.

Permanent link · Official RhinoCommon reference

Merge

def Merge(self, other: PointCloud) -> None

Merges, or appends, a specified point cloud into this one.

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, index: int) -> Point3d

Returns the location of the point at a specific index.

Permanent link · Official RhinoCommon reference

ReleaseUnsafeLock

def ReleaseUnsafeLock(self, pointCloudData: PointCloudUnsafeLock) -> None

Updates the PointCloud data with the information that was stored via the Rhino.Geometry.PointCloudUnsafeLock.

Permanent link · Official RhinoCommon reference

RemoveAt

def RemoveAt(self, index: int) -> None

Remove the point at the given index.

Permanent link · Official RhinoCommon reference

RemoveRange

def RemoveRange(self, indices: Iterable[int]) -> int

Removes points at given indices.

Permanent link · Official RhinoCommon reference

ShrinkWrap

def ShrinkWrap(self, parameters: ShrinkWrapParameters) -> Mesh

Returns a ShrinkWrap mesh from this point cloud object.

Permanent link · Official RhinoCommon reference

PointCloudItem

9 members
PointCloudItemcoordinates

A point-cloud item exposes one sample and its optional attributes through the owning cloud.

Indices and associated data can change after insertions or removals. Copy values that must outlive edits.

Permanent link · Official RhinoCommon reference

Location

def Location(self) -> Point3d

Gets or sets the location of this point cloud item.

Permanent link · Official RhinoCommon reference

X

def X(self) -> float

Gets or sets the X component of this point cloud item location.

Permanent link · Official RhinoCommon reference

Y

def Y(self) -> float

Gets or sets the Y component of this point cloud item location.

Permanent link · Official RhinoCommon reference

Z

def Z(self) -> float

Gets or sets the Z component of this point cloud item location.

Permanent link · Official RhinoCommon reference

Normal

def Normal(self) -> Vector3d

Gets or sets the normal vector for this point cloud item. If this point cloud item does not have a normal vector, Vector3d.Unset is returned.

Permanent link · Official RhinoCommon reference

Color

def Color(self) -> Any

Gets or sets the color of this point cloud item. If this point cloud item does not have a color, System.Drawing.Color.Black is returned.

Permanent link · Official RhinoCommon reference

Hidden

def Hidden(self) -> bool

Gets or sets the hidden flag of this point cloud item. If this point cloud item does not have a hidden flag, false is returned.

Permanent link · Official RhinoCommon reference

PointValue

def PointValue(self) -> float

Gets or set the extra value of this point cloud item. The extra value can be used to store a user-defined value, such as intensity. If this point cloud item does not have an extra value, RhinoMath.UnsetValue is returned.

Permanent link · Official RhinoCommon reference

Index

def Index(self) -> int

Gets the index of this point cloud item.

Permanent link · Official RhinoCommon reference

PointCloudUnsafeLock

5 members
PointCloudUnsafeLock

Permits access to the underlying PointCloud raw data structures in an unsafe way.

Permanent link · Official RhinoCommon reference

ColorArray

def ColorArray(self) -> tuple[Any, int]

Retrieves a pointer to the raw array of colors, which are represented as 32-bit integers in ARGB format, or null if none is available.

Permanent link · Official RhinoCommon reference

NormalArray

def NormalArray(self) -> tuple[Any, int]

Retrieves a pointer to the raw array of point normals, or null if none is available.

Permanent link · Official RhinoCommon reference

PointArray

def PointArray(self) -> tuple[Any, int]

Retrieves a pointer to the raw point array, which uses coordinates defined with double precision floating point numbers, or null if none is available.

Permanent link · Official RhinoCommon reference

Release

def Release(self) -> None

Releases the lock and updates the underlying unmanaged data structures.

Permanent link · Official RhinoCommon reference

ValueArray

def ValueArray(self) -> tuple[Any, int]

Retrieves a pointer to the raw array of point values, or null if none is available.

Permanent link · Official RhinoCommon reference

PointContainment

0 members
PointContainment

Defines enumerated values for closed curve/point spatial relationships.

Permanent link · Official RhinoCommon reference

PointFaceRelation

0 members
PointFaceRelation

Enumerates the possible point/BrepFace spatial relationships.

Permanent link · Official RhinoCommon reference

PolyCurve

17 members
PolyCurvecurvestopology

A polycurve joins curve segments into a composite. Global parameters differ from segment-local parameters.

Use mapping methods to transfer parameters. A joined sequence can retain gaps or discontinuities needing validation.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

Initializes a new, empty polycurve.

Permanent link · Official RhinoCommon reference

SegmentCount

def SegmentCount(self) -> int

Gets the number of segments that make up this Polycurve.

Permanent link · Official RhinoCommon reference

IsNested

def IsNested(self) -> bool

Gets a value indicating whether or not a PolyCurve contains nested PolyCurves.

Permanent link · Official RhinoCommon reference

HasGap

def HasGap(self) -> bool

This is a quick way to see if the curve has gaps between the sub curve segments.

Permanent link · Official RhinoCommon reference

Append

def Append(self, arc: Arc) -> bool
def Append(self, curve: Curve) -> bool
def Append(self, line: Line) -> bool

Appends and matches the start of the arc to the end of polycurve. This function will fail if the polycurve is closed or if SegmentCount > 0 and the arc is closed.

Permanent link · Official RhinoCommon reference

AppendSegment

def AppendSegment(self, curve: Curve) -> bool

Appends the curve to the polycurve without changing the new segment's geometry. This function will fail if the PolyCurve is closed or if SegmentCount > 0 and the new segment is closed.

Permanent link · Official RhinoCommon reference

CleanUp

def CleanUp(self) -> Curve

Removes any nesting of polycurves. If this polycurve has just a single segment, the segment is returned. If, after nest removal, there are adjacent segments which are polylines, they are combined into a single polyline. The new curve may have a different domain from this polycurve. If the start and end segments of a closed input are polylines, the result may have a different seam location since the start and end segments will be combined.

Permanent link · Official RhinoCommon reference

Duplicate

def Duplicate(self) -> GeometryBase

Duplicates this polycurve. When not overridden in a derived class, this calls Rhino.Geometry.PolyCurve.DuplicatePolyCurve.

Permanent link · Official RhinoCommon reference

DuplicatePolyCurve

def DuplicatePolyCurve(self) -> PolyCurve

Duplicates this polycurve. This is the same as Rhino.Geometry.PolyCurve.Duplicate.

Permanent link · Official RhinoCommon reference

Explode

def Explode(self) -> Sequence[Curve]

Exploding returns component curves with their own parameterizations and identities.

Keep original segment order when transferring attributes. A global polycurve parameter cannot be blindly reused on a component.

Permanent link · Official RhinoCommon reference

PolyCurveParameter

def PolyCurveParameter(self, segmentIndex: int, segmentCurveParameter: float) -> float

Converts a segment curve parameter to a polycurve parameter.

Permanent link · Official RhinoCommon reference

RemoveNesting

def RemoveNesting(self) -> bool

Explodes nested polycurve segments and reconstructs this curve from the shattered remains. The result will have not have any PolyCurves as segments but it will have identical locus and parameterization.

Permanent link · Official RhinoCommon reference

SegmentCurve

def SegmentCurve(self, index: int) -> Curve

Gets the segment curve at the given index.

Permanent link · Official RhinoCommon reference

SegmentCurveParameter

def SegmentCurveParameter(self, polycurveParameter: float) -> float

Converts a polycurve parameter to a segment curve parameter.

Permanent link · Official RhinoCommon reference

SegmentDomain

def SegmentDomain(self, segmentIndex: int) -> Interval

Returns the polycurve sub-domain assigned to a segment curve.

Permanent link · Official RhinoCommon reference

SegmentIndex

def SegmentIndex(self, polycurveParameter: float) -> int

Finds the segment used for evaluation at polycurve_parameter.

Permanent link · Official RhinoCommon reference

SegmentIndexes

def SegmentIndexes(self, subdomain: Interval) -> tuple[int, int, int]

Finds the segments that overlap the Polycurve sub domain.

Permanent link · Official RhinoCommon reference

Polyline

30 members
Polylinecurvesparameters

A polyline is an ordered point sequence connected by straight segments. Corners are usually not tangent continuous.

Polyline and PolylineCurve provide different APIs and parameter conventions. Closedness does not imply smoothness.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, collection: Iterable[Point3d]) -> None
def __init__(self, initialCapacity: int) -> None

Initializes a new empty polyline.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets a value that indicates whether this polyline is valid. Valid polylines have at least one segment, no Invalid points and no zero length segments. Closed polylines with only two segments are also not considered valid.

Permanent link · Official RhinoCommon reference

SegmentCount

def SegmentCount(self) -> int

Gets the number of segments for this polyline.

Permanent link · Official RhinoCommon reference

IsClosed

def IsClosed(self) -> bool

Test a polyline to see if it is closed.

Permanent link · Official RhinoCommon reference

Length

def Length(self) -> float

Gets the total length of the polyline.

Permanent link · Official RhinoCommon reference

BreakAtAngles

def BreakAtAngles(self, angle: float) -> Sequence[Polyline]

Breaks this polyline into sections at sharp kinks. Closed polylines will also be broken at the first and last vertex.

Permanent link · Official RhinoCommon reference

CenterPoint

def CenterPoint(self) -> Point3d

Compute the center point of the polyline as the weighted average of all segments.

Permanent link · Official RhinoCommon reference

ClosestParameter

def ClosestParameter(self, testPoint: Point3d) -> float

Gets the parameter along the polyline which is closest to a test-point.

Permanent link · Official RhinoCommon reference

ClosestPoint

def ClosestPoint(self, testPoint: Point3d) -> Point3d

Gets the point on the polyline which is closest to a test-point.

Permanent link · Official RhinoCommon reference

CollapseShortSegments

def CollapseShortSegments(self, tolerance: float) -> int

Collapses all segments until none are shorter than tolerance. This function is significantly slower than DeleteShortSegments, since it recursively operates on the shortest segment. When a segment is collapsed the end-points are placed in the center of the segment.

Permanent link · Official RhinoCommon reference

CreateByJoiningLines

def CreateByJoiningLines(lines: Iterable[Line], tolerance: float, splitAtIntersections: bool) -> Sequence[Polyline]

Creates polylines by joining lines.

Permanent link · Official RhinoCommon reference

CreateCircumscribedPolygon

def CreateCircumscribedPolygon(circle: Circle, sideCount: int) -> Polyline

Create a regular polygon circumscribe about a circle. The midpoints of the polygon's edges will be tangent to the circle.

Permanent link · Official RhinoCommon reference

CreateInscribedPolygon

def CreateInscribedPolygon(circle: Circle, sideCount: int) -> Polyline

Create a regular polygon inscribed in a circle. The vertices of the polygon will be on the circle.

Permanent link · Official RhinoCommon reference

CreateStarPolygon

def CreateStarPolygon(circle: Circle, radius: float, cornerCount: int) -> Polyline

Create a regular star polygon. The star begins at circle.PointAt(0) and the vertices alternate between being on circle and begin on a concentric circle of other_radius.

Permanent link · Official RhinoCommon reference

DeleteShortSegments

def DeleteShortSegments(self, tolerance: float) -> int

Removes all points that are closer than tolerance to the previous point. Start and end points are left intact.

Permanent link · Official RhinoCommon reference

Duplicate

def Duplicate(self) -> Polyline

Returns a deep copy of this polyline instance.

Permanent link · Official RhinoCommon reference

GetSegments

def GetSegments(self) -> Sequence[Line]

Constructs an array of line segments that make up the entire polyline.

Permanent link · Official RhinoCommon reference

IsClosedWithinTolerance

def IsClosedWithinTolerance(self, tolerance: float) -> bool

Test a polyline to see if it is closed.

Permanent link · Official RhinoCommon reference

IsConvexLoop

def IsConvexLoop(self, strictlyConvex: bool) -> bool

Determines if a polyline is convex.

Permanent link · Official RhinoCommon reference

MergeColinearSegments

def MergeColinearSegments(self, angleTolerance: float, includeSeam: bool) -> int

Merge co-linear consecutive segments in a polyline. This method will automatically remove any zero-length segments as well.

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, t: float) -> Point3d

Polyline parameters combine a segment index with a local segment fraction.

Segments of different lengths each occupy a parameter interval of length one. Use length-based sampling for uniform physical spacing.

Permanent link · Official RhinoCommon reference

ReduceSegments

def ReduceSegments(self, tolerance: float) -> int

Constructs a reduction of this polyline by recursively removing the least significant segments.

Permanent link · Official RhinoCommon reference

RemoveNearlyEqualSubsequentPoints

def RemoveNearlyEqualSubsequentPoints(self, tolerance: float) -> None

Removes one copy of a point that is equal to the previous or later point, by an absolute tolerance factor.

Permanent link · Official RhinoCommon reference

SegmentAt

def SegmentAt(self, index: int) -> Line

Gets the line segment at the given index.

Permanent link · Official RhinoCommon reference

Smooth

def Smooth(self, amount: float) -> bool

Smoothen the polyline segments by averaging adjacent vertices. Smoothing requires a polyline with exclusively valid vertices.

Permanent link · Official RhinoCommon reference

TangentAt

def TangentAt(self, t: float) -> Vector3d

Gets the unit tangent vector along the polyline at the given parameter. The integer part of the parameter indicates the index of the segment.

Permanent link · Official RhinoCommon reference

ToNurbsCurve

def ToNurbsCurve(self) -> NurbsCurve

Constructs a nurbs curve representation of this polyline.

Permanent link · Official RhinoCommon reference

ToPolylineCurve

def ToPolylineCurve(self) -> PolylineCurve

Constructs a polyline curve representation of this polyline.

Permanent link · Official RhinoCommon reference

TriangulateClosedPolyline

def TriangulateClosedPolyline(self) -> Sequence[MeshFace]

Attempts to create a list of triangles which represent a triangulation of a closed polyline

Permanent link · Official RhinoCommon reference

Trim

def Trim(self, domain: Interval) -> Polyline

Constructs a polyline out of a parameter sub-domain in this curve.

Permanent link · Official RhinoCommon reference

PolylineCurve

10 members
PolylineCurvecurves

PolylineCurve wraps piecewise-linear geometry in the Curve interface and can have its own parameterization.

Use Domain and conversion methods. Do not assume raw Polyline parameters and Curve parameters are interchangeable.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, other: PolylineCurve) -> None
def __init__(self, points: Iterable[Point3d]) -> None

Initializes a new empty polyline curve.

Permanent link · Official RhinoCommon reference

PointCount

def PointCount(self) -> int

Gets the number of points in this polyline.

Permanent link · Official RhinoCommon reference

CreateConvexHull2d

def CreateConvexHull2d(points: Iterable[Point2d]) -> tuple[PolylineCurve, Sequence[int]]

Attempts to create a closed PolylineCurve that is the anti-clockwise planar convex hull of the input points. In addition, the indices of the extremal points among the input points are returned in correct order. Possible duplicates among the input points are taken care of. The input pointsThe indices into the input points such that points[hullIndices[i]] = result[i]. Since the result is a closed polyline if successful, the start/end index is repeated at the beginning and end of the hullIndices. The closed PolylineCurve encompassing the input points, or null if the input points were either too few, or were found to be collinear.

Permanent link · Official RhinoCommon reference

Parameter

def Parameter(self, index: int) -> float

Gets a parameter at a specified index in the polyline curve.

Permanent link · Official RhinoCommon reference

Point

def Point(self, index: int) -> Point3d

Gets a point at a specified index in the polyline curve.

Permanent link · Official RhinoCommon reference

SetArcLengthParameterization

def SetArcLengthParameterization(self, tolerance: float) -> None

Sets the polyline curve to use arc length parameterization for higher quality geometry.

Permanent link · Official RhinoCommon reference

SetParameter

def SetParameter(self, index: int, parameter: float) -> None

Sets a parameter at a specified index in the polyline curve.

Permanent link · Official RhinoCommon reference

SetPoint

def SetPoint(self, index: int, point: Point3d) -> None

Sets a point at a specified index in the polyline curve.

Permanent link · Official RhinoCommon reference

ToArray

def ToArray(self) -> Sequence[Point3d]

Returns the underlying Polyline points as an array.

Permanent link · Official RhinoCommon reference

ToPolyline

def ToPolyline(self) -> Polyline
def ToPolyline(self, mainSegmentCount: int, subSegmentCount: int, maxAngleRadians: float, maxChordLengthRatio: float, maxAspectRatio: float, tolerance: float, minEdgeLength: float, maxEdgeLength: float, keepStartPoint: bool) -> PolylineCurve
def ToPolyline(self, mainSegmentCount: int, subSegmentCount: int, maxAngleRadians: float, maxChordLengthRatio: float, maxAspectRatio: float, tolerance: float, minEdgeLength: float, maxEdgeLength: float, keepStartPoint: bool, curveDomain: Interval) -> PolylineCurve
def ToPolyline(self, tolerance: float, angleTolerance: float, minimumLength: float, maximumLength: float) -> PolylineCurve

Returns the underlying Polyline, or points. Interop note: this CLR method group hides or extends a base method in a way Python override checking cannot fully represent.

Permanent link · Official RhinoCommon reference

PreserveEnd

0 members
PreserveEnd

Preserves, or maintains, the shape of the opposite the one being edited.

Permanent link · Official RhinoCommon reference

PreserveIsoCurveMethod

0 members
PreserveIsoCurveMethod

The way the surface iso-lines align with the target

Permanent link · Official RhinoCommon reference

QuadRemeshParameters

9 members
QuadRemeshParameters

Parameters for QuadRemesh method

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

TargetEdgeLength

def TargetEdgeLength(self) -> float

When TargetEdgeLength is greater than 0 TargetQuadCount will be re-computed with the target goal of an approximated edge length based on the area of the input mesh e.g TargetQuadCount = Input mesh Area * sqr(TargetEdgeLength) AdaptiveSize as well as AdaptiveQuadCount will also be ignored;

Permanent link · Official RhinoCommon reference

TargetQuadCount

def TargetQuadCount(self) -> int

The number of quads to try to achieve in the final re-meshed object Note: This value is overridden if TargetEdgeLength > 0

Permanent link · Official RhinoCommon reference

AdaptiveSize

def AdaptiveSize(self) -> float

Larger values results in for quad sizes that adjust to match input curvature. Smaller values results in more uniform quad sizes at the risk of less feature preservation. Range [0 - 100] Note: this value is ignored when TargetEdgeLength > 0

Permanent link · Official RhinoCommon reference

AdaptiveQuadCount

def AdaptiveQuadCount(self) -> bool

Respect the original Target Quad Count value as much as possible. True returns more quads than TargetQuadCount depending on amount of high-curvature areas. Note: this value is ignored when TargetEdgeLength > 0

Permanent link · Official RhinoCommon reference

DetectHardEdges

def DetectHardEdges(self) -> bool

When enabled the hard edges in models will be retained.

Permanent link · Official RhinoCommon reference

GuideCurveInfluence

def GuideCurveInfluence(self) -> int

0 = Approximate 1 = Interpolate Edge Ring 2 = Interpolate Edge Loop This value is ignored if Guide Curves are not supplied

Permanent link · Official RhinoCommon reference

PreserveMeshArrayEdgesMode

def PreserveMeshArrayEdgesMode(self) -> int

0=off, 1=On(Smart), 2=On(Strict) : Mesh array's created from Breps will have their brep face edge boundaries retained. Smart - Small or insignificant input faces are ignored. Strict - All input faces are factored in re-meshed result.

Permanent link · Official RhinoCommon reference

SymmetryAxis

def SymmetryAxis(self) -> QuadRemeshSymmetryAxis

Symmetry axis to use for symmetric re-meshing

Permanent link · Official RhinoCommon reference

QuadRemeshSymmetryAxis

0 members
QuadRemeshSymmetryAxis

Symmetrical meshing axis

Permanent link · Official RhinoCommon reference

Quaternion

43 members
Quaternioninteroprotations

A unit quaternion represents a rotation; q and -q represent the same rotation.

Normalize inputs when needed and maintain sign correspondence across sequences. Euler-angle singularities are avoided, but interpolation still needs a deliberate path convention.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, a: float, b: float, c: float, d: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Zero

Zero: ClassVar[Quaternion]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Identity

Identity: ClassVar[Quaternion]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

I

I: ClassVar[Quaternion]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

J

J: ClassVar[Quaternion]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

K

K: ClassVar[Quaternion]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

A

def A(self) -> float

Gets or sets the real part of the quaternion.

Permanent link · Official RhinoCommon reference

B

def B(self) -> float

Gets or sets the first imaginary coefficient of the quaternion.

Permanent link · Official RhinoCommon reference

C

def C(self) -> float

Gets or sets the second imaginary coefficient of the quaternion.

Permanent link · Official RhinoCommon reference

D

def D(self) -> float

Gets or sets the third imaginary coefficient of the quaternion.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Determines if the four coefficients are valid numbers within RhinoCommon. See Rhino.RhinoMath.IsValidDouble(System.Double).

Permanent link · Official RhinoCommon reference

Conjugate

def Conjugate(self) -> Quaternion

Gets a new quaternion that is the conjugate of this quaternion. This is (a,-b,-c,-d)

Permanent link · Official RhinoCommon reference

Inverse

def Inverse(self) -> Quaternion

Computes a new inverted quaternion, (a/L2, -b/L2, -c/L2, -d/L2), where L2 = length squared = (a*a + b*b + c*c + d*d). This is the multiplicative inverse, i.e., (a,b,c,d)*(a/L2, -b/L2, -c/L2, -d/L2) = (1,0,0,0). If this is the zero quaternion, then the zero quaternion is returned.

Permanent link · Official RhinoCommon reference

Length

def Length(self) -> float

Returns the length or norm of the quaternion.

Permanent link · Official RhinoCommon reference

LengthSquared

def LengthSquared(self) -> float

Gets the result of (a^2 + b^2 + c^2 + d^2).

Permanent link · Official RhinoCommon reference

Vector

def Vector(self) -> Vector3d

The imaginary part of the quaternion (B,C,D)

Permanent link · Official RhinoCommon reference

Scalar

def Scalar(self) -> float

The real (scalar) part of the quaternion This is Rhino.Geometry.Quaternion.A.

Permanent link · Official RhinoCommon reference

IsZero

def IsZero(self) -> bool

true if a, b, c, and d are all zero.

Permanent link · Official RhinoCommon reference

IsScalar

def IsScalar(self) -> bool

true if b, c, and d are all zero.

Permanent link · Official RhinoCommon reference

IsVector

def IsVector(self) -> bool

true if a = 0 and at least one of b, c, or d is not zero.

Permanent link · Official RhinoCommon reference

CreateFromRotationZYX

def CreateFromRotationZYX(yaw: float, pitch: float, roll: float) -> Quaternion

Constructs a quaternion defined by Tait-Byran angles, also loosely known as Euler angles.

Permanent link · Official RhinoCommon reference

CreateFromRotationZYZ

def CreateFromRotationZYZ(alpha: float, beta: float, gamma: float) -> Quaternion

Constructs a quaternion defined by Euler angles.

Permanent link · Official RhinoCommon reference

CrossProduct

def CrossProduct(p: Quaternion, q: Quaternion) -> Quaternion

Computes the vector cross product of p and q = (0,x,y,z), where (x,y,z) = Rhino.Geometry.Vector3d.CrossProduct(Rhino.Geometry.Vector3d,Rhino.Geometry.Vector3d)(p.Rhino.Geometry.Quaternion.Vector,q.Rhino.Geometry.Quaternion.Vector). This is not the same as the quaternion product p*q.

Permanent link · Official RhinoCommon reference

Distance

def Distance(p: Quaternion, q: Quaternion) -> float

Returns the distance or norm of the difference between two quaternions.

Permanent link · Official RhinoCommon reference

DistanceTo

def DistanceTo(self, q: Quaternion) -> float

Computes the distance or norm of the difference between this and another quaternion.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Quaternion, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, other: Quaternion) -> bool
def Equals(self, obj: Any) -> bool

Determines whether this quaternion has the same value of another quaternion.

Permanent link · Official RhinoCommon reference

GetEulerZYZ

def GetEulerZYZ(self) -> tuple[bool, float, float, float]

Find the Euler angles for a rotation transformation.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Gets a non-unique but repeatable hashing code for this quaternion.

Permanent link · Official RhinoCommon reference

GetRotation

GetRotation.Overloads[CLR signature](...)

This output-only overload group requires explicit CLR selection in Rhino 8 Python.NET; a direct no-argument call is ambiguous.

Use Overloads to choose Plane, Transform, or angle-axis outputs. The selector avoids promising a direct call that fails at runtime.

Permanent link · Official RhinoCommon reference

GetYawPitchRoll

def GetYawPitchRoll(self) -> tuple[bool, float, float, float]

Find sthe Tait-Byran angles, also loosely called Euler angles, for this quaternion.

Permanent link · Official RhinoCommon reference

Invert

def Invert(self) -> bool

Modifies this quaternion to become (a/L2, -b/L2, -c/L2, -d/L2), where L2 = length squared = (a*a + b*b + c*c + d*d). This is the multiplicative inverse, i.e., (a,b,c,d)*(a/L2, -b/L2, -c/L2, -d/L2) = (1,0,0,0).

Permanent link · Official RhinoCommon reference

Lerp

def Lerp(a: Quaternion, b: Quaternion, t: float) -> Quaternion

Interpolates between two quaternions, using linear interpolation.

Permanent link · Official RhinoCommon reference

MatrixForm

def MatrixForm(self) -> Transform

Returns 4x4 real valued matrix form of the quaternion a b c d -b a -d c -c d a -b -d -c b a which has the same arithmetic properties as the quaternion.

Permanent link · Official RhinoCommon reference

Product

def Product(p: Quaternion, q: Quaternion) -> Quaternion

The quaternion product of p and q. This is the same value as p*q.

Permanent link · Official RhinoCommon reference

Rotate

def Rotate(self, v: Vector3d) -> Vector3d

Rotates a 3d vector. This operation is also called conjugation, because the result is the same as (q.Conjugate()*(0,x,y,x)*q/q.LengthSquared).Vector.

Permanent link · Official RhinoCommon reference

RotateTowards

def RotateTowards(a: Quaternion, b: Quaternion, maxRadians: float) -> Quaternion

Returns the quaternion obtained by rotating a towards b, limiting the rotation by MaxRadians.

Permanent link · Official RhinoCommon reference

Rotation

def Rotation(angle: float, axisOfRotation: Vector3d) -> Quaternion
def Rotation(plane0: Plane, plane1: Plane) -> Quaternion

Returns the unit quaternion cos(angle/2), sin(angle/2)*x, sin(angle/2)*y, sin(angle/2)*z where (x,y,z) is the unit vector parallel to axis. This is the unit quaternion that represents the rotation of angle about axis.

Permanent link · Official RhinoCommon reference

Set

def Set(self, a: float, b: float, c: float, d: float) -> None

Sets all coefficients of the quaternion.

Permanent link · Official RhinoCommon reference

SetRotation

def SetRotation(self, angle: float, axisOfRotation: Vector3d) -> None
def SetRotation(self, plane0: Plane, plane1: Plane) -> None

Sets the quaternion to cos(angle/2), sin(angle/2)*x, sin(angle/2)*y, sin(angle/2)*z where (x,y,z) is the unit vector parallel to axis. This is the unit quaternion that represents the rotation of angle about axis.

Permanent link · Official RhinoCommon reference

Slerp

def Slerp(a: Quaternion, b: Quaternion, t: float) -> Quaternion

Spherical interpolation follows a path on the unit-quaternion sphere.

Check input normalization and equivalent signs. A numeric sequence can appear discontinuous if equivalent q and -q representations alternate unexpectedly.

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str

Returns a string representation of this Quaternion.

Permanent link · Official RhinoCommon reference

Unitize

def Unitize(self) -> bool

Scales the quaternion's coordinates so that a*a + b*b + c*c + d*d = 1.

Permanent link · Official RhinoCommon reference

RadialDimension

21 members
RadialDimension

Represents a dimension of a circular entity that can be measured with radius or diameter.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, dimtype: AnnotationType, plane: Plane, centerpoint: Point3d, radiuspoint: Point3d, dimlinepoint: Point3d) -> None

Constructs a radial dimension.

Permanent link · Official RhinoCommon reference

AnnotationType

def AnnotationType(self) -> AnnotationType

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsDiameterDimension

def IsDiameterDimension(self) -> bool

Gets a value indicating whether the value refers to the diameter, rather than the radius.

Permanent link · Official RhinoCommon reference

CenterPoint

def CenterPoint(self) -> Point2d

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

RadiusPoint

def RadiusPoint(self) -> Point2d

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DimlinePoint

def DimlinePoint(self) -> Point2d

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

KneePoint

def KneePoint(self) -> Point2d

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

LeaderTextHorizontalAlignment

def LeaderTextHorizontalAlignment(self) -> Any

Gets or sets the horizontal alignment of the radial dimension's text

Permanent link · Official RhinoCommon reference

LeaderArrowType

def LeaderArrowType(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

LeaderArrowSize

def LeaderArrowSize(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

LeaderArrowBlockId

def LeaderArrowBlockId(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

LeaderCurveStyle

def LeaderCurveStyle(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

TextOrientation

def TextOrientation(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

TextLocation

def TextLocation(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

TextAngleType

def TextAngleType(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AdjustFromPoints

def AdjustFromPoints(self, plane: Plane, centerpoint: Point3d, radiuspoint: Point3d, dimlinepoint: Point3d, rotationInPlane: float) -> bool

Update Dimension geometry from point locations

Permanent link · Official RhinoCommon reference

Create

def Create(dimStyle: DimensionStyle, dimtype: AnnotationType, plane: Plane, centerpoint: Point3d, radiuspoint: Point3d, dimlinepoint: Point3d) -> RadialDimension

Initialize Dimension parameters

Permanent link · Official RhinoCommon reference

Get3dPoints

def Get3dPoints(self) -> tuple[bool, Point3d, Point3d, Point3d, Point3d]

Get locations of dimension's 3d points

Permanent link · Official RhinoCommon reference

GetDisplayLines

def GetDisplayLines(self, style: DimensionStyle, scale: float) -> tuple[bool, Sequence[Line]]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

GetDistanceDisplayText

def GetDistanceDisplayText(self, unitsystem: UnitSystem, style: DimensionStyle) -> str

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

GetTextRectangle

def GetTextRectangle(self) -> tuple[bool, Sequence[Point3d]]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

RailType

0 members
RailType

Rail types used for creating filleted Brep edges

Permanent link · Official RhinoCommon reference

Ray3d

7 members
Ray3dcurves

A ray uses a position and direction. If the direction is not unit length, its parameter is not a distance.

Enforce the nonnegative parameter condition separately when modeling a physical ray. The evaluation equation can also produce points on its supporting line.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, position: Point3d, direction: Vector3d) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Position

def Position(self) -> Point3d

Gets the starting position of this ray.

Permanent link · Official RhinoCommon reference

Direction

def Direction(self) -> Vector3d

Gets the direction vector of this ray.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Ray3d, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, ray: Ray3d) -> bool
def Equals(self, obj: Any) -> bool

Determines whether the specified Ray3d has the same value as the present ray.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Computes a hashing number that represents the current ray.

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, t: float) -> Point3d

Evaluates a point along the ray.

Permanent link · Official RhinoCommon reference

Rectangle3d

23 members
Rectangle3dcurves

A rectangle uses a plane and two coordinate intervals. Orientation and interval direction affect evaluation.

World-axis bounds can exceed its oriented extent. Retain the local frame for planar dimensions and containment.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, plane: Plane, cornerA: Point3d, cornerB: Point3d) -> None
def __init__(self, plane: Plane, width: float, height: float) -> None
def __init__(self, plane: Plane, width: Interval, height: Interval) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Rectangle3d]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets a value indicating whether or not this is a valid rectangle. A rectangle is considered to be valid when the base plane and both dimensions are valid.

Permanent link · Official RhinoCommon reference

Plane

def Plane(self) -> Plane

Gets or sets the base plane of the rectangle.

Permanent link · Official RhinoCommon reference

X

def X(self) -> Interval

Gets or sets the dimensions of the rectangle along the base plane X-Axis (i.e. the width).

Permanent link · Official RhinoCommon reference

Y

def Y(self) -> Interval

Gets or sets the dimensions of the rectangle along the base plane Y-Axis (i.e. the height).

Permanent link · Official RhinoCommon reference

Width

def Width(self) -> float

Gets the signed width of the rectangle. If the X dimension is decreasing, the width will be negative.

Permanent link · Official RhinoCommon reference

Height

def Height(self) -> float

Gets the signed height of the rectangle. If the Y dimension is decreasing, the height will be negative.

Permanent link · Official RhinoCommon reference

Area

def Area(self) -> float

Gets the unsigned Area of the rectangle.

Permanent link · Official RhinoCommon reference

Circumference

def Circumference(self) -> float

Gets the circumference of the rectangle.

Permanent link · Official RhinoCommon reference

BoundingBox

def BoundingBox(self) -> BoundingBox

Gets the world aligned bounding box for this rectangle.

Permanent link · Official RhinoCommon reference

Center

def Center(self) -> Point3d

Gets the point in the center of the rectangle.

Permanent link · Official RhinoCommon reference

ClosestPoint

def ClosestPoint(self, point: Point3d) -> Point3d
def ClosestPoint(self, point: Point3d, includeInterior: bool) -> Point3d

Gets the point on the rectangle that is closest to a test-point.

Permanent link · Official RhinoCommon reference

Contains

def Contains(self, pt: Point3d) -> PointContainment
def Contains(self, x: float, y: float) -> PointContainment

Determines if a point is included in this rectangle.

Permanent link · Official RhinoCommon reference

Corner

def Corner(self, index: int) -> Point3d

Gets the corner at the given index.

Permanent link · Official RhinoCommon reference

CreateFromPolyline

def CreateFromPolyline(polyline: Iterable[Point3d]) -> Rectangle3d | tuple[Rectangle3d, float, float]

Attempts to create a rectangle from a polyline. This method only works well for polylines that already closely resemble rectangles. If the polyline contains more than four vertices, the least significant ones will be ignored. If the polylines is non-orthogonal, the discrepancies will be averaged away. This method should not be used as a Rectangle fitter.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Rectangle3d, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

MakeIncreasing

def MakeIncreasing(self) -> None

Ensures the X and Y dimensions are increasing or singleton intervals.

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, t: float) -> Point3d
def PointAt(self, x: float, y: float) -> Point3d

Gets a point along the rectangle boundary.

Permanent link · Official RhinoCommon reference

RecenterPlane

def RecenterPlane(self, index: int) -> None
def RecenterPlane(self, origin: Point3d) -> None

Re-centers the base plane on one of the corners.

Permanent link · Official RhinoCommon reference

ToNurbsCurve

def ToNurbsCurve(self) -> NurbsCurve

Constructs a nurbs curve representation of this rectangle.

Permanent link · Official RhinoCommon reference

ToPolyline

def ToPolyline(self) -> Polyline

Constructs a polyline from this rectangle.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> bool

Transforms this rectangle. Note that rectangles cannot be skewed or tapered.

Permanent link · Official RhinoCommon reference

ReduceMeshParameters

10 members
ReduceMeshParameters

Parameters for Reduce method

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

Constructs a polygon reduction parameter object with default values. Users of this class should not rely on default values to stay constant across service releases.

Permanent link · Official RhinoCommon reference

DesiredPolygonCount

def DesiredPolygonCount(self) -> int

Desired or target number of faces

Permanent link · Official RhinoCommon reference

AllowDistortion

def AllowDistortion(self) -> bool

If true, faces are removed until Rhino.Geometry.ReduceMeshParameters.DesiredPolygonCount is reached, distorting the shape as needed. If false, only flat (coplanar) regions are simplified, which leaves the shape unchanged and ignores Rhino.Geometry.ReduceMeshParameters.DesiredPolygonCount.

Permanent link · Official RhinoCommon reference

Accuracy

def Accuracy(self) -> int

Integer from 1 to 10 telling how accurate reduction algorithm to use. Greater number gives more accurate results

Permanent link · Official RhinoCommon reference

NormalizeMeshSize

def NormalizeMeshSize(self) -> bool

If true mesh is fitted to an axis aligned unit cube until reduction is complete

Permanent link · Official RhinoCommon reference

Error

def Error(self) -> str

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

FaceTags

def FaceTags(self) -> Sequence[int]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

LockedComponents

def LockedComponents(self) -> Sequence[ComponentIndex]

List of topological mesh vertices and mesh vertices that will not be moved or deleted in reduction process. Each mesh vertex will lock the corresponding topological mesh vertex. In other words it is not possible to have a locked and non-locked mesh vertex at the same location.

Permanent link · Official RhinoCommon reference

CancelToken

def CancelToken(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ProgressReporter

def ProgressReporter(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

RefitTrimKnotMode

0 members
RefitTrimKnotMode

The mode for adding kinots to the surface for fitting

Permanent link · Official RhinoCommon reference

RefitTrimSectionMode

0 members
RefitTrimSectionMode

The mode for dividing the surface into sections

Permanent link · Official RhinoCommon reference

RegionContainment

0 members
RegionContainment

Defines enumerated values for closed curve/closed curve relationships.

Permanent link · Official RhinoCommon reference

RevSurface

10 members
RevSurfacesurfaces

A surface of revolution rotates a profile around an axis through an angular range.

The seam and poles need care in parameter-based algorithms. A profile meeting the axis can create singular regions.

Permanent link · Official RhinoCommon reference

Curve

def Curve(self) -> Curve

Gets the revolute curve.

Permanent link · Official RhinoCommon reference

Axis

def Axis(self) -> Line

Gets the axis of revolution.

Permanent link · Official RhinoCommon reference

Angle

def Angle(self) -> Interval

Gets the start and end angles of revolution in radians. The interval angle must be increasing and satisfy RhinoMath.ZeroTolerance < Angle.Length<= 2.0 * System.Math.PI.

Permanent link · Official RhinoCommon reference

Interval

def Interval(self) -> Interval

Interval specifies the parameterization for the angular parameter. Interval must be an increasing interval. The parameter Interval[0] corresponds to Angle[0] and the parameter Interval[1] corresponds to Angle[1].

Permanent link · Official RhinoCommon reference

IsTransposed

def IsTransposed(self) -> bool

If false, the "u" parameter is the angle parameter and the "v" parameter is the curve parameter. If true, the "u" parameter is the curve parameter and the "v" parameter is the angle parameter.

Permanent link · Official RhinoCommon reference

Create

def Create(revoluteCurve: Curve, axisOfRevolution: Line) -> RevSurface
def Create(revoluteCurve: Curve, axisOfRevolution: Line, startAngleRadians: float, endAngleRadians: float) -> RevSurface
def Create(revoluteLine: Line, axisOfRevolution: Line) -> RevSurface
def Create(revoluteLine: Line, axisOfRevolution: Line, startAngleRadians: float, endAngleRadians: float) -> RevSurface
def Create(revolutePolyline: Polyline, axisOfRevolution: Line) -> RevSurface
def Create(revolutePolyline: Polyline, axisOfRevolution: Line, startAngleRadians: float, endAngleRadians: float) -> RevSurface

Constructs a new surface of revolution from a generatrix curve and an axis.

Permanent link · Official RhinoCommon reference

CreateFromCone

def CreateFromCone(cone: Cone) -> RevSurface

Constructs a new surface of revolution from the values of a cone.

Permanent link · Official RhinoCommon reference

CreateFromCylinder

def CreateFromCylinder(cylinder: Cylinder) -> RevSurface

Constructs a new surface of revolution from the values of a cylinder.

Permanent link · Official RhinoCommon reference

CreateFromSphere

def CreateFromSphere(sphere: Sphere) -> RevSurface

Constructs a new surface of revolution from the values of a sphere.

Permanent link · Official RhinoCommon reference

CreateFromTorus

def CreateFromTorus(torus: Torus) -> RevSurface

Constructs a new surface of revolution from the values of a torus.

Permanent link · Official RhinoCommon reference

RibbonOffsetParameters

10 members
RibbonOffsetParameters

Advanced parameters for RibbonOffset Parameters mimic the RibbonOffset Command.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

OffsetDistance

def OffsetDistance(self) -> float

Offset curve distance from input curve.

Permanent link · Official RhinoCommon reference

OffsetLocation

def OffsetLocation(self) -> Point3d

Inside or Outside point location

Permanent link · Official RhinoCommon reference

OffsetTolerance

def OffsetTolerance(self) -> float

Used to determine self-intersections of offset curve, not offset error.

Permanent link · Official RhinoCommon reference

OffsetPlaneVector3d

def OffsetPlaneVector3d(self) -> Vector3d

A vector that indicates the normal of the plane in which the offset will occur. This vector is typically similar to a logical extrude direction for the closed input curve.

Permanent link · Official RhinoCommon reference

BlendRadius

def BlendRadius(self) -> float

Positive, typically the same as distance. When the offset results in a self-intersection that gets trimmed off at a kink, the kink will be blended out using this radius.

Permanent link · Official RhinoCommon reference

RebuildPointCount

def RebuildPointCount(self) -> int

Rebuild offset curve with defined number of control points 0 for disabled

Permanent link · Official RhinoCommon reference

RefitTolerance

def RefitTolerance(self) -> float

Refit the offset curve to a specified tolerance 0 for disabled

Permanent link · Official RhinoCommon reference

AlignCrossSections

def AlignCrossSections(self) -> bool

When false: cross section slashes between input and output curve are located at the ends of ruled spans. When true: cross section slashes between input and output curve are located at the mid points of ruled spans and blends.

Permanent link · Official RhinoCommon reference

RibbonSurfaceGenerationMethod

def RibbonSurfaceGenerationMethod(self) -> RibbonOffsetSurfaceMethod

0 - no surfaces will be created, curves only 1 - Simple Sweep 2 2 - Sweep 2 mixed with NetworkSrf corners

Permanent link · Official RhinoCommon reference

RibbonOffsetSurfaceMethod

0 members
RibbonOffsetSurfaceMethod

Enum for RibbonOffset surface generation

Permanent link · Official RhinoCommon reference

RTree

15 members
RTreespatial-index

A spatial index prunes candidates using bounding regions. Perform an exact geometric test on candidates when the query requires an exact intersection or distance.

An index accelerates candidate selection, not the exact geometry operation. Keep inserted bounds and identifiers synchronized with the source data.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

Initializes a new, empty instance of the tree.

Permanent link · Official RhinoCommon reference

Count

def Count(self) -> int

Gets the number of items in this tree.

Permanent link · Official RhinoCommon reference

Clear

def Clear(self) -> None

Removes all elements.

Permanent link · Official RhinoCommon reference

CreateFromPointArray

def CreateFromPointArray(points: Iterable[Point3d]) -> RTree

Constructs a new tree with an element for each point cloud point.

Permanent link · Official RhinoCommon reference

CreateMeshFaceTree

def CreateMeshFaceTree(mesh: Mesh) -> RTree

Constructs a new tree with an element for each face in the mesh. The element id is set to the index of the face.

Permanent link · Official RhinoCommon reference

CreatePointCloudTree

def CreatePointCloudTree(cloud: PointCloud) -> RTree

Constructs a new tree with an element for each point cloud point.

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

Insert

def Insert(self, box: BoundingBox, elementId: int) -> bool
def Insert(self, point: Point2d, elementId: int) -> bool
def Insert(self, point: Point3d, elementId: int) -> bool
def Insert(self, box: BoundingBox, elementId: Any) -> bool
def Insert(self, point: Point2d, elementId: Any) -> bool
def Insert(self, point: Point3d, elementId: Any) -> bool

Identifiers are assigned by the application. Keep a mapping to source geometry or records.

The tree stores a spatial proxy instead of owning a model object. Update entries when geometry bounds or identity change.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
tree = rg.RTree()
try:
    tree.Insert(rg.Point3d(1, 2, 3), 42)
    assert tree.Count == 1
finally:
    tree.Dispose()

Permanent link · Official RhinoCommon reference

Point3dClosestPoints

def Point3dClosestPoints(hayPoints: Iterable[Point3d], needlePts: Iterable[Point3d], limitDistance: float) -> Sequence[Sequence[int]]

Finds the point in a list of 3D points that is closest to a test point.

Permanent link · Official RhinoCommon reference

Point3dKNeighbors

def Point3dKNeighbors(hayPoints: Iterable[Point3d], needlePts: Iterable[Point3d], amount: int) -> Sequence[Sequence[int]]

Finds a certain amount of points in a list of 3D points that are the k-closest to a test point.

Permanent link · Official RhinoCommon reference

PointCloudClosestPoints

def PointCloudClosestPoints(pointcloud: PointCloud, needlePts: Iterable[Point3d], limitDistance: float) -> Sequence[Sequence[int]]

Finds the point in a list of 3D points that is closest to a test point.

Permanent link · Official RhinoCommon reference

PointCloudKNeighbors

def PointCloudKNeighbors(pointcloud: PointCloud, needlePts: Iterable[Point3d], amount: int) -> Sequence[Sequence[int]]

Finds a certain amount of points in a list of 3D points that are the k-closest to a test point.

Permanent link · Official RhinoCommon reference

Remove

def Remove(self, box: BoundingBox, elementId: int) -> bool
def Remove(self, point: Point2d, elementId: int) -> bool
def Remove(self, point: Point3d, elementId: int) -> bool
def Remove(self, box: BoundingBox, elementId: Any) -> bool
def Remove(self, point: Point3d, elementId: Any) -> bool

Removes an element from the tree.

Permanent link · Official RhinoCommon reference

Search

def Search(self, box: BoundingBox, callback: Any) -> bool
def Search(self, sphere: Sphere, callback: Any) -> bool
def Search(self, box: BoundingBox, callback: Any, tag: Any) -> bool
def Search(self, sphere: Sphere, callback: Any, tag: Any) -> bool

Spatial search yields candidates based on stored bounding regions. Follow it with the exact geometric predicate.

Keep bounds synchronized when geometry moves. A stale index can miss valid hits even if the final exact test is correct.

Permanent link · Official RhinoCommon reference

SearchOverlaps

def SearchOverlaps(treeA: RTree, treeB: RTree, tolerance: float, callback: Any) -> bool

Searches two R-trees for all pairs elements whose bounding boxes overlap.

Permanent link · Official RhinoCommon reference

RTreeEventArgs

8 members
RTreeEventArgsspatial-index

Callback identifiers refer to inserted entries according to the application's mapping.

Do not assume an entry ID is a Rhino document identifier. The meaning of an ID comes from the insertion contract.

Permanent link · Official RhinoCommon reference

Id

def Id(self) -> int

Gets the identifier of the found item.

Permanent link · Official RhinoCommon reference

IdPtr

def IdPtr(self) -> Any

Gets the identifier pointer of the found item.

Permanent link · Official RhinoCommon reference

Cancel

def Cancel(self) -> bool

Gets or sets a value that determines if the search should be conducted farther.

Permanent link · Official RhinoCommon reference

IdB

def IdB(self) -> int

If search is using two r-trees, IdB is element b in the search.

Permanent link · Official RhinoCommon reference

IdBPtr

def IdBPtr(self) -> Any

If search is using two r-trees, IdB is the element b pointer in the search.

Permanent link · Official RhinoCommon reference

Tag

def Tag(self) -> Any

Gets or sets an arbitrary object that can be attached to this event args. This object will "stick" through a single search and can represent user-defined state.

Permanent link · Official RhinoCommon reference

SearchSphere

def SearchSphere(self) -> Sphere

Sphere bounds used during a search. You can modify the sphere in a search callback to help reduce the bounds to search.

Permanent link · Official RhinoCommon reference

SearchBoundingBox

def SearchBoundingBox(self) -> BoundingBox

Bounding box bounds used during a search. You may modify the box in a search callback to help reduce the bounds to search.

Permanent link · Official RhinoCommon reference

ShrinkWrapParameters

7 members
ShrinkWrapParameters

Parameters for ShrinkWrap method

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

TargetEdgeLength

def TargetEdgeLength(self) -> float

The desired target edge length in document units Smaller values equal more mesh resolution at the expense of larger mesh sizes

Permanent link · Official RhinoCommon reference

Offset

def Offset(self) -> float

Distance to offset outward or inward

Permanent link · Official RhinoCommon reference

SmoothingIterations

def SmoothingIterations(self) -> int

Number of times to apply smoothing

Permanent link · Official RhinoCommon reference

FillHolesInInputObjects

def FillHolesInInputObjects(self) -> bool

Any input meshes will have "Fill Holes" applied to them before volume creation This value is ignored when input objects are Point Clouds

Permanent link · Official RhinoCommon reference

PolygonOptimization

def PolygonOptimization(self) -> int

0 - 100 the percentage of optimization desired. Polygons will be reduced in areas of lower curvature Lower values result in better feature preservation at the cost of more polygons

Permanent link · Official RhinoCommon reference

InflateVerticesAndPoints

def InflateVerticesAndPoints(self) -> bool

Inflate mesh vertices, points and point clouds Mesh vertices will be inflated as though the mesh were a point cloud

Permanent link · Official RhinoCommon reference

ShutLiningCurveInfo

8 members
ShutLiningCurveInfo

Contains shutlining curve information. This is used in Rhino.Geometry.Mesh.WithShutLining(System.Boolean,System.Double,System.Collections.Generic.IEnumerable{Rhino.Geometry.ShutLiningCurveInfo}).

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, curve: Curve, radius: float, profile: int, pull: bool, isBump: bool, curveIntervals: Iterable[Interval]=..., enabled: bool=...) -> None

Creates a new instance of the ShutLining curve information class.

Permanent link · Official RhinoCommon reference

Curve

def Curve(self) -> Curve

The profile curve.

Permanent link · Official RhinoCommon reference

Enabled

def Enabled(self) -> bool

If true, this curve is active.

Permanent link · Official RhinoCommon reference

Radius

def Radius(self) -> float

The profile radius.

Permanent link · Official RhinoCommon reference

Profile

def Profile(self) -> int

>The profile type.

Permanent link · Official RhinoCommon reference

Pull

def Pull(self) -> bool

True if the curve should be pulled.

Permanent link · Official RhinoCommon reference

IsBump

def IsBump(self) -> bool

True if profile constitutes a bump. See Rhino's Help for more information.

Permanent link · Official RhinoCommon reference

CurveIntervals

def CurveIntervals(self) -> Any

The parts of the curve to use as profiles.

Permanent link · Official RhinoCommon reference

Silhouette

5 members
Silhouette

Information about silhouette curves that are generated from geometry (surfaces, brep faces, meshes)

Permanent link · Official RhinoCommon reference

SilhouetteType

def SilhouetteType(self) -> SilhouetteType

Gets the type of this silhouette curve.

Permanent link · Official RhinoCommon reference

GeometryComponentIndex

def GeometryComponentIndex(self) -> ComponentIndex

Gets the component index corresponding with this silhouette curve. This field is only set when the entire silhouette curve is part of some geometry component.

Permanent link · Official RhinoCommon reference

Curve

def Curve(self) -> Curve

3D curve representing the shape of the silhouette.

Permanent link · Official RhinoCommon reference

Compute

def Compute(geometry: GeometryBase, silhouetteType: SilhouetteType, parallelCameraDirection: Vector3d, tolerance: float, angleToleranceRadians: float) -> Sequence[Silhouette]
def Compute(geometry: GeometryBase, silhouetteType: SilhouetteType, perspectiveCameraLocation: Point3d, tolerance: float, angleToleranceRadians: float) -> Sequence[Silhouette]
def Compute(geometry: GeometryBase, silhouetteType: SilhouetteType, viewport: ViewportInfo, tolerance: float, angleToleranceRadians: float) -> Sequence[Silhouette]
def Compute(geometry: GeometryBase, silhouetteType: SilhouetteType, parallelCameraDirection: Vector3d, tolerance: float, angleToleranceRadians: float, clippingPlanes: Iterable[Plane], cancelToken: Any) -> Sequence[Silhouette]
def Compute(geometry: GeometryBase, silhouetteType: SilhouetteType, perspectiveCameraLocation: Point3d, tolerance: float, angleToleranceRadians: float, clippingPlanes: Iterable[Plane], cancelToken: Any) -> Sequence[Silhouette]
def Compute(geometry: GeometryBase, silhouetteType: SilhouetteType, viewport: ViewportInfo, tolerance: float, angleToleranceRadians: float, clippingPlanes: Iterable[Plane], cancelToken: Any) -> Sequence[Silhouette]

Compute silhouettes of a shape for a parallel projection.

Permanent link · Official RhinoCommon reference

ComputeDraftCurve

def ComputeDraftCurve(geometry: GeometryBase, draftAngle: float, pullDirection: Vector3d, tolerance: float, angleToleranceRadians: float) -> Sequence[Silhouette]
def ComputeDraftCurve(geometry: GeometryBase, draftAngle: float, pullDirection: Vector3d, tolerance: float, angleToleranceRadians: float, cancelToken: Any) -> Sequence[Silhouette]

Computes draft curve silhouettes of a shape.

Permanent link · Official RhinoCommon reference

SilhouetteType

0 members
SilhouetteType

Enumerates the different types of silhouettes and their origins.

Permanent link · Official RhinoCommon reference

SmoothingCoordinateSystem

0 members
SmoothingCoordinateSystem

The direction of the smoothing used by Curve, Surface, and Mesh Smooth.

Permanent link · Official RhinoCommon reference

SpaceMorph

6 members
SpaceMorphtransforms

A nonlinear space morph differs from one global affine transform and can alter representation quality.

Inspect tolerance and structural-preservation settings. Nonlinear deformation generally changes lengths and angles.

Permanent link · Official RhinoCommon reference

Tolerance

def Tolerance(self) -> float

The desired accuracy of the morph. This value is primarily used for deforming surfaces and breps. The default is 0.0 and any value <= 0.0 is ignored by morphing functions. The Tolerance value does not affect the way meshes and points are morphed.

Permanent link · Official RhinoCommon reference

QuickPreview

def QuickPreview(self) -> bool

true if the morph should be done as quickly as possible because the result is being used for some type of dynamic preview. If QuickPreview is true, the tolerance may be ignored. The QuickPreview value does not affect the way meshes and points are morphed. The default is false.

Permanent link · Official RhinoCommon reference

PreserveStructure

def PreserveStructure(self) -> bool

true if the morph should be done in a way that preserves the structure of the geometry. In particular, for NURBS objects, true means that only the control points are moved. The PreserveStructure value does not affect the way meshes and points are morphed. The default is false.

Permanent link · Official RhinoCommon reference

IsMorphable

def IsMorphable(geometry: GeometryBase) -> bool

true if the geometry can be morphed by calling SpaceMorph.Morph(geometry)

Permanent link · Official RhinoCommon reference

Morph

def Morph(self, geometry: GeometryBase) -> bool
def Morph(self, plane: Plane) -> tuple[bool, Plane]

Apply the space morph to geometry.

Permanent link · Official RhinoCommon reference

MorphPoint

def MorphPoint(self, point: Point3d) -> Point3d

Morphs an Euclidean point. This method is abstract.

Permanent link · Official RhinoCommon reference

Sphere

27 members
Sphereanglessurfaces

Angular sphere coordinates have singularities at the poles and do not give equal-area samples.

Equal longitude-latitude increments yield uneven spatial density. Use area-aware sampling for integration or unbiased coverage.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, center: Point3d, radius: float) -> None
def __init__(self, equatorialPlane: Plane, radius: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Sphere]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets a value that indicates whether the sphere is valid.

Permanent link · Official RhinoCommon reference

BoundingBox

def BoundingBox(self) -> BoundingBox

Gets the world aligned bounding box for this Sphere. If the Sphere is Invalid, an empty box is returned.

Permanent link · Official RhinoCommon reference

Diameter

def Diameter(self) -> float

Gets or sets the diameter for this sphere.

Permanent link · Official RhinoCommon reference

Radius

def Radius(self) -> float

Gets or sets the Radius for this sphere.

Permanent link · Official RhinoCommon reference

EquitorialPlane

def EquitorialPlane(self) -> Plane

Gets or sets the Equatorial plane for this sphere.

Permanent link · Official RhinoCommon reference

EquatorialPlane

def EquatorialPlane(self) -> Plane

Gets or sets the Equatorial plane for this sphere.

Permanent link · Official RhinoCommon reference

Center

def Center(self) -> Point3d

Gets or sets the center point of the sphere.

Permanent link · Official RhinoCommon reference

NorthPole

def NorthPole(self) -> Point3d

Gets the point at the North Pole of the sphere. This is the parameterization singularity that can be obtained, at V value +Math.Pi/2.

Permanent link · Official RhinoCommon reference

SouthPole

def SouthPole(self) -> Point3d

Gets the point at the South Pole of the sphere. This is the parameterization singularity that can be obtained, at V value -Math.Pi/2.

Permanent link · Official RhinoCommon reference

ClosestParameter

def ClosestParameter(self, testPoint: Point3d) -> tuple[bool, float, float]

Finds the angle parameters on this sphere that are closest to a test point.

Permanent link · Official RhinoCommon reference

ClosestPoint

def ClosestPoint(self, testPoint: Point3d) -> Point3d

Returns point on sphere that is closest to given point.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Sphere, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

FitSphereToPoints

def FitSphereToPoints(points: Iterable[Point3d]) -> Sphere

Attempts to fit a sphere to a collection of points.

Permanent link · Official RhinoCommon reference

LatitudeDegrees

def LatitudeDegrees(self, degrees: float) -> Circle

Computes the parallel at a specific latitude angle. The angle is specified in degrees.

Permanent link · Official RhinoCommon reference

LatitudeRadians

def LatitudeRadians(self, radians: float) -> Circle

Computes the parallel at a specific latitude angle. The angle is specified in radians.

Permanent link · Official RhinoCommon reference

LongitudeDegrees

def LongitudeDegrees(self, degrees: float) -> Circle

Computes the meridian at a specific longitude angle. The angle is specified in degrees.

Permanent link · Official RhinoCommon reference

LongitudeRadians

def LongitudeRadians(self, radians: float) -> Circle

Computes the meridian at a specific longitude angle. The angle is specified in radians.

Permanent link · Official RhinoCommon reference

NormalAt

def NormalAt(self, longitudeRadians: float, latitudeRadians: float) -> Vector3d

Computes the normal at a specific angular location on the sphere.

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, longitudeRadians: float, latitudeRadians: float) -> Point3d

Longitude and latitude inputs are in radians. Equal angular steps do not yield equal-area sampling.

Near a pole, longitude changes cause little spatial movement. Avoid assigning equal integration weights to an uncorrected latitude-longitude grid.

Permanent link · Official RhinoCommon reference

Rotate

def Rotate(self, angleRadians: float, axisOfRotation: Vector3d) -> bool
def Rotate(self, angleRadians: float, axisOfRotation: Vector3d, centerOfRotation: Point3d) -> bool
def Rotate(self, sinAngle: float, cosAngle: float, axisOfRotation: Vector3d) -> bool
def Rotate(self, sinAngle: float, cosAngle: float, axisOfRotation: Vector3d, centerOfRotation: Point3d) -> bool

Rotates the sphere about the center point.

Permanent link · Official RhinoCommon reference

ToBrep

def ToBrep(self) -> Brep

Converts this sphere is it Brep representation

Permanent link · Official RhinoCommon reference

ToNurbsSurface

def ToNurbsSurface(self) -> NurbsSurface

Converts this sphere to its NurbsSurface representation. This is synonymous with calling NurbsSurface.CreateFromSphere().

Permanent link · Official RhinoCommon reference

ToRevSurface

def ToRevSurface(self) -> RevSurface

Converts this Sphere to a RevSurface representation. This is synonymous with calling RevSurface.CreateFromSphere().

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> bool

Transforms this sphere. Note that non-similarity preserving transformations cannot be applied to a sphere as that would result in an ellipsoid.

Permanent link · Official RhinoCommon reference

Translate

def Translate(self, delta: Vector3d) -> bool

Moves this sphere along a motion vector.

Permanent link · Official RhinoCommon reference

SquishDeformation

0 members
SquishDeformation

The types of deformation allowed in the squish process

Permanent link · Official RhinoCommon reference

Squisher

16 members
Squishersurfaces

Squishing flattens geometry through a distortion model. It does not guarantee preservation of both area and length.

Choose constraints according to material and fabrication needs, then measure stretch and compression. Success alone does not prove distortion-free development.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

constructs a squisher with default parameters

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

Get2dMesh

def Get2dMesh(self) -> Mesh

Get the 2d mesh that results from the squish operation

Permanent link · Official RhinoCommon reference

Get3dMesh

def Get3dMesh(self) -> Mesh

Get the 3d mesh that was used for squish operation

Permanent link · Official RhinoCommon reference

GetAreaConstrainedTrianglesIndices

def GetAreaConstrainedTrianglesIndices(self) -> Sequence[MeshFace]

Gets mesh vertex indices for the triangular faces that were constrained during the squish. Indices can be used in both the 2d and 3d mesh vertices arrays.

Permanent link · Official RhinoCommon reference

GetLengthConstrained2dLines

def GetLengthConstrained2dLines(self) -> Sequence[Line]

Gets lines at the position of the mesh edges and diagonals that were constrained during the squish, in the 2d mesh. The line at any index here corresponds to the same line in GetLengthConstrained3dLines.

Permanent link · Official RhinoCommon reference

GetLengthConstrained3dLines

def GetLengthConstrained3dLines(self) -> Sequence[Line]

Gets lines at the position of the mesh edges and diagonals that were constrained during the squish, in the 3d mesh. The line at any index here corresponds to the same line in GetLengthConstrained2dLines.

Permanent link · Official RhinoCommon reference

GetMesh2dEdges

def GetMesh2dEdges(self) -> Sequence[Line]

Gets lines at the position of the mesh edges and diagonals that were constrained during the squish, in the 2d mesh. The line at any index here corresponds to the same line in GetLengthConstrained3dLines.

Permanent link · Official RhinoCommon reference

GetMesh3dEdges

def GetMesh3dEdges(self) -> Sequence[Line]

Gets lines at the position of the mesh edges and diagonals that were constrained during the squish, in the 3d mesh. The line at any index here corresponds to the same line in GetLengthConstrained2dLines.

Permanent link · Official RhinoCommon reference

Is2dPatternSquished

def Is2dPatternSquished(geometry: GeometryBase) -> bool

Returns true if the input geometry was the result of a squish operation

Permanent link · Official RhinoCommon reference

SquishBack2dMarks

def SquishBack2dMarks(squishedGeometry: GeometryBase, marks: Iterable[GeometryBase]) -> Sequence[GeometryBase]

Maps 2D geometry from the squished surface or mesh back to the original 3D surface or mesh

Permanent link · Official RhinoCommon reference

SquishCurve

def SquishCurve(self, curve: Curve) -> PolylineCurve

Maps a curve on or near a previously squished 3d surface to the resulting 2d surface

Permanent link · Official RhinoCommon reference

SquishMesh

def SquishMesh(self, sp: SquishParameters, mesh3d: Mesh) -> Mesh
def SquishMesh(self, sp: SquishParameters, mesh3d: Mesh, marks: Iterable[GeometryBase], squished_marks_out: Iterable[GeometryBase]) -> Mesh

Squish the given mesh into a flat mesh

Permanent link · Official RhinoCommon reference

SquishPoint

def SquishPoint(self, point: Point3d) -> tuple[bool, Point3d]

Maps a point on or near the previously squished 3d surface to the flattened surface

Permanent link · Official RhinoCommon reference

SquishSurface

def SquishSurface(self, sp: SquishParameters, surface: Surface) -> Brep
def SquishSurface(self, sp: SquishParameters, surface: Surface, marks: Iterable[GeometryBase], squished_marks_out: Iterable[GeometryBase]) -> Brep

Squish the surface into a flat brep

Permanent link · Official RhinoCommon reference

SquishTextDot

def SquishTextDot(self, textDot: TextDot) -> TextDot

Maps a TextDot on or near a previously squished 3d surface to the resulting 2d surface

Permanent link · Official RhinoCommon reference

SquishFlatteningAlgorithm

0 members
SquishFlatteningAlgorithm

Represents the type of flattening to use

Permanent link · Official RhinoCommon reference

SquishParameters

14 members
SquishParameterssurfaces

Flattening parameters assign penalties or constraints to stretching, compression, and boundaries.

These settings describe an approximation. They do not alone define a calibrated physical material simulation.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

Initializes a new instance with default values. Initial values are same as Default.

Permanent link · Official RhinoCommon reference

Default

Default: ClassVar[SquishParameters]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

PreserveTopology

def PreserveTopology(self) -> bool

the mesh has coincident vertices and PreserveTopology is true, then the flattening is based on the mesh's topology and coincident vertices will remain coincident. Otherwise coincident vertices are free to move apart.

Permanent link · Official RhinoCommon reference

SaveMapping

def SaveMapping(self) -> bool

If SaveMapping is true, then ON_SquishMesh() will save extra information on the squished mesh so 3d points and curves near the input mesh can be mapped to the squished mesh and 2d points and curves on the squished mesh can be mapped back to the 3d mesh.

Permanent link · Official RhinoCommon reference

BoundaryStretchConstant

def BoundaryStretchConstant(self) -> float

Spring constant for stretched boundary edges

Permanent link · Official RhinoCommon reference

BoundaryCompressConstant

def BoundaryCompressConstant(self) -> float

Spring constant for compressed boundary edges times the rest length

Permanent link · Official RhinoCommon reference

InteriorStretchConstant

def InteriorStretchConstant(self) -> float

Spring constant for stretched boundary edges times the rest length

Permanent link · Official RhinoCommon reference

InteriorCompressConstant

def InteriorCompressConstant(self) -> float

Spring constant for compressed interior edges times the rest length

Permanent link · Official RhinoCommon reference

AbsoluteLimit

def AbsoluteLimit(self) -> float

If -1.0 <= AnsoluteLimit < 0.0, then an absolute compression limit is applied so that (2d length)/(3d length) >= abs(AbsoluteLimit). In particular, Absolute = -1.0, then no compression is permitted(2d length) >= (3d length). If 0.0 < m_absolute_limit <= 1.0 then an absolute stretching limit is applied so that (2d length)/(3d length) <= 1/abs(AbsoluteLimit). Examples: AbsoluteLimit 1.0: no stretching, (2d length) <= 1.0*(3d length) 0.5: cap on stretching, 0.5*(2d length) <= (3d length) -0.5: cap on compression, (2d length) >= 0.5*(3d length) -1.0: no compression, (2d length) >= 1.0*(3d length)

Permanent link · Official RhinoCommon reference

Algorithm

def Algorithm(self) -> SquishFlatteningAlgorithm

The flattening algorithm to use: Geometric: (scale independent)the "spring" constant is proportional to 1/L^2 and the result is independent of scale. PhysicalStress: (scale dependent) the "spring" constant is proportional to 1/L.

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

GetSpringConstants

def GetSpringConstants(self) -> tuple[bool, float, float]

See if the spring constants could have been set with SetSpringConstants().

Permanent link · Official RhinoCommon reference

SetDeformation

def SetDeformation(self, deformation: SquishDeformation, bPreserveBoundary: bool, boundaryStretchConstant: float, boundaryCompressConstant: float, interiorStretchConstant: float, interiorCompressConstant: float) -> None

Sets the squish deformation characteristics

Permanent link · Official RhinoCommon reference

SetSpringConstants

def SetSpringConstants(self, boundaryBias: float, deformationBias: float) -> None

A simplified interface for setting the Stretch and Compression spring constants

Permanent link · Official RhinoCommon reference

SubD

33 members
SubDsubdivision

The control net and the evaluated subdivision limit surface are distinct. Control vertices usually are not points on that surface.

Creases, corners, and extraordinary vertices alter behavior. Display density changes visualization, while topology and tags determine shape.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

Create a new instance of SubD geometry

Permanent link · Official RhinoCommon reference

Faces

def Faces(self) -> Any

All faces in this SubD

Permanent link · Official RhinoCommon reference

Vertices

def Vertices(self) -> Any

All vertices in this SubD

Permanent link · Official RhinoCommon reference

Edges

def Edges(self) -> Any

All edges in this SubD

Permanent link · Official RhinoCommon reference

IsSolid

def IsSolid(self) -> bool

Test SubD to see if the active level is a solid. A "solid" is a closed oriented manifold, or a closed oriented manifold.

Permanent link · Official RhinoCommon reference

TextureCoordinateType

def TextureCoordinateType(self) -> SubDTextureCoordinateType

Gets the texture cordinate type.

Permanent link · Official RhinoCommon reference

Empty

Empty: ClassVar[SubD]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ClearEvaluationCache

def ClearEvaluationCache(self) -> None

Clear all cached evaluation information (meshes, surface points, bounding boxes, ...) that depends on edge tags, vertex tags, and the location of vertex control points.

Permanent link · Official RhinoCommon reference

ComponentFromComponentIndex

def ComponentFromComponentIndex(self, componentIndex: ComponentIndex) -> SubDComponent

Returns a SubDComponent, either a SubDEdge, SubDFace, or SubDVertex, from a component index.

Permanent link · Official RhinoCommon reference

CopyEvaluationCache

def CopyEvaluationCache(self, src: SubD) -> tuple[bool, SubD]

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

Permanent link · Official RhinoCommon reference

CreateFromCylinder

def CreateFromCylinder(cylinder: Cylinder, circumferenceFaceCount: int, heightFaceCount: int, endCapStyle: SubDEndCapStyle, endCapEdgeTag: SubDEdgeTag, radiusLocation: SubDComponentLocation) -> SubD

Creates a SubD form of a cylinder.

Permanent link · Official RhinoCommon reference

CreateFromLoft

def CreateFromLoft(curves: Iterable[NurbsCurve], closed: bool, addCorners: bool, addCreases: bool, divisions: int) -> SubD

Creates a SubD lofted through shape curves.

Permanent link · Official RhinoCommon reference

CreateFromMesh

def CreateFromMesh(mesh: Mesh) -> SubD
def CreateFromMesh(mesh: Mesh, options: SubDCreationOptions) -> SubD

Create a new SubD from a mesh.

Permanent link · Official RhinoCommon reference

CreateFromSurface

def CreateFromSurface(surface: Surface, method: SubDFromSurfaceMethods, corners: bool) -> SubD

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.

Permanent link · Official RhinoCommon reference

CreateFromSweep

def CreateFromSweep(rail1: NurbsCurve, rail2: NurbsCurve, shapes: Iterable[NurbsCurve], closed: bool, addCorners: bool) -> SubD
def CreateFromSweep(rail1: NurbsCurve, shapes: Iterable[NurbsCurve], closed: bool, addCorners: bool, roadlikeFrame: bool, roadlikeNormal: Vector3d) -> SubD

Fits a SubD through a series of profile curves that define the SubD cross-sections and two curves that defines SubD edges.

Permanent link · Official RhinoCommon reference

CreateGlobeSphere

def CreateGlobeSphere(sphere: Sphere, vertexLocation: SubDComponentLocation, axialFaceCount: int, equatorialFaceCount: int) -> SubD

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.

Permanent link · Official RhinoCommon reference

CreateIcosahedron

def CreateIcosahedron(sphere: Sphere, vertexLocation: SubDComponentLocation) -> SubD

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().

Permanent link · Official RhinoCommon reference

CreateQuadSphere

def CreateQuadSphere(sphere: Sphere, vertexLocation: SubDComponentLocation, quadSubdivisionLevel: int) -> SubD

Creates a SubD sphere made from quad faces.

Permanent link · Official RhinoCommon reference

CreateTriSphere

def CreateTriSphere(sphere: Sphere, vertexLocation: SubDComponentLocation, triSubdivisionLevel: int) -> SubD

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().

Permanent link · Official RhinoCommon reference

DuplicateEdgeCurves

def DuplicateEdgeCurves(self) -> Sequence[Curve]
def DuplicateEdgeCurves(self, boundaryOnly: bool, interiorOnly: bool, smoothOnly: bool, sharpOnly: bool, creaseOnly: bool, clampEnds: bool) -> Sequence[Curve]

Gets Nurbs form of all edges in this SubD, with clamped knots. NB: Does not update the SubD evaluation cache before getting the edges.

Permanent link · Official RhinoCommon reference

Flip

def Flip(self) -> bool

Reverses the orientation of all SubD normals.

Permanent link · Official RhinoCommon reference

InterpolateSurfacePoints

def InterpolateSurfacePoints(self, surfacePoints: Iterable[Point3d]) -> bool
def InterpolateSurfacePoints(self, vertexIndices: Iterable[int], surfacePoints: Iterable[Point3d]) -> bool

Modifies the SubD so that the SubD vertex limit surface points are equal to surface_points[]

Permanent link · Official RhinoCommon reference

JoinSubDs

def JoinSubDs(subdsToJoin: Iterable[SubD], tolerance: float, joinedEdgesAreCreases: bool) -> Sequence[SubD]
def JoinSubDs(subdsToJoin: Iterable[SubD], tolerance: float, joinedEdgesAreCreases: bool, preserveSymmetry: bool) -> Sequence[SubD]

Joins an enumeration of SubDs to form as few as possible resulting SubDs. There may be more than one SubD in the result array.

Permanent link · Official RhinoCommon reference

MergeAllCoplanarFaces

def MergeAllCoplanarFaces(self, tolerance: float) -> bool
def MergeAllCoplanarFaces(self, tolerance: float, angleTolerance: float) -> bool

Merges adjacent coplanar faces into single faces.

Permanent link · Official RhinoCommon reference

Offset

def Offset(self, distance: float, solidify: bool) -> SubD

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.

Permanent link · Official RhinoCommon reference

PackFaces

def PackFaces(self) -> int

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.

Permanent link · Official RhinoCommon reference

SetVertexSurfacePoint

def SetVertexSurfacePoint(self, vertexIndex: int, surfacePoint: Point3d) -> bool

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.

Permanent link · Official RhinoCommon reference

Subdivide

def Subdivide(self) -> bool
def Subdivide(self, count: int) -> bool
def Subdivide(self, faceIndices: Iterable[int]) -> bool

Apply the Catmull-Clark subdivision algorithm and save the results in this SubD.

Permanent link · Official RhinoCommon reference

SurfaceMeshCacheExists

def SurfaceMeshCacheExists(self, bTextureCoordinatesExist: bool, bCurvaturesExist: bool, bColorsExist: bool) -> bool

Checks that a surface mesh evaluation cache exists, and that it has the required options. This cache is used by - Rhino.Geometry.SubDVertex.SurfacePoint, - Rhino.Geometry.SubDEdge.ToNurbsCurve(System.Boolean), and - Rhino.Geometry.Mesh.CreateFromSubD(Rhino.Geometry.SubD,System.Int32).

Permanent link · Official RhinoCommon reference

ToBrep

def ToBrep(self) -> Brep
def ToBrep(self, options: SubDToBrepOptions) -> Brep

Conversion creates a NURBS Brep whose patch structure follows the SubD topology and chosen options.

Inspect seams, face count, and approximation. Brep indices do not directly correspond to the original SubD IDs.

Permanent link · Official RhinoCommon reference

TransformComponents

def TransformComponents(self, components: Iterable[ComponentIndex], xform: Transform, componentLocation: SubDComponentLocation) -> int

Transforms an enumerable of SubD components.

Permanent link · Official RhinoCommon reference

UpdateAllTagsAndSectorCoefficients

def UpdateAllTagsAndSectorCoefficients(self) -> int

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.

Permanent link · Official RhinoCommon reference

UpdateSurfaceMeshCache

def UpdateSurfaceMeshCache(self, lazyUpdate: bool) -> int

Updates limit surface information returned by - Rhino.Geometry.SubDVertex.SurfacePoint, - Rhino.Geometry.SubDEdge.ToNurbsCurve(System.Boolean), and - Rhino.Geometry.Mesh.CreateFromSubD(Rhino.Geometry.SubD,System.Int32). The density of the mesh cache is Rhino.Geometry.SubDDisplayParameters.Default.

Permanent link · Official RhinoCommon reference

SubDAutomaticMeshToSubDContext

0 members
SubDAutomaticMeshToSubDContext

ON_SubD::AutomaticMeshToSubDContext identifies a context where meshes can automatically be converted to subds.

Permanent link · Official RhinoCommon reference

SubDChainType

0 members
SubDChainType

SubD::ChainType specifies what edge and vertex tag tests are used when creating edge chains.

Permanent link · Official RhinoCommon reference

SubDComponent

8 members
SubDComponent

A part of SubD geometry. Common base class for vertices, faces, and edges

Permanent link · Official RhinoCommon reference

Id

def Id(self) -> int

Unique id within the parent SubD for this item

Permanent link · Official RhinoCommon reference

ParentSubD

def ParentSubD(self) -> SubD

SubD that this component belongs to

Permanent link · Official RhinoCommon reference

IsSelected

def IsSelected(self) -> bool

Returns true if the SubD component is selected.

Permanent link · Official RhinoCommon reference

IsHighlighted

def IsHighlighted(self) -> bool

Returns true if the SubD component is highlighted.

Permanent link · Official RhinoCommon reference

IsHidden

def IsHidden(self) -> bool

Returns true if the SubD component is hidden.

Permanent link · Official RhinoCommon reference

IsLocked

def IsLocked(self) -> bool

Returns true if the SubD component is locked.

Permanent link · Official RhinoCommon reference

IsDeleted

def IsDeleted(self) -> bool

Returns true if the SubD component is deleted.

Permanent link · Official RhinoCommon reference

IsDamaged

def IsDamaged(self) -> bool

Returns true if the SubD component is damaged.

Permanent link · Official RhinoCommon reference

SubDComponentLocation

0 members
SubDComponentLocation

The ON_SubDComponentLocation enum is used when an ON_SubD component is referenced and it is important to distinguish between the component's location in the SubD control net and its location in the SubD limit surface.

Permanent link · Official RhinoCommon reference

SubDCreationOptions

15 members
SubDCreationOptions

Options used for creating a SubD

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

Create default options

Permanent link · Official RhinoCommon reference

Smooth

Smooth: ClassVar[SubDCreationOptions]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

InteriorCreases

InteriorCreases: ClassVar[SubDCreationOptions]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ConvexCornersAndInteriorCreases

ConvexCornersAndInteriorCreases: ClassVar[SubDCreationOptions]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ConvexAndConcaveCornersAndInteriorCreases

ConvexAndConcaveCornersAndInteriorCreases: ClassVar[SubDCreationOptions]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

InteriorCreaseTest

def InteriorCreaseTest(self) -> Any

Get or sets the interior crease test option.

Permanent link · Official RhinoCommon reference

ConvexCornerTest

def ConvexCornerTest(self) -> Any

Get or sets the convex corner test option.

Permanent link · Official RhinoCommon reference

TextureCoordinateTest

def TextureCoordinateTest(self) -> Any

Gets or sets the texture coordinate test option.

Permanent link · Official RhinoCommon reference

MaximumConvexCornerEdgeCount

def MaximumConvexCornerEdgeCount(self) -> int

If ConvexCornerTest == ConvexCornerOption.AtMeshCorner, then an input mesh boundary vertex becomes a SubD corner when the number of edges that end at the vertex is <= MaximumConvexCornerEdgeCount edges and the corner angle is <= MaximumConvexCornerAngleRadians.

Permanent link · Official RhinoCommon reference

MaximumConvexCornerAngleRadians

def MaximumConvexCornerAngleRadians(self) -> float

If ConvexCornerTest == ConvexCornerOption.AtMeshCorner, then an input mesh boundary vertex becomes a SubD corner when the number of edges that end at the vertex is <= MaximumConvexCornerEdgeCount edges and the corner angle is <= MaximumConvexCornerAngleRadians.

Permanent link · Official RhinoCommon reference

ConcaveCornerTest

def ConcaveCornerTest(self) -> Any

Get or sets the concave corner test option.

Permanent link · Official RhinoCommon reference

MinimumConcaveCornerAngleRadians

def MinimumConcaveCornerAngleRadians(self) -> float

If ConcaveCornerTest == ConcaveCornerOption.AtMeshCorner, then an input mesh boundary vertex becomes a SubD corner when the number of edges that end at the vertex is >= MinimumConcaveCornerEdgeCount edges and the corner angle is >= MinimumConcaveCornerAngleRadians.

Permanent link · Official RhinoCommon reference

MinimumConcaveCornerEdgeCount

def MinimumConcaveCornerEdgeCount(self) -> int

If ConcaveCornerTest == ConcaveCornerOption.AtMeshCorner, then an input mesh boundary vertex becomes a SubD corner when the number of edges that end at the vertex is >= MinimumConcaveCornerEdgeCount edges and the corner angle is >= MinimumConcaveCornerAngleRadians.

Permanent link · Official RhinoCommon reference

InterpolateMeshVertices

def InterpolateMeshVertices(self) -> bool

If false, input mesh vertex locations will be used to set SubD vertex control net locations. If true, input mesh vertex locations will be used to set SubD vertex limit surface locations.

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Delete unmanaged pointer for this

Permanent link · Official RhinoCommon reference

SubDDisplayParameters

25 members
SubDDisplayParameters

A collection of parameters that are passed to functions that calculate a various representations of SubD objects.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, info: Any, context: Any) -> None

Initializes a new instance with default values.

Permanent link · Official RhinoCommon reference

AdaptiveDisplayMeshQuadMaximum

AdaptiveDisplayMeshQuadMaximum: ClassVar[int]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DisplayDensityIsAdaptive

def DisplayDensityIsAdaptive(self) -> bool

True if the SubD display density setting is adaptive and approximate display mesh quad count is capped at SubDDisplayParameters::AdaptiveDisplayMeshQuadMaximum.

Permanent link · Official RhinoCommon reference

DisplayDensityIsAbsolute

def DisplayDensityIsAbsolute(self) -> bool

True if the SubD display density setting is absolute.

Permanent link · Official RhinoCommon reference

MeshLocation

def MeshLocation(self) -> SubDComponentLocation

The MeshLocation property determines if the mesh is on the SubD's control net or the SubD's surface.

Permanent link · Official RhinoCommon reference

AbsoluteDisplayDensityFromSubD

def AbsoluteDisplayDensityFromSubD(adaptiveSubDDisplayDensity: int, subd: SubD) -> int

Gets absolute SubD display density for subd.

Permanent link · Official RhinoCommon reference

AbsoluteDisplayDensityFromSubDFaceCount

def AbsoluteDisplayDensityFromSubDFaceCount(adaptiveSubDDisplayDensity: int, subDFaceCount: int) -> int

Gets the absolute SubD display density for SubD with subdFaceCount faces.

Permanent link · Official RhinoCommon reference

ClampDisplayDensity

def ClampDisplayDensity(displayDensity: int) -> int

Limits display density to a value useful in user interface code.

Permanent link · Official RhinoCommon reference

Coarse

def Coarse() -> SubDDisplayParameters

Parameters for a course limit surface display mesh. SubD display density = adaptive SubDDisplayParameters.Density.CoarseDensity.

Permanent link · Official RhinoCommon reference

CreateFromAbsoluteDisplayDensity

def CreateFromAbsoluteDisplayDensity(absoluteSubDDisplayDensity: int) -> SubDDisplayParameters

Use of absolute display density is strongly discouraged. SubDs can have a single face or millions of faces. Adaptive display meshing produces more desirable results in almost all cases.

Permanent link · Official RhinoCommon reference

CreateFromDisplayDensity

def CreateFromDisplayDensity(adaptiveSubDDisplayDensity: int) -> SubDDisplayParameters

In most applications, the caller sets the mesh density and leaves the other parameters set to the default values.

Permanent link · Official RhinoCommon reference

CreateFromMeshDensity

def CreateFromMeshDensity(normalizedMeshDensity: float) -> SubDDisplayParameters

This function creates SubDDisplayParameters from a user interface "slider" like Rhino's simple mesh controls.

Permanent link · Official RhinoCommon reference

Default

def Default() -> SubDDisplayParameters

Parameters for the default limit surface display mesh. SubD display density = adaptive SubDDisplayParameters.Density.DefaultDensity.

Permanent link · Official RhinoCommon reference

DisplayDensity

def DisplayDensity(self, subd: SubD) -> int

Gets the absolute display density to use when creating display meshes for SubD. When adaptive reduction is enabled, subd.Faces.Count is used to determine the appropriate display density.

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

Empty

def Empty() -> SubDDisplayParameters

Get an empty SubDDisplayParameters.

Permanent link · Official RhinoCommon reference

ExtraCoarse

def ExtraCoarse() -> SubDDisplayParameters

Parameters for an extra course limit surface display mesh. SubD display density = adaptive SubDDisplayParameters.Density.ExtraCoarseDensity.

Permanent link · Official RhinoCommon reference

ExtraFine

def ExtraFine() -> SubDDisplayParameters

Parameters for an extra fine limit surface display mesh. SubD display density = adaptive SubDDisplayParameters.Density.ExtraFineDensity.

Permanent link · Official RhinoCommon reference

Fine

def Fine() -> SubDDisplayParameters

Parameters for a fine limit surface display mesh. SubD display density = adaptive SubDDisplayParameters.Density.FineDensity.

Permanent link · Official RhinoCommon reference

FromEncodedString

def FromEncodedString(value: str) -> SubDDisplayParameters

Converts encoded serialized string into a MeshingParameters

Permanent link · Official RhinoCommon reference

GetObjectData

def GetObjectData(self, info: Any, context: Any) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Medium

def Medium() -> SubDDisplayParameters

Parameters for a medium limit surface display mesh. SubD display density = adaptive SubDDisplayParameters.Density.MediumDensity.

Permanent link · Official RhinoCommon reference

SetAbsoluteDisplayDensity

def SetAbsoluteDisplayDensity(self, absoluteDisplayDensity: int) -> None

In almast all cases, you are better off using SetAdaptiveDisplayDensity().

Permanent link · Official RhinoCommon reference

SetAdaptiveDisplayDensity

def SetAdaptiveDisplayDensity(self, adaptiveDisplayDensity: int) -> None

Set an adaptive SubD display density that caps display mesh quad count at SubDDisplayParameters.AdaptiveDisplayMeshQuadMaximum.

Permanent link · Official RhinoCommon reference

ToEncodedString

def ToEncodedString(self) -> str

Returns a encoded string that represents the MeshingParameters.

Permanent link · Official RhinoCommon reference

SubDEdge

8 members
SubDEdgesubdivision

A SubD edge connects control vertices and carries smoothness information such as a crease tag.

Its control-net line is an editing aid rather than the evaluated surface edge. Use the appropriate representation for measurements.

Permanent link · Official RhinoCommon reference

FaceCount

def FaceCount(self) -> int

Number of faces for this edge.

Permanent link · Official RhinoCommon reference

ControlNetLine

def ControlNetLine(self) -> Line

Line representing the control net end points.

Permanent link · Official RhinoCommon reference

VertexFrom

def VertexFrom(self) -> SubDVertex

Start vertex for this edge.

Permanent link · Official RhinoCommon reference

VertexTo

def VertexTo(self) -> SubDVertex

End vertex for this edge.

Permanent link · Official RhinoCommon reference

Tag

def Tag(self) -> SubDEdgeTag

identifies the type of subdivision edge.

Permanent link · Official RhinoCommon reference

ComponentIndex

def ComponentIndex(self) -> ComponentIndex

Gets the component index of this edge.

Permanent link · Official RhinoCommon reference

FaceAt

def FaceAt(self, index: int) -> SubDFace

Retrieve a SubDFace from this edge.

Permanent link · Official RhinoCommon reference

ToNurbsCurve

def ToNurbsCurve(self, clampEnds: bool) -> NurbsCurve

Get a cubic, uniform, non-rational, NURBS curve that is on the edge's limit curve.

Permanent link · Official RhinoCommon reference

SubDEdgeTag

0 members
SubDEdgeTag

ON_SubDEdgeTag identifies the type of subdivision edge. Different tags use different subdivision algorithms to calculate the subdivision point.

Permanent link · Official RhinoCommon reference

SubDEdgeType

0 members
SubDEdgeType

ON_SubDEdgeType describes a subdivision edge. ON_SubDEdgeType is typically used when generating text descriptions or filtering edges during selection processes. Do not confuse ON_SubDEdgeType and ON_SubDEdgeTag. The unique types are single bits and suitable for use in bitwise logic.

Permanent link · Official RhinoCommon reference

SubDEndCapStyle

0 members
SubDEndCapStyle

ON_SubDEndCapStyle enumerates the type of end caps functions like ON_SubD::CreateCylinder will create. Use ON_SubDEndCapStyleFromUnsigned(integer value) to convert integer values to an ON_SubDEndCapStyle. Use ON_SubDEndCapStyleToString(end_cap_style) to convert ON_SubDEndCapStyle values to string descriptions.

Permanent link · Official RhinoCommon reference

SubDFace

13 members
SubDFacesubdivision

A control face and its corresponding limit-surface region have different geometric properties.

Use surface points and normals for analysis on the modeled shape. Control-net centers and normals describe the editing structure.

Permanent link · Official RhinoCommon reference

EdgeCount

def EdgeCount(self) -> int

Number of edges for this face. Note that EdgeCount is always the same as VertexCount. Two properties are provided simply for clarity.

Permanent link · Official RhinoCommon reference

VertexCount

def VertexCount(self) -> int

Number of vertices for this face. Note that EdgeCount is always the same as VertexCount. Two properties are provided simply for clarity.

Permanent link · Official RhinoCommon reference

PerFaceColor

def PerFaceColor(self) -> Any

If per-face color is "Empty", then this face does not have a custom color

Permanent link · Official RhinoCommon reference

LimitSurfaceCenterPoint

def LimitSurfaceCenterPoint(self) -> Point3d

Get the limit surface point location at the center of the face

Permanent link · Official RhinoCommon reference

ControlNetCenterPoint

def ControlNetCenterPoint(self) -> Point3d

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.

Permanent link · Official RhinoCommon reference

SurfaceCenterNormal

def SurfaceCenterNormal(self) -> Vector3d

Get the limit surface normal vector at the center of the face.

Permanent link · Official RhinoCommon reference

ControlNetCenterNormal

def ControlNetCenterNormal(self) -> Vector3d

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.

Permanent link · Official RhinoCommon reference

SurfaceCenterFrame

def SurfaceCenterFrame(self) -> Plane

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.

Permanent link · Official RhinoCommon reference

ControlNetCenterFrame

def ControlNetCenterFrame(self) -> Plane

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.

Permanent link · Official RhinoCommon reference

ComponentIndex

def ComponentIndex(self) -> ComponentIndex

Gets the component index of this face.

Permanent link · Official RhinoCommon reference

EdgeAt

def EdgeAt(self, index: int) -> SubDEdge

Get an edge at a given index

Permanent link · Official RhinoCommon reference

EdgeDirectionMatchesFaceOrientation

def EdgeDirectionMatchesFaceOrientation(self, index: int) -> bool

Check if a given edge in this face has the same direction as the face orientation

Permanent link · Official RhinoCommon reference

VertexAt

def VertexAt(self, index: int) -> SubDVertex

Get a vertex that this face uses by index

Permanent link · Official RhinoCommon reference

SubDFriendlyKnotType

0 members
SubDFriendlyKnotType

ON_SubD::SubDFriendlyKnotType identifies the types of subd friendly NURBS knot vectors. SubD friendly NURBS curves and surfacaes are always cubic and nonrational. Any time there is a multiple knot, the 2nd derivative is zero at the corresponding parameter. SubD friendly NURBS curves are either periodic or have zero 2nd derivative at the ends.

Permanent link · Official RhinoCommon reference

SubDFromSurfaceMethods

0 members
SubDFromSurfaceMethods

ON_SubDFromSurfaceParameters::Method are ways to create a SubD from a surface.

Permanent link · Official RhinoCommon reference

SubDHashType

0 members
SubDHashType

ON_SubDHashType used used to specify what type of SubD information is hashed (topology or geometry).

Permanent link · Official RhinoCommon reference

SubDPatchStyle

0 members
SubDPatchStyle

SubD::PatchStyle identifies the style of patch used to fill holes.

Permanent link · Official RhinoCommon reference

SubDSurfaceInterpolator

16 members
SubDSurfaceInterpolator

Interpolate some or all of the vertices limit surface positions in a SubD to specified locations. NB: It is recommended not to use these methods to interpolate more than 1000 vertices. Rhino.Geometry.SubD.SetVertexSurfacePoint(System.UInt32,Rhino.Geometry.Point3d)Rhino.Geometry.SubD.InterpolateSurfacePoints(Rhino.Geometry.Point3d[])Rhino.Geometry.SubD.InterpolateSurfacePoints(System.UInt32[],Rhino.Geometry.Point3d[])Rhino.Geometry.SubDVertex.SurfacePoint

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

Initialize an empty SubDSurfaceInterpolator.

Permanent link · Official RhinoCommon reference

MaximumRecommendedInterpolatedVertexCount

MaximumRecommendedInterpolatedVertexCount: ClassVar[int]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ContextId

def ContextId(self) -> Any

The context assigned id. This id is provided for applications using ON_SubDSurfaceInterpolator. It is not inspected or used in any part of the interpolation setup or calculations.

Permanent link · Official RhinoCommon reference

Clear

def Clear(self) -> None

Destroys the information needed to solve the interpolation.

Permanent link · Official RhinoCommon reference

CreateFromMarkedVertices

def CreateFromMarkedVertices(subd: SubD, interpolatedVerticesMark: bool) -> tuple[SubDSurfaceInterpolator, int]

Create an interpolator where all the marked vertices (unmarked if interpolatedVerticesMark is false) in the SubD are free vertices in the linear system used for interpolation, and the unmarked (marked if interpolatedVerticesMark is false) are fixed to their initial positions. Free vertices are can move as a result of the interpolation, and can receive an interpolation target location.

Permanent link · Official RhinoCommon reference

CreateFromSelectedVertices

def CreateFromSelectedVertices(subd: SubD) -> tuple[SubDSurfaceInterpolator, int]

Create an interpolator where all the selected vertices in the SubD are free vertices in the linear system used for interpolation, and the unselected are fixed to their initial positions. Free vertices are can move as a result of the interpolation, and can receive an interpolation target location.

Permanent link · Official RhinoCommon reference

CreateFromSubD

def CreateFromSubD(subd: SubD) -> tuple[SubDSurfaceInterpolator, int]

Create an interpolator where all the vertices in the SubD are free vertices in the linear system used for interpolation (i.e. can move as a result of the interpolation, and can receive an interpolation target location).

Permanent link · Official RhinoCommon reference

CreateFromVertexIdList

def CreateFromVertexIdList(subd: SubD, vertexIndices: Iterable[int]) -> tuple[SubDSurfaceInterpolator, int]

Create an interpolator where all the listed vertices in the SubD are free vertices in the linear system used for interpolation, and the unselected are fixed to their initial positions. Free vertices are can move as a result of the interpolation, and can receive an interpolation target location.

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

FixedVertexCount

def FixedVertexCount(self) -> int

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

InterpolatedVertexCount

def InterpolatedVertexCount(self) -> int

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

InterpolatedVertexIndex

def InterpolatedVertexIndex(self, vertexId: int) -> int

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsInterpolatedVertex

def IsInterpolatedVertex(self, vertex: SubDVertex) -> bool
def IsInterpolatedVertex(self, vertexId: int) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Solve

def Solve(self, surfacePoints: Iterable[Point3d]) -> bool

Solve the interpolation system, given target interpolation locations for the free vertices in the system. Updates the subd referenced by this system so the corresponding surface points are at the locations given by surfacePoints.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, transform: Transform) -> None

Apply an arbitrary transformation to the target interpolation points.

Permanent link · Official RhinoCommon reference

VertexIdList

def VertexIdList(self) -> Sequence[int]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SubDTextureCoordinateType

0 members
SubDTextureCoordinateType

ON_SubDTextureCoordinateType identifies the way ON_SubDMeshFragment texture coordinates are set from an ON_SubDFace.

Permanent link · Official RhinoCommon reference

SubDToBrepOptions

7 members
SubDToBrepOptions

Options used for converting a SubD to a Brep

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, packFaces: bool, vertexProcess: Any) -> None

Create default options

Permanent link · Official RhinoCommon reference

Default

Default: ClassVar[SubDToBrepOptions]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DefaultPacked

DefaultPacked: ClassVar[SubDToBrepOptions]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

DefaultUnpacked

DefaultUnpacked: ClassVar[SubDToBrepOptions]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

PackFaces

def PackFaces(self) -> bool

Get or sets the pack faces option.

Permanent link · Official RhinoCommon reference

ExtraordinaryVertexProcess

def ExtraordinaryVertexProcess(self) -> Any

Get or sets the extraordinary vertex process option.

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

SubDVertex

12 members
SubDVertexsubdivision

A control-net vertex and its evaluated surface point describe different locations.

Moving a vertex influences a neighborhood. Smooth and corner tags change how that neighborhood is evaluated.

Permanent link · Official RhinoCommon reference

ControlNetPoint

def ControlNetPoint(self) -> Point3d

Location of the "control net" point that this SubDVertex represents

Permanent link · Official RhinoCommon reference

EdgeCount

def EdgeCount(self) -> int

Number of edges for this vertex

Permanent link · Official RhinoCommon reference

FaceCount

def FaceCount(self) -> int

Number of faces for this vertex

Permanent link · Official RhinoCommon reference

Next

def Next(self) -> SubDVertex

Next vertex in linked list of vertices on this level

Permanent link · Official RhinoCommon reference

Previous

def Previous(self) -> SubDVertex

Previous vertex in linked list of vertices on this level

Permanent link · Official RhinoCommon reference

Tag

def Tag(self) -> SubDVertexTag

identifies the type of subdivision vertex

Permanent link · Official RhinoCommon reference

Edges

def Edges(self) -> Sequence[SubDEdge]

All edges that this vertex is part of

Permanent link · Official RhinoCommon reference

ComponentIndex

def ComponentIndex(self) -> ComponentIndex

Gets the component index of this vertex.

Permanent link · Official RhinoCommon reference

EdgeAt

def EdgeAt(self, index: int) -> SubDEdge

Retrieve a SubDEdge from this vertex

Permanent link · Official RhinoCommon reference

FaceAt

def FaceAt(self, index: int) -> SubDFace

Retrieve a SubDFace from this vertex

Permanent link · Official RhinoCommon reference

SetControlNetPoint

def SetControlNetPoint(self, position: Point3d, bClearNeighborhoodCache: bool) -> bool

Change the location of the "control net" point that this SubDVertex represents

Permanent link · Official RhinoCommon reference

SurfacePoint

def SurfacePoint(self) -> Point3d

The SubD surface point

Permanent link · Official RhinoCommon reference

SubDVertexFacetType

0 members
SubDVertexFacetType

Summarizes the number of edges in faces in the whole object.

Permanent link · Official RhinoCommon reference

SubDVertexTag

0 members
SubDVertexTag

ON_SubDVertexTag identifies the type of subdivision vertex. Different tags use different subdivision algorithms to determine where the subdivision point and limit point are located. There are topological constraints that restrict which tags can be assigned.

Permanent link · Official RhinoCommon reference

SumSurface

1 members
SumSurfacesurfaces

A sum surface combines two generating curves and inherits their parameter directions.

Speed and continuity depend on the generators. A rectangular domain does not imply uniform distances on the result.

Permanent link · Official RhinoCommon reference

Create

def Create(curve: Curve, extrusionDirection: Vector3d) -> SumSurface
def Create(curveA: Curve, curveB: Curve) -> SumSurface

Constructs a new sum surface by extruding a curve in a specified direction.

Permanent link · Official RhinoCommon reference

Surface

66 members
Surfacecalculuscurvesdistanceframesparameterssurfacestopologyvectors

A parametric surface maps (u, v) to 3D space. Parameters usually are not physical distances. A trimmed face can cover only part of its underlying surface.

Parameter derivatives determine local metric scale. A uniform UV grid can stretch or compress in 3D, requiring geometry-aware sampling for regular spatial distances.

Permanent link · Official RhinoCommon reference

IsSolid

def IsSolid(self) -> bool

Gets a values indicating whether a surface is solid.

Permanent link · Official RhinoCommon reference

IsSubDFriendly

def IsSubDFriendly(self) -> bool

Returns true if the surface is a non-rational, uniform, natural or periodic, cubic NURBS surface. Otherwise, false is returned.

Permanent link · Official RhinoCommon reference

ClosestPoint

def ClosestPoint(self, testPoint: Point3d) -> tuple[bool, float, float]

The outputs u and v are surface coordinates. Evaluate PointAt(u, v) for the corresponding 3D point; check success first.

Underlying-surface projection ignores trimming. Use IsPointOnFace or an appropriate Brep operation when holes and face boundaries must be respected.

Permanent link · Official RhinoCommon reference

ClosestSide

def ClosestSide(self, u: float, v: float) -> IsoStatus

Gets the side that is closest, in terms of 3D-distance, to a U and V parameter.

Permanent link · Official RhinoCommon reference

CreateExtrusion

def CreateExtrusion(profile: Curve, direction: Vector3d) -> Surface

Constructs a surface by extruding a curve along a vector.

Permanent link · Official RhinoCommon reference

CreateExtrusionToPoint

def CreateExtrusionToPoint(profile: Curve, apexPoint: Point3d) -> Surface

Constructs a surface by extruding a curve to a point.

Permanent link · Official RhinoCommon reference

CreatePeriodicSurface

def CreatePeriodicSurface(surface: Surface, direction: int) -> Surface
def CreatePeriodicSurface(surface: Surface, direction: int, bSmooth: bool) -> Surface

Constructs a periodic surface from a base surface and a direction.

Permanent link · Official RhinoCommon reference

CreateRollingBallFillet

def CreateRollingBallFillet(surfaceA: Surface, flipA: bool, surfaceB: Surface, flipB: bool, radius: float, tolerance: float) -> Sequence[Surface]
def CreateRollingBallFillet(surfaceA: Surface, surfaceB: Surface, radius: float, tolerance: float) -> Sequence[Surface]
def CreateRollingBallFillet(surfaceA: Surface, uvA: Point2d, surfaceB: Surface, uvB: Point2d, radius: float, tolerance: float) -> Sequence[Surface]

Constructs a rolling ball fillet between two surfaces.

Permanent link · Official RhinoCommon reference

CreateSoftEditSurface

def CreateSoftEditSurface(surface: Surface, uv: Point2d, delta: Vector3d, uLength: float, vLength: float, tolerance: float, fixEnds: bool) -> Surface

Creates a soft edited surface from an existing surface using a smooth field of influence.

Permanent link · Official RhinoCommon reference

CreateTweenSurfacesWithSampling

def CreateTweenSurfacesWithSampling(surface0: Surface, surface1: Surface, numSurfaces: int, numSamples: int, tolerance: float) -> Sequence[Surface]

Create tween surfaces that gradually transition between two bounding surfaces using point sampling.

Permanent link · Official RhinoCommon reference

CurvatureAt

def CurvatureAt(self, u: float, v: float) -> SurfaceCurvature

Principal curvatures describe extremal normal curvature at a regular point. Singular points need special handling.

Gaussian curvature is their product; mean curvature is half their sum. Signs depend on normal orientation.

Permanent link · Official RhinoCommon reference

Degree

def Degree(self, direction: int) -> int

Returns the maximum algebraic degree of any span (or a good estimate if curve spans are not algebraic).

Permanent link · Official RhinoCommon reference

Domain

def Domain(self, direction: int) -> Interval

Direction 0 selects U and direction 1 selects V. Values need not measure physical length.

A rectangular domain can map to stretched curved geometry. Uniform UV grids are not generally uniform spatial grids.

Permanent link · Official RhinoCommon reference

Evaluate

def Evaluate(self, u: float, v: float, numberDerivatives: int) -> tuple[bool, Point3d, Sequence[Vector3d]]

Evaluates a surface mathematically.

Permanent link · Official RhinoCommon reference

Extend

def Extend(self, direction: int, interval: Interval) -> bool
def Extend(self, edge: IsoStatus, extensionLength: float, smooth: bool) -> Surface

Analytically extends the surface to include the interval.

Permanent link · Official RhinoCommon reference

Fit

def Fit(self, uDegree: int, vDegree: int, fitTolerance: float) -> Surface

Fits a new surface through an existing surface.

Permanent link · Official RhinoCommon reference

FitCurveToSurface

def FitCurveToSurface(self, trimCurve3d: Curve, trimProjectionDir: Vector3d, tolerance: float, Knots: Iterable[float], divideIntoSections: bool, trimCurveOnSurface: Curve, splitCurve: Curve) -> tuple[Sequence[Curve], Curve, Curve]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

FrameAt

def FrameAt(self, u: float, v: float) -> tuple[bool, Plane]

A surface frame follows local parameter derivatives and the normal at (u,v).

Derivatives can degenerate near singularities. When placing sections on faces, check both frame validity and trim membership.

Permanent link · Official RhinoCommon reference

GetNextDiscontinuity

def GetNextDiscontinuity(self, direction: int, continuityType: Continuity, t0: float, t1: float) -> tuple[bool, float]
def GetNextDiscontinuity(self, direction: int, continuityType: Continuity, t0: float, t1: float, cosAngleTolerance: float, curvatureTolerance: float) -> tuple[bool, float]

Searches for a derivative, tangent, or curvature discontinuity.

Permanent link · Official RhinoCommon reference

GetNurbsFormParameterFromSurfaceParameter

def GetNurbsFormParameterFromSurfaceParameter(self, surfaceS: float, surfaceT: float) -> tuple[bool, float, float]

Translates a parameter from the current surface to the parameter space of the surface returned by Rhino.Geometry.Surface.ToNurbsSurface.

Permanent link · Official RhinoCommon reference

GetSpanVector

def GetSpanVector(self, direction: int) -> Sequence[float]

Gets array of span "knots".

Permanent link · Official RhinoCommon reference

GetSurfaceParameterFromNurbsFormParameter

def GetSurfaceParameterFromNurbsFormParameter(self, nurbsS: float, nurbsT: float) -> tuple[bool, float, float]

Translates a parameter from a value on the surface returned by Rhino.Geometry.Surface.ToNurbsSurface to the current surface.

Permanent link · Official RhinoCommon reference

GetSurfaceSize

def GetSurfaceSize(self) -> tuple[bool, float, float]

Gets an estimate of the size of the rectangle that would be created if the 3d surface where flattened into a rectangle.

Permanent link · Official RhinoCommon reference

HasNurbsForm

def HasNurbsForm(self) -> int

Is there a NURBS surface representation of this surface.

Permanent link · Official RhinoCommon reference

InterpolatedCurveOnSurface

def InterpolatedCurveOnSurface(self, points: Iterable[Point3d], tolerance: float) -> NurbsCurve

Constructs an interpolated curve on a surface, using 3D points.

Permanent link · Official RhinoCommon reference

InterpolatedCurveOnSurfaceUV

def InterpolatedCurveOnSurfaceUV(self, points: Iterable[Point2d], tolerance: float) -> NurbsCurve
def InterpolatedCurveOnSurfaceUV(self, points: Iterable[Point2d], tolerance: float, closed: bool, closedSurfaceHandling: int) -> NurbsCurve

Returns a curve that interpolates points on a surface. The interpolant lies on the surface.

Permanent link · Official RhinoCommon reference

IsAtSeam

def IsAtSeam(self, u: float, v: float) -> int

Tests if a surface parameter value is at a seam.

Permanent link · Official RhinoCommon reference

IsAtSingularity

def IsAtSingularity(self, u: float, v: float, exact: bool) -> bool

Tests if a surface parameter value is at a singularity.

Permanent link · Official RhinoCommon reference

IsClosed

def IsClosed(self, direction: int) -> bool

Gets a value indicating if the surface is closed in a direction.

Permanent link · Official RhinoCommon reference

IsCone

def IsCone(self) -> bool
def IsCone(self, tolerance: float) -> bool

Determines if the surface is a portion of a cone within RhinoMath.ZeroTolerance.

Permanent link · Official RhinoCommon reference

IsContinuous

def IsContinuous(self, continuityType: Continuity, u: float, v: float) -> bool

Tests continuity at a surface parameter value.

Permanent link · Official RhinoCommon reference

IsCylinder

def IsCylinder(self) -> bool
def IsCylinder(self, tolerance: float) -> bool

Determines if the surface is a portion of a cylinder within RhinoMath.ZeroTolerance.

Permanent link · Official RhinoCommon reference

IsIsoparametric

def IsIsoparametric(self, bbox: BoundingBox) -> IsoStatus
def IsIsoparametric(self, curve: Curve) -> IsoStatus
def IsIsoparametric(self, curve: Curve, curveDomain: Interval) -> IsoStatus

Determines if a 2d bounding box is isoparametric in the parameter space of this surface.

Permanent link · Official RhinoCommon reference

IsoCurve

def IsoCurve(self, direction: int, constantParameter: float) -> Curve

An isoparametric curve holds one surface coordinate fixed and varies the other.

It is not necessarily a shortest path or straight line. Use trim-aware face methods when curves must stop at face boundaries.

Permanent link · Official RhinoCommon reference

IsPeriodic

def IsPeriodic(self, direction: int) -> bool

Gets a value indicating if the surface is periodic in a direction (default is false).

Permanent link · Official RhinoCommon reference

IsPlanar

def IsPlanar(self) -> bool
def IsPlanar(self, tolerance: float) -> bool

Tests a surface to see if it is planar to zero tolerance.

Permanent link · Official RhinoCommon reference

IsSingular

def IsSingular(self, side: int) -> bool

true if surface side is collapsed to a point.

Permanent link · Official RhinoCommon reference

IsSphere

def IsSphere(self) -> bool
def IsSphere(self, tolerance: float) -> bool

Determines if the surface is a portion of a sphere within RhinoMath.ZeroTolerance.

Permanent link · Official RhinoCommon reference

IsTorus

def IsTorus(self) -> bool
def IsTorus(self, tolerance: float) -> bool

Determines if the surface is a portion of a torus within RhinoMath.ZeroTolerance.

Permanent link · Official RhinoCommon reference

LocalClosestPoint

def LocalClosestPoint(self, testPoint: Point3d, seedU: float, seedV: float) -> tuple[bool, float, float]

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.

Permanent link · Official RhinoCommon reference

NormalAt

def NormalAt(self, u: float, v: float) -> Vector3d

Surface normals depend on parameter orientation. For a BrepFace, account for face orientation when interpreting an outward normal.

At regular points parameter derivatives define an oriented normal. Singularities and reversed BrepFace orientation require explicit treatment.

Permanent link · Official RhinoCommon reference

Offset

def Offset(self, distance: float, tolerance: float) -> Surface

Offsets follow the normal field. Large distances can introduce singularities and self-intersections.

Distance uses model units and sign depends on orientation. Check validity and local shape before interpreting an offset as usable thickness.

Permanent link · Official RhinoCommon reference

PointAt

def PointAt(self, u: float, v: float) -> Point3d

Evaluate the underlying surface at (u,v). The point can lie outside a BrepFace's trimming region.

Use IsPointOnFace when placement must respect holes and trimmed boundaries. Domain membership alone is insufficient.

Permanent link · Official RhinoCommon reference

Pullback

def Pullback(self, curve3d: Curve, tolerance: float) -> Curve
def Pullback(self, curve3d: Curve, tolerance: float, curve3dSubdomain: Interval) -> Curve

Pulls a 3d curve back to the surface's parameter space.

Permanent link · Official RhinoCommon reference

Pushup

def Pushup(self, curve2d: Curve, tolerance: float) -> Curve
def Pushup(self, curve2d: Curve, tolerance: float, curve2dSubdomain: Interval) -> Curve

Computes a 3d curve that is the composite of a 2d curve and the surface map.

Permanent link · Official RhinoCommon reference

Rebuild

def Rebuild(self, uDegree: int, vDegree: int, uPointCount: int, vPointCount: int) -> NurbsSurface

Rebuilds an existing surface to a given degree and point count.

Permanent link · Official RhinoCommon reference

RebuildOneDirection

def RebuildOneDirection(self, direction: int, pointCount: int, loftType: LoftType, refitTolerance: float) -> NurbsSurface

Rebuilds an existing surface with a new surface to a given point count in either the u or v directions independently.

Permanent link · Official RhinoCommon reference

RefitSimplySplitSurface

def RefitSimplySplitSurface(self, trimCurve3d: Curve, trimProjectionDir: Vector3d, tolerance: float, knotAdditionMode: RefitTrimKnotMode, numInsertKnots: int, Knots: Iterable[float], sectionMode: RefitTrimSectionMode, numNonTrimSpans: int, meetCurve: bool, oneSided: bool, PtActive: Point3d, outputSurface: bool, outputCurve: bool, numSections: int, lowerSurface: Iterable[Surface], upperSurface: Iterable[Surface], edgeCurve: Iterable[Curve], FitMeasurement: float, trimCurveOnSurface: Curve, splitCurve: Curve) -> tuple[bool, int, float, Curve, Curve]

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.

Permanent link · Official RhinoCommon reference

RefitSplit

def RefitSplit(self, curve: Curve, trimProjectionDir: Vector3d, tolerance: float, Knots: Iterable[float], bMeetCurve: bool, divideIntoSections: bool, srfLower: Iterable[Surface], srfUpper: Iterable[Surface], edgeCurve: Iterable[Curve], trimCurveOnSurface: Curve, splitCurve: Curve) -> tuple[int, Curve, Curve]

Splits the surface into two and refits the split edge

Permanent link · Official RhinoCommon reference

Reverse

def Reverse(self, direction: int) -> Surface
def Reverse(self, direction: int, inPlace: bool) -> Surface

Reverses parameterization Domain changes from [a,b] to [-b,-a]

Permanent link · Official RhinoCommon reference

SetDomain

def SetDomain(self, direction: int, domain: Interval) -> bool

Sets the domain in a direction.

Permanent link · Official RhinoCommon reference

ShortPath

def ShortPath(self, start: Point2d, end: Point2d, tolerance: float) -> Curve

Constructs a geodesic between 2 points, used by ShortPath command in Rhino.

Permanent link · Official RhinoCommon reference

Smooth

def Smooth(self, smoothFactor: float, bXSmooth: bool, bYSmooth: bool, bZSmooth: bool, bFixBoundaries: bool, coordinateSystem: SmoothingCoordinateSystem) -> Surface
def Smooth(self, smoothFactor: float, bXSmooth: bool, bYSmooth: bool, bZSmooth: bool, bFixBoundaries: bool, coordinateSystem: SmoothingCoordinateSystem, plane: Plane) -> Surface

Smooths a surface by averaging the positions of control points in a specified region.

Permanent link · Official RhinoCommon reference

SpanCount

def SpanCount(self, direction: int) -> int

Gets number of smooth nonempty spans in the parameter direction.

Permanent link · Official RhinoCommon reference

Split

def Split(self, direction: int, parameter: float) -> Sequence[Surface]

Splits (divides) the surface into two parts at the specified parameter

Permanent link · Official RhinoCommon reference

ToBrep

def ToBrep(self) -> Brep

Conversion adds Brep topology. It does not turn an open surface into a closed solid.

A one-face Brep can retain naked edges. Check IsSolid and validity before operations requiring a volume boundary.

Permanent link · Official RhinoCommon reference

ToNurbsSurface

def ToNurbsSurface(self) -> NurbsSurface
def ToNurbsSurface(self, tolerance: float) -> tuple[NurbsSurface, int]

Gets a NURBS surface representation of this surface. Default tolerance of 0.0 is used.

Permanent link · Official RhinoCommon reference

Transpose

def Transpose(self) -> Surface
def Transpose(self, inPlace: bool) -> Surface

Transposing exchanges U and V. Stored UV data and orientation-sensitive interpretation can change.

Exchange coordinate components to preserve point correspondence. Reevaluate normals rather than assuming their previous direction is retained.

Permanent link · Official RhinoCommon reference

Trim

def Trim(self, u: Interval, v: Interval) -> Surface

Constructs a sub-surface that covers the specified UV trimming domain.

Permanent link · Official RhinoCommon reference

TryGetCone

def TryGetCone(self) -> tuple[bool, Cone]
def TryGetCone(self, tolerance: float) -> tuple[bool, Cone]

Tests a surface to see if it is a portion of a cone within RhinoMath.ZeroTolerance and return the cone.

Permanent link · Official RhinoCommon reference

TryGetCylinder

def TryGetCylinder(self) -> tuple[bool, Cylinder]
def TryGetCylinder(self, tolerance: float) -> tuple[bool, Cylinder]

Tests a surface to see if it is a portion of a cylinder within RhinoMath.ZeroTolerance and return the cylinder.

Permanent link · Official RhinoCommon reference

TryGetFiniteCylinder

def TryGetFiniteCylinder(self, tolerance: float) -> tuple[bool, Cylinder]

Tests a surface with the assumption that it might be a right circular cylinder and returns this geometry.

Permanent link · Official RhinoCommon reference

TryGetPlane

def TryGetPlane(self) -> tuple[bool, Plane]
def TryGetPlane(self, tolerance: float) -> tuple[bool, Plane]

Tests a surface for planarity and return the plane.

Permanent link · Official RhinoCommon reference

TryGetSphere

def TryGetSphere(self) -> tuple[bool, Sphere]
def TryGetSphere(self, tolerance: float) -> tuple[bool, Sphere]

Test a surface to see if it is a portion of a sphere and return the sphere.

Permanent link · Official RhinoCommon reference

TryGetTorus

def TryGetTorus(self) -> tuple[bool, Torus]
def TryGetTorus(self, tolerance: float) -> tuple[bool, Torus]

Tests a surface to see if it is a portion of a torus within RhinoMath.ZeroTolerance and returns the torus.

Permanent link · Official RhinoCommon reference

VariableOffset

def VariableOffset(self, uMinvMin: float, uMinvMax: float, uMaxvMin: float, uMaxvMax: float, interiorParameters: Iterable[Point2d], interiorDistances: Iterable[float], tolerance: float) -> Surface
def VariableOffset(self, uMinvMin: float, uMinvMax: float, uMaxvMin: float, uMaxvMax: float, tolerance: float) -> Surface

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.

Permanent link · Official RhinoCommon reference

SurfaceCurvature

8 members
SurfaceCurvaturecalculus

Gaussian curvature has inverse-length-squared units. Mean and principal curvatures have inverse-length units.

At an umbilic point principal directions are not unique. Do not treat these directions as a stable global frame field.

Permanent link · Official RhinoCommon reference

UVPoint

def UVPoint(self) -> Point2d

Gets the UV location where the curvature was computed.

Permanent link · Official RhinoCommon reference

Point

def Point(self) -> Point3d

Gets the surface point at UV.

Permanent link · Official RhinoCommon reference

Normal

def Normal(self) -> Vector3d

Gets the surface normal at UV.

Permanent link · Official RhinoCommon reference

Gaussian

def Gaussian(self) -> float

Gets the Gaussian curvature value at UV.

Permanent link · Official RhinoCommon reference

Mean

def Mean(self) -> float

Gets the Mean curvature value at UV.

Permanent link · Official RhinoCommon reference

Direction

def Direction(self, direction: int) -> Vector3d

Gets the principal curvature direction vector.

Permanent link · Official RhinoCommon reference

Kappa

def Kappa(self, direction: int) -> float

Gets the principal curvature values. Kappa(0) - Principal curvature with maximum absolute value Kappa(1) - Principal curvature with minimum absolute value

Permanent link · Official RhinoCommon reference

OsculatingCircle

def OsculatingCircle(self, direction: int) -> Circle

Computes the osculating circle along the given direction.

Permanent link · Official RhinoCommon reference

SurfaceFilletBase

19 members
SurfaceFilletBase

New interactive FilletSrf

Permanent link · Official RhinoCommon reference

CreateG2ChordalQuinticFilletSrf

def CreateG2ChordalQuinticFilletSrf(faceA: BrepFace, uvA: Point2d, faceB: BrepFace, uvB: Point2d, radius: float, tolerance: float, trimmedBrepsA: Iterable[Brep], trimmedBrepsB: Iterable[Brep], rail_degree: int, bTrim: bool, bExtend: bool, Fillets: Iterable[Brep]) -> bool

Creates a surface fillet using G2 chordal Quintic arc approximations as sections

Permanent link · Official RhinoCommon reference

CreateNonRationalCubicArcsFilletSrf

def CreateNonRationalCubicArcsFilletSrf(faceA: BrepFace, uvA: Point2d, faceB: BrepFace, uvB: Point2d, radius: float, tolerance: float, trimmedBrepsA: Iterable[Brep], trimmedBrepsB: Iterable[Brep], rail_degree: int, bTrim: bool, bExtend: bool, Fillets: Iterable[Brep]) -> bool

Creates a surface fillet using Non-rational Cubic arc approximations as sections

Permanent link · Official RhinoCommon reference

CreateNonRationalCubicFilletSrf

def CreateNonRationalCubicFilletSrf(faceA: BrepFace, uvA: Point2d, faceB: BrepFace, uvB: Point2d, radius: float, tolerance: float, trimmedBrepsA: Iterable[Brep], trimmedBrepsB: Iterable[Brep], rail_degree: int, TanSlider: float, bTrim: bool, bExtend: bool, Fillets: Iterable[Brep]) -> bool

Creates a fillet using non-rational Cubic sections with a tangent slider

Permanent link · Official RhinoCommon reference

CreateNonRationalQuarticArcsFilletSrf

def CreateNonRationalQuarticArcsFilletSrf(faceA: BrepFace, uvA: Point2d, faceB: BrepFace, uvB: Point2d, radius: float, tolerance: float, trimmedBrepsA: Iterable[Brep], trimmedBrepsB: Iterable[Brep], rail_degree: int, bTrim: bool, bExtend: bool, Fillets: Iterable[Brep]) -> bool

Creates a surface fillet using Non-rational Quartic arc approximations as sections

Permanent link · Official RhinoCommon reference

CreateNonRationalQuarticFilletSrf

def CreateNonRationalQuarticFilletSrf(faceA: BrepFace, uvA: Point2d, faceB: BrepFace, uvB: Point2d, radius: float, tolerance: float, trimmedBrepsA: Iterable[Brep], trimmedBrepsB: Iterable[Brep], rail_degree: int, TanSlider: float, InnerSlider: float, bTrim: bool, bExtend: bool, Fillets: Iterable[Brep]) -> bool

Creates a fillet using non-rational Quartic sections with a tangent and inner slider

Permanent link · Official RhinoCommon reference

CreateNonRationalQuinticArcsFilletSrf

def CreateNonRationalQuinticArcsFilletSrf(faceA: BrepFace, uvA: Point2d, faceB: BrepFace, uvB: Point2d, radius: float, tolerance: float, trimmedBrepsA: Iterable[Brep], trimmedBrepsB: Iterable[Brep], rail_degree: int, bTrim: bool, bExtend: bool, Fillets: Iterable[Brep]) -> bool

Creates a surface fillet using Non-rational Quintic arc approximations as sections

Permanent link · Official RhinoCommon reference

CreateNonRationalQuinticFilletSrf

def CreateNonRationalQuinticFilletSrf(faceA: BrepFace, uvA: Point2d, faceB: BrepFace, uvB: Point2d, radius: float, tolerance: float, trimmedBrepsA: Iterable[Brep], trimmedBrepsB: Iterable[Brep], rail_degree: int, TanSlider: float, InnerSlider: float, bTrim: bool, bExtend: bool, Fillets: Iterable[Brep]) -> bool

Creates a fillet using non-rational Quintic sections with a tangent and inner slider

Permanent link · Official RhinoCommon reference

CreateRationalArcsFilletSrf

def CreateRationalArcsFilletSrf(faceA: BrepFace, uvA: Point2d, faceB: BrepFace, uvB: Point2d, radius: float, tolerance: float, trimmedBrepsA: Iterable[Brep], trimmedBrepsB: Iterable[Brep], rail_degree: int, bTrim: bool, bExtend: bool, Fillets: Iterable[Brep]) -> bool

Creates a standard surface fillet using rational arc sections

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

G2ChordalQuintic

def G2ChordalQuintic(self, railDegree: int, bExtend: bool, Fillets: Iterable[Brep]) -> bool

make fillet surfaces and hack them up to active pieces. Adjusts cross sections

Permanent link · Official RhinoCommon reference

IsInitialized

def IsInitialized(self) -> bool

Check to see if the fillet is properly initialized. If it is not, then the selected curves, surfaces, and/or radius must be adjusted in some way before creating the fillet

Permanent link · Official RhinoCommon reference

NonRationalCubic

def NonRationalCubic(self, railDegree: int, TanSlider: float, bExtend: bool, Fillets: Iterable[Brep]) -> bool

make fillet surfaces and hack them up to active pieces. Adjusts cross sections

Permanent link · Official RhinoCommon reference

NonRationalCubicArcs

def NonRationalCubicArcs(self, railDegree: int, bExtend: bool, Fillets: Iterable[Brep]) -> bool

make fillet surfaces and hack them up to active pieces. Adjusts cross sections

Permanent link · Official RhinoCommon reference

NonRationalQuartic

def NonRationalQuartic(self, railDegree: int, TanSlider: float, InnerSlider: float, bExtend: bool, Fillets: Iterable[Brep]) -> bool

make fillet surfaces and hack them up to active pieces. Adjusts cross sections

Permanent link · Official RhinoCommon reference

NonRationalQuarticArcs

def NonRationalQuarticArcs(self, railDegree: int, bExtend: bool, Fillets: Iterable[Brep]) -> bool

make fillet surfaces and hack them up to active pieces. Adjusts cross sections

Permanent link · Official RhinoCommon reference

NonRationalQuintic

def NonRationalQuintic(self, railDegree: int, TanSlider: float, InnerSlider: float, bExtend: bool, Fillets: Iterable[Brep]) -> bool

make fillet surfaces and hack them up to active pieces. Adjusts cross sections

Permanent link · Official RhinoCommon reference

NonRationalQuinticArcs

def NonRationalQuinticArcs(self, railDegree: int, bExtend: bool, Fillets: Iterable[Brep]) -> bool

make fillet surfaces and hack them up to active pieces. Adjusts cross sections

Permanent link · Official RhinoCommon reference

RationalArcs

def RationalArcs(self, railDegree: int, bExtend: bool, Fillets: Iterable[Brep]) -> bool

make fillet surfaces and hack them up to active pieces. Adjusts cross sections

Permanent link · Official RhinoCommon reference

TrimBreps

def TrimBreps(self, bExtend: bool, TrimmedBreps0: Iterable[Brep], TrimmedBreps1: Iterable[Brep]) -> bool

If the two input breps are the same, TrimmedBreps[1] will be empty. The constructor idoes everything necessary for this to be called. Calles to the various fillet creation members will not change the result.

Permanent link · Official RhinoCommon reference

SurfaceProxy

0 members
SurfaceProxy

Provides a base class to brep faces and other surface proxies.

Permanent link · Official RhinoCommon reference

SweepBlend

0 members
SweepBlend

Blend types for creating swept surfaces

Permanent link · Official RhinoCommon reference

SweepFrame

0 members
SweepFrame

Frame types for creating swept surfaces

Permanent link · Official RhinoCommon reference

SweepMiter

0 members
SweepMiter

Miter types for creating swept surfaces

Permanent link · Official RhinoCommon reference

SweepOneRail

18 members
SweepOneRail

Utility class for generating Breps by sweeping cross section curves over a single rail curve. Note, this class has been superseded by the Rhino.Geometry.Brep.CreateFromSweep static functions.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsFreeform

def IsFreeform(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsRoadlike

def IsRoadlike(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsRoadlikeTop

def IsRoadlikeTop(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsRoadlikeFront

def IsRoadlikeFront(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsRoadlineRight

def IsRoadlineRight(self) -> bool

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SweepTolerance

def SweepTolerance(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

AngleToleranceRadians

def AngleToleranceRadians(self) -> float

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

MiterType

def MiterType(self) -> int

0: don't miter, 1: intersect surfaces and trim sweeps, 2: rotate shapes at kinks and don't trim.

Permanent link · Official RhinoCommon reference

ClosedSweep

def ClosedSweep(self) -> bool

If the input rail is closed, ClosedSweep determines if the swept breps will also be closed.

Permanent link · Official RhinoCommon reference

GlobalShapeBlending

def GlobalShapeBlending(self) -> bool

If true, the sweep is linearly blended from one end to the other, creating sweeps that taper from one cross-section curve to the other. If false, the sweep stays constant at the ends and changes more rapidly in the middle.

Permanent link · Official RhinoCommon reference

PerformSweep

def PerformSweep(self, rail: Curve, crossSection: Curve) -> Sequence[Brep]
def PerformSweep(self, rail: Curve, crossSection: Curve, crossSectionParameter: float) -> Sequence[Brep]
def PerformSweep(self, rail: Curve, crossSections: Iterable[Curve]) -> Sequence[Brep]
def PerformSweep(self, rail: Curve, crossSections: Iterable[Curve], crossSectionParameters: Iterable[float]) -> Sequence[Brep]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

PerformSweepRebuild

def PerformSweepRebuild(self, rail: Curve, crossSection: Curve, crossSectionParameter: float, rebuildCount: int) -> Sequence[Brep]
def PerformSweepRebuild(self, rail: Curve, crossSection: Curve, rebuildCount: int) -> Sequence[Brep]
def PerformSweepRebuild(self, rail: Curve, crossSections: Iterable[Curve], crossSectionParameters: Iterable[float], rebuildCount: int) -> Sequence[Brep]
def PerformSweepRebuild(self, rail: Curve, crossSections: Iterable[Curve], rebuildCount: int) -> Sequence[Brep]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

PerformSweepRefit

def PerformSweepRefit(self, rail: Curve, crossSection: Curve, crossSectionParameter: float, refitTolerance: float) -> Sequence[Brep]
def PerformSweepRefit(self, rail: Curve, crossSection: Curve, refitTolerance: float) -> Sequence[Brep]
def PerformSweepRefit(self, rail: Curve, crossSections: Iterable[Curve], crossSectionParameters: Iterable[float], refitTolerance: float) -> Sequence[Brep]
def PerformSweepRefit(self, rail: Curve, crossSections: Iterable[Curve], refitTolerance: float) -> Sequence[Brep]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SetRoadlikeUpDirection

def SetRoadlikeUpDirection(self, up: Vector3d) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SetToRoadlikeFront

def SetToRoadlikeFront(self) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SetToRoadlikeRight

def SetToRoadlikeRight(self) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SetToRoadlikeTop

def SetToRoadlikeTop(self) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SweepRebuild

0 members
SweepRebuild

Rebuild types for creating swept surfaces

Permanent link · Official RhinoCommon reference

SweepTwoRail

10 members
SweepTwoRail

Utility class for generating Breps by sweeping cross section curves over two rail curves. Note, this class has been superseded by the Rhino.Geometry.Brep.CreateFromSweep static functions.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

SweepTolerance

def SweepTolerance(self) -> float

Gets or sets the sweeping tolerance.

Permanent link · Official RhinoCommon reference

AngleToleranceRadians

def AngleToleranceRadians(self) -> float

Gets or sets the angle tolerance in radians.

Permanent link · Official RhinoCommon reference

MaintainHeight

def MaintainHeight(self) -> bool

Removes the association between the height scaling from the width scaling.

Permanent link · Official RhinoCommon reference

ClosedSweep

def ClosedSweep(self) -> bool

If the input rails are closed, ClosedSweep determines if the swept Breps will also be closed.

Permanent link · Official RhinoCommon reference

AutoAdjust

def AutoAdjust(self) -> bool

Set to true to have shape curves adjusted, sorted, and matched automatically. This will produce results comparable to Rhino's Sweep2 command. Set to false to not have shape curves adjusted, sorted, and matched automatically.

Permanent link · Official RhinoCommon reference

UseLegacySweeper

def UseLegacySweeper(self) -> bool

Set to true if you want to use the legacy, low-level sweeper found in earlier versions of Rhino.

Permanent link · Official RhinoCommon reference

PerformSweep

def PerformSweep(self, rail1: Curve, rail2: Curve, crossSection: Curve) -> Sequence[Brep]
def PerformSweep(self, rail1: Curve, rail2: Curve, crossSection: Curve, crossSectionParameterRail1: float, crossSectionParameterRail2: float) -> Sequence[Brep]
def PerformSweep(self, rail1: Curve, rail2: Curve, crossSections: Iterable[Curve]) -> Sequence[Brep]
def PerformSweep(self, rail1: Curve, rail2: Curve, crossSections: Iterable[Curve], crossSectionParameters1: Iterable[float], crossSectionParameters2: Iterable[float]) -> Sequence[Brep]

Sweep2 function that fits a surface through profile curves that define the surface cross-sections and two curves that defines a surface edge.

Permanent link · Official RhinoCommon reference

PerformSweepRebuild

def PerformSweepRebuild(self, rail1: Curve, rail2: Curve, crossSection: Curve, crossSectionParameterRail1: float, crossSectionParameterRail2: float, rebuildCount: int) -> Sequence[Brep]
def PerformSweepRebuild(self, rail1: Curve, rail2: Curve, crossSection: Curve, rebuildCount: int) -> Sequence[Brep]
def PerformSweepRebuild(self, rail1: Curve, rail2: Curve, crossSections: Iterable[Curve], crossSectionParametersRail1: Iterable[float], crossSectionParametersRail2: Iterable[float], rebuildCount: int) -> Sequence[Brep]
def PerformSweepRebuild(self, rail1: Curve, rail2: Curve, crossSections: Iterable[Curve], rebuildCount: int) -> Sequence[Brep]

Sweep2 function that fits a surface through profile curves that define the surface cross-sections and two curves that defines a surface edge.

Permanent link · Official RhinoCommon reference

PerformSweepRefit

def PerformSweepRefit(self, rail1: Curve, rail2: Curve, crossSection: Curve, crossSectionParameterRail1: float, crossSectionParameterRail2: float, refitTolerance: float) -> Sequence[Brep]
def PerformSweepRefit(self, rail1: Curve, rail2: Curve, crossSection: Curve, refitTolerance: float) -> Sequence[Brep]
def PerformSweepRefit(self, rail1: Curve, rail2: Curve, crossSections: Iterable[Curve], crossSectionParametersRail1: Iterable[float], crossSectionParametersRail2: Iterable[float], refitTolerance: float) -> Sequence[Brep]
def PerformSweepRefit(self, rail1: Curve, rail2: Curve, crossSections: Iterable[Curve], refitTolerance: float) -> Sequence[Brep]

Sweep2 function that fits a surface through profile curves that define the surface cross-sections and two curves that defines a surface edge.

Permanent link · Official RhinoCommon reference

TextDot

6 members
TextDotannotations

A text dot is a spatial label rather than curve or surface geometry.

Use its point for positioning. Use text-outline APIs when actual text geometry is required for fabrication.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, text: str, location: Point3d) -> None

Initializes a new text dot based on the text and the location.

Permanent link · Official RhinoCommon reference

Point

def Point(self) -> Point3d

Gets or sets the position of the text dot.

Permanent link · Official RhinoCommon reference

Text

def Text(self) -> str

Gets or sets the primary text of the text dot.

Permanent link · Official RhinoCommon reference

SecondaryText

def SecondaryText(self) -> str

Gets or sets the secondary text of the text dot.

Permanent link · Official RhinoCommon reference

FontHeight

def FontHeight(self) -> int

Height of font used for displaying the dot

Permanent link · Official RhinoCommon reference

FontFace

def FontFace(self) -> str

Font face used for displaying the dot

Permanent link · Official RhinoCommon reference

TextEntity

18 members
TextEntityannotations

Text geometry depends on font, layout, plane, and content.

After conversion to outlines, check closure and holes before building regions. Display bounds do not replace geometric topology checks.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None

Initializes a new instance of the Rhino.Geometry.TextEntity class.

Permanent link · Official RhinoCommon reference

Justification

def Justification(self) -> TextJustification

Gets or sets the justification of text in relation to its base point.

Permanent link · Official RhinoCommon reference

TextHorizontalAlignment

def TextHorizontalAlignment(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

TextVerticalAlignment

def TextVerticalAlignment(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

TextOrientation

def TextOrientation(self) -> Any

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Create

def Create(text: str, plane: Plane, style: DimensionStyle, wrapped: bool, rectWidth: float, rotationRadians: float) -> TextEntity

Create Text geometry or null if input is invalid

Permanent link · Official RhinoCommon reference

CreateCurves

def CreateCurves(self, dimstyle: DimensionStyle, allowOpen: bool, smallCapsScale: float=..., spacing: float=...) -> Sequence[Curve]

Returns the outline curves.

Permanent link · Official RhinoCommon reference

CreateCurvesGrouped

def CreateCurvesGrouped(self, dimstyle: DimensionStyle, allowOpen: bool, smallCapsScale: float, spacing: float) -> Sequence[Sequence[Curve]]

Creates planar curve from text outline curves. Curves are grouped such that each element in the list being returned represents a single character.

Permanent link · Official RhinoCommon reference

CreateExtrusions

def CreateExtrusions(self, dimstyle: DimensionStyle, height: float, smallCapsScale: float=..., spacing: float=...) -> Sequence[Extrusion]

Creates extrusions from the outline curves with specified height.

Permanent link · Official RhinoCommon reference

CreateExtrusionsGrouped

def CreateExtrusionsGrouped(self, dimstyle: DimensionStyle, smallCapsScale: float, height: float, spacing: float) -> Sequence[Sequence[Extrusion]]

Creates 3d Breps from text outline curves. Breps are grouped such that each element in the list being returned represents a single character.

Permanent link · Official RhinoCommon reference

CreatePolySurfaces

def CreatePolySurfaces(self, dimstyle: DimensionStyle, height: float, smallCapsScale: float=..., spacing: float=...) -> Sequence[Brep]

Creates breps from the outline curves with specified height.

Permanent link · Official RhinoCommon reference

CreatePolysurfacesGrouped

def CreatePolysurfacesGrouped(self, dimstyle: DimensionStyle, smallCapsScale: float, height: float, spacing: float) -> Sequence[Sequence[Brep]]

Creates 3d Breps from text outline curves. Breps are grouped such that each element in the list being returned represents a single character.

Permanent link · Official RhinoCommon reference

CreateSurfaces

def CreateSurfaces(self, dimstyle: DimensionStyle, smallCapsScale: float=..., spacing: float=...) -> Sequence[Brep]

Creates planar breps from the outline curves.

Permanent link · Official RhinoCommon reference

CreateSurfacesGrouped

def CreateSurfacesGrouped(self, dimstyle: DimensionStyle, smallCapsScale: float, spacing: float) -> Sequence[Sequence[Brep]]

Creates planar Breps from text outline curves. Breps are grouped such that each element in the list being returned represents a single character.

Permanent link · Official RhinoCommon reference

CreateWithRichText

def CreateWithRichText(richTextString: str, plane: Plane, style: DimensionStyle, wrapped: bool, rectWidth: float, rotationRadians: float) -> TextEntity

Create RichText geometry or null if input is invalid

Permanent link · Official RhinoCommon reference

Explode

def Explode(self) -> Sequence[Curve]

Explodes this text entity into an array of curves.

Permanent link · Official RhinoCommon reference

GetTextTransform

def GetTextTransform(self, textscale: float, dimstyle: DimensionStyle) -> Transform

Get the transform for this text object's text geometry

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, transform: Transform, style: DimensionStyle) -> bool
def Transform(self, xform: Transform) -> bool

Transform the object by a 4x4 transform matrix and change text height override to accommodate scaling in the transform if necessary

Permanent link · Official RhinoCommon reference

TextJustification

0 members
TextJustification

Specifies enumerated constants used to indicate the internal alignment and justification of text.

Permanent link · Official RhinoCommon reference

TextRunType

0 members
TextRunType

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Torus

10 members
Torussurfaces

A torus revolves a circle around an axis in its plane. Radius relationships determine its geometric form.

Special radius choices can introduce singular or self-intersecting cases. Validate the object and converted topology before treating it as a solid.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, basePlane: Plane, majorRadius: float, minorRadius: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Torus]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets a value indicating whether this torus is valid.

Permanent link · Official RhinoCommon reference

Plane

def Plane(self) -> Plane

Gets or sets the plane for the torus large circle.

Permanent link · Official RhinoCommon reference

MajorRadius

def MajorRadius(self) -> float

Gets or sets the radius of the circle that lies at the heart of the torus.

Permanent link · Official RhinoCommon reference

MinorRadius

def MinorRadius(self) -> float

Gets or sets the radius of the torus section.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Torus, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

ToBrep

def ToBrep(self) -> Brep

Converts this torus to a Brep. This is synonymous with calling Rhino.Geometry.Brep.CreateFromTorus(Rhino.Geometry.Torus).

Permanent link · Official RhinoCommon reference

ToNurbsSurface

def ToNurbsSurface(self) -> NurbsSurface

Converts this torus to its NURBS surface representation. This is synonymous with calling Rhino.Geometry.NurbsSurface.CreateFromTorus(Rhino.Geometry.Torus).

Permanent link · Official RhinoCommon reference

ToRevSurface

def ToRevSurface(self) -> RevSurface

Converts this torus to a surface of revolution representation. This is synonymous with calling Rhino.Geometry.RevSurface.CreateFromTorus(Rhino.Geometry.Torus).

Permanent link · Official RhinoCommon reference

Transform

71 members
Transformframesinteroptransforms

Transformations use homogeneous coordinates. Composition order matters: translating then rotating usually differs from rotating then translating. Non-uniform scaling can change angles.

Points and direction vectors respond differently to translation. Singular transforms such as projection lose information and cannot always be inverted.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, diagonalValue: float) -> None
def __init__(self, value: Transform) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Identity

Identity: ClassVar[Transform]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ZeroTransformation

ZeroTransformation: ClassVar[Transform]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Transform]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

M00

def M00(self) -> float

Gets or sets this[0,0].

Permanent link · Official RhinoCommon reference

M01

def M01(self) -> float

Gets or sets this[0,1].

Permanent link · Official RhinoCommon reference

M02

def M02(self) -> float

Gets or sets this[0,2].

Permanent link · Official RhinoCommon reference

M03

def M03(self) -> float

Gets or sets this[0,3].

Permanent link · Official RhinoCommon reference

M10

def M10(self) -> float

Gets or sets this[1,0].

Permanent link · Official RhinoCommon reference

M11

def M11(self) -> float

Gets or sets this[1,1].

Permanent link · Official RhinoCommon reference

M12

def M12(self) -> float

Gets or sets this[1,2].

Permanent link · Official RhinoCommon reference

M13

def M13(self) -> float

Gets or sets this[1,3].

Permanent link · Official RhinoCommon reference

M20

def M20(self) -> float

Gets or sets this[2,0].

Permanent link · Official RhinoCommon reference

M21

def M21(self) -> float

Gets or sets this[2,1].

Permanent link · Official RhinoCommon reference

M22

def M22(self) -> float

Gets or sets this[2,2].

Permanent link · Official RhinoCommon reference

M23

def M23(self) -> float

Gets or sets this[2,3].

Permanent link · Official RhinoCommon reference

M30

def M30(self) -> float

Gets or sets this[3,0].

Permanent link · Official RhinoCommon reference

M31

def M31(self) -> float

Gets or sets this[3,1].

Permanent link · Official RhinoCommon reference

M32

def M32(self) -> float

Gets or sets this[3,2].

Permanent link · Official RhinoCommon reference

M33

def M33(self) -> float

Gets or sets this[3,3].

Permanent link · Official RhinoCommon reference

IsIdentity

def IsIdentity(self) -> bool

Return true if this Transform is the identity transform

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets a value indicating whether or not this Transform is a valid matrix. A valid transform matrix is not allowed to have any invalid numbers.

Permanent link · Official RhinoCommon reference

IsZero

def IsZero(self) -> bool

True if matrix is Zero4x4, ZeroTransformation, or some other type of zero. The value xform[3][3] can be anything.

Permanent link · Official RhinoCommon reference

IsZero4x4

def IsZero4x4(self) -> bool

True if all values are 0

Permanent link · Official RhinoCommon reference

IsZeroTransformation

def IsZeroTransformation(self) -> bool

True if all values are 0, except for M33 which is 1.

Permanent link · Official RhinoCommon reference

SimilarityType

def SimilarityType(self) -> TransformSimilarityType

Gets a value indicating whether or not the Transform maintains similarity. The easiest way to think of Similarity is that any circle, when transformed, remains a circle. Whereas a non-similarity Transform deforms circles into ellipses.

Permanent link · Official RhinoCommon reference

RigidType

def RigidType(self) -> TransformRigidType

Gets a value indicating whether or not the Transform is rigid. A rigid transformation can be broken into a proper rotation and a translation, while an isometry transformation could also include a reflection.

Permanent link · Official RhinoCommon reference

IsAffine

def IsAffine(self) -> bool

Tests for an affine transformation. A transformation is affine if it is valid and its last row is [0, 0, 0, 1]. An affine transformation can be broken into a linear transformation and a translation.

Permanent link · Official RhinoCommon reference

IsLinear

def IsLinear(self) -> bool

Tests for a linear transformation. A transformation is affine if it is valid and its last row is [0, 0, 0, 1]. If in addition its last column is ( 0, 0, 0, 1)^T then it is linear. An affine transformation can be broken into a linear transformation and a translation.

Permanent link · Official RhinoCommon reference

IsRotation

def IsRotation(self) -> bool

Returns true if this is a proper rotation.

Permanent link · Official RhinoCommon reference

Determinant

def Determinant(self) -> float

The determinant of this 4x4 matrix.

Permanent link · Official RhinoCommon reference

Affineize

def Affineize(self) -> None

Replaces the last row with (0 0 0 1), discarding any perspective part of this transform

Permanent link · Official RhinoCommon reference

ChangeBasis

def ChangeBasis(P0: Point3d, X0: Vector3d, Y0: Vector3d, Z0: Vector3d, P1: Point3d, X1: Vector3d, Y1: Vector3d, Z1: Vector3d) -> Transform
def ChangeBasis(plane0: Plane, plane1: Plane) -> Transform
def ChangeBasis(X0: Vector3d, Y0: Vector3d, Z0: Vector3d, X1: Vector3d, Y1: Vector3d, Z1: Vector3d) -> Transform

ChangeBasis converts coordinate descriptions between frames, rather than orienting geometry from one plane to another.

Local coordinates and world coordinates can describe the same spatial point. Check source and destination order using a known point.

Permanent link · Official RhinoCommon reference

Clone

def Clone(self) -> Transform

Returns a deep copy of the transform. For languages that treat structures as value types, this can be accomplished by a simple assignment.

Permanent link · Official RhinoCommon reference

CompareTo

def CompareTo(self, other: Transform) -> int

Compares this transform with another transform. M33 has highest value, then M32, etc..

Permanent link · Official RhinoCommon reference

DecomposeAffine

DecomposeAffine.Overloads[CLR signature](...)

Rhino 8 Python.NET needs explicit CLR selection for this ambiguous output-only overload group.

Choose the required decomposition through Overloads and use its matching tuple. Decomposition conventions and available result shapes differ.

Permanent link · Official RhinoCommon reference

DecomposeRigid

def DecomposeRigid(self, tolerance: float) -> tuple[TransformRigidType, Vector3d, Transform]

Decomposes a rigid transformation. The transformation must be affine.

Permanent link · Official RhinoCommon reference

DecomposeSimilarity

def DecomposeSimilarity(self, tolerance: float) -> tuple[TransformSimilarityType, Vector3d, float, Transform]

Decomposes a similarity transformation. The transformation must be affine. A similarity transformation can be broken into a sequence of a dilation, translation, rotation, and a reflection.

Permanent link · Official RhinoCommon reference

DecomposeSymmetric

def DecomposeSymmetric(self) -> tuple[bool, Transform, Vector3d]

A Symmetric linear transformation can be decomposed A = Q * Diag * Q ^ T, where Diag is a diagonal transformation. Diag[i][i] is an eigenvalue of A and the i-th column of Q is a corresponding unit length eigenvector. Note, this transformation must be Linear and Symmetric.

Permanent link · Official RhinoCommon reference

DecomposeTextureMapping

def DecomposeTextureMapping(self) -> tuple[Vector3d, Vector3d, Vector3d]

Decomposition of a uvw transform into components

Permanent link · Official RhinoCommon reference

Diagonal

def Diagonal(d0: float, d1: float, d2: float) -> Transform
def Diagonal(diagonal: Vector3d) -> Transform

Constructs a new transformation with diagonal (d0,d1,d2,1.0).

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, other: Transform) -> bool
def Equals(self, obj: Any) -> bool

Determines if another transform equals this transform value.

Permanent link · Official RhinoCommon reference

GetEulerZYZ

def GetEulerZYZ(self) -> tuple[bool, float, float, float]

Find the Euler angles for a rotation transformation.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Gets a non-unique hashing code for this transform.

Permanent link · Official RhinoCommon reference

GetQuaternion

def GetQuaternion(self) -> tuple[bool, Quaternion]

If this transform is a proper rotation, then find the equivalent quaternion.

Permanent link · Official RhinoCommon reference

GetYawPitchRoll

def GetYawPitchRoll(self) -> tuple[bool, float, float, float]

Find the Tait-Byran angles (also loosely called Euler angles) for a rotation transformation.

Permanent link · Official RhinoCommon reference

IsRigid

def IsRigid(self, tolerance: float) -> TransformRigidType

Gets a value indicating whether or not the Transform is rigid. A rigid transformation can be broken into a proper rotation and a translation, while an isometry transformation could also include a reflection.

Permanent link · Official RhinoCommon reference

IsSimilarity

def IsSimilarity(self, tolerance: float) -> TransformSimilarityType

Gets a value indicating whether or not the Transform maintains similarity. A similarity transformation can be broken into a sequence of a dilation, translation, rotation, and a reflection.

Permanent link · Official RhinoCommon reference

IsZeroTransformationWithTolerance

def IsZeroTransformationWithTolerance(self, zeroTolerance: float) -> bool

True if all values are 0 within tolerance, except for M33 which is exactly 1.

Permanent link · Official RhinoCommon reference

IsZeroTransformaton

def IsZeroTransformaton(self, zeroTolerance: float) -> bool

True if all values are 0 within tolerance, except for M33 which is exactly 1.

Permanent link · Official RhinoCommon reference

Linearize

def Linearize(self) -> None

Affinitize() and replaces the last column with (0 0 0 1)^T, discarding any translation part of this transform.

Permanent link · Official RhinoCommon reference

Mirror

def Mirror(mirrorPlane: Plane) -> Transform
def Mirror(pointOnMirrorPlane: Point3d, normalToMirrorPlane: Vector3d) -> Transform

Constructs a new Mirror transformation.

Permanent link · Official RhinoCommon reference

Multiply

def Multiply(a: Transform, b: Transform) -> Transform

Composition is ordered. For A*B applied to a point, B acts first, followed by A.

Translation and rotation generally do not commute. Test composition on a known point and frame when assembling transforms from multiple sources.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
translate = rg.Transform.Translation(10, 0, 0)
scale = rg.Transform.Scale(rg.Point3d(0, 0, 0), 2)
combined = rg.Transform.Multiply(translate, scale)
p = rg.Point3d(1, 0, 0)
p.Transform(combined)
assert abs(p.X - 12) < 1e-9

Permanent link · Official RhinoCommon reference

Orthogonalize

def Orthogonalize(self, tolerance: float) -> bool

Force the linear part of this transformation to be a rotation (or a rotation with reflection). Use DecomposeRigid(T,R) to find the nearest rotation.

Permanent link · Official RhinoCommon reference

PlanarProjection

def PlanarProjection(plane: Plane) -> Transform

Constructs a projection transformation.

Permanent link · Official RhinoCommon reference

PlaneToPlane

def PlaneToPlane(plane0: Plane, plane1: Plane) -> Transform

PlaneToPlane moves geometry from one plane frame onto another.

This active transform differs from ChangeBasis, which converts coordinate descriptions. Choose according to whether geometry moves or only its coordinates change frame.

Permanent link · Official RhinoCommon reference

ProjectAlong

def ProjectAlong(plane: Plane, direction: Vector3d) -> Transform

Construct a projection onto a plane along a specific direction.

Permanent link · Official RhinoCommon reference

Rotation

def Rotation(angleRadians: float, rotationAxis: Vector3d, rotationCenter: Point3d) -> Transform
def Rotation(angleRadians: float, rotationCenter: Point3d) -> Transform
def Rotation(sinAngle: float, cosAngle: float, rotationAxis: Vector3d, rotationCenter: Point3d) -> Transform
def Rotation(startDirection: Vector3d, endDirection: Vector3d, rotationCenter: Point3d) -> Transform
def Rotation(x0: Vector3d, y0: Vector3d, z0: Vector3d, x1: Vector3d, y1: Vector3d, z1: Vector3d) -> Transform

Rotations depend on axis, angle, and sometimes center. Angle-based overloads generally use radians.

Read the selected overload: direction alignment and angle-axis rotation express different inputs. Rotation about a distant center also moves positions.

Permanent link · Official RhinoCommon reference

RotationZYX

def RotationZYX(yaw: float, pitch: float, roll: float) -> Transform

Create rotation transformation From Tait-Byran angles (also loosely known as Euler angles).

Permanent link · Official RhinoCommon reference

RotationZYZ

def RotationZYZ(alpha: float, beta: float, gamma: float) -> Transform

Create rotation transformation From Euler angles.

Permanent link · Official RhinoCommon reference

Scale

def Scale(anchor: Point3d, scaleFactor: float) -> Transform
def Scale(plane: Plane, xScaleFactor: float, yScaleFactor: float, zScaleFactor: float) -> Transform

Uniform scaling preserves angles; nonuniform scaling generally changes them. Negative factors can reverse orientation.

Factors are dimensionless. Verify handedness, normals, and solid orientation after reflections or a negative determinant transform.

Permanent link · Official RhinoCommon reference

Shear

def Shear(plane: Plane, x: Vector3d, y: Vector3d, z: Vector3d) -> Transform

Constructs a Shear transformation.

Permanent link · Official RhinoCommon reference

TextureMapping

def TextureMapping(offset: Vector3d, repeat: Vector3d, rotation: Vector3d) -> Transform

Construct a UVW Transform from components.

Permanent link · Official RhinoCommon reference

ToDoubleArray

def ToDoubleArray(self, rowDominant: bool) -> Sequence[float]

Return the matrix as a linear array of 16 double values.

Permanent link · Official RhinoCommon reference

ToFloatArray

def ToFloatArray(self, rowDominant: bool) -> Sequence[float]

Return the matrix as a linear array of 16 float values.

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str

Returns a string representation of this transform.

Permanent link · Official RhinoCommon reference

TransformBoundingBox

def TransformBoundingBox(self, bbox: BoundingBox) -> BoundingBox

Computes a new bounding box that is the smallest axis aligned bounding box that contains the transformed result of its 8 original corner points.

Permanent link · Official RhinoCommon reference

TransformList

def TransformList(self, points: Iterable[Point3d]) -> Sequence[Point3d]

Given a list, an array or any enumerable set of points, computes a new array of transformed points.

Permanent link · Official RhinoCommon reference

Translation

def Translation(dx: float, dy: float, dz: float) -> Transform
def Translation(motion: Vector3d) -> Transform

Translation moves positions by a displacement while leaving pure directions unchanged.

Homogeneous coordinates distinguish positions and directions. Ensure displacement coordinates use the same model units as the geometry.

Permanent link · Official RhinoCommon reference

Transpose

def Transpose(self) -> Transform

Flip row/column values

Permanent link · Official RhinoCommon reference

TryGetInverse

def TryGetInverse(self) -> tuple[bool, Transform]

Only nonsingular transforms have a unique inverse. Check success before using the output.

Projection and zero scaling lose information. Near-singular transforms can amplify floating-point errors even when inversion succeeds.

Permanent link · Official RhinoCommon reference

TransformRigidType

0 members
TransformRigidType

Lists all possible outcomes for rigid transformation.

Permanent link · Official RhinoCommon reference

TransformSimilarityType

0 members
TransformSimilarityType

Lists all possible outcomes for transform similarity.

Permanent link · Official RhinoCommon reference

Triangle3d

39 members
Triangle3dmeshesparameters

Collinear or coincident triangle vertices produce zero area and degenerate barycentric calculations.

Very thin triangles can also be numerically sensitive. Validate before using triangles for normals, interpolation, or collision predicates.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, a: Point3d, b: Point3d, c: Point3d) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

A

def A(self) -> Point3d

Gets the first triangle corner.

Permanent link · Official RhinoCommon reference

B

def B(self) -> Point3d

Gets the second triangle corner.

Permanent link · Official RhinoCommon reference

C

def C(self) -> Point3d

Gets the third triangle corner.

Permanent link · Official RhinoCommon reference

Circumcircle

def Circumcircle(self) -> Circle

Gets the circumcircle of this triangle.

Permanent link · Official RhinoCommon reference

BoundingBox

def BoundingBox(self) -> BoundingBox

Gets the bounding box of this triangle.

Permanent link · Official RhinoCommon reference

AngleA

def AngleA(self) -> float

Gets the angle at the A corner.

Permanent link · Official RhinoCommon reference

AngleB

def AngleB(self) -> float

Gets the angle at the B corner.

Permanent link · Official RhinoCommon reference

AngleC

def AngleC(self) -> float

Gets the angle at the C corner.

Permanent link · Official RhinoCommon reference

AB

def AB(self) -> Line

Gets the triangle edge connecting the A and B corners.

Permanent link · Official RhinoCommon reference

BC

def BC(self) -> Line

Gets the triangle edge connecting the B and C corners.

Permanent link · Official RhinoCommon reference

CA

def CA(self) -> Line

Gets the triangle edge connecting the C and A corners.

Permanent link · Official RhinoCommon reference

MedianA

def MedianA(self) -> Line

Gets the median line starting at corner A.

Permanent link · Official RhinoCommon reference

MedianB

def MedianB(self) -> Line

Gets the median line starting at corner B.

Permanent link · Official RhinoCommon reference

MedianC

def MedianC(self) -> Line

Gets the median line starting at corner C.

Permanent link · Official RhinoCommon reference

AltitudeA

def AltitudeA(self) -> Line

Gets the altitude line starting at corner A.

Permanent link · Official RhinoCommon reference

AltitudeB

def AltitudeB(self) -> Line

Gets the altitude line starting at corner B.

Permanent link · Official RhinoCommon reference

AltitudeC

def AltitudeC(self) -> Line

Gets the altitude line starting at corner C.

Permanent link · Official RhinoCommon reference

PerpendicularAB

def PerpendicularAB(self) -> Line

Gets the perpendicular bisector for edge AB.

Permanent link · Official RhinoCommon reference

PerpendicularBC

def PerpendicularBC(self) -> Line

Gets the perpendicular bisector for edge BC.

Permanent link · Official RhinoCommon reference

PerpendicularCA

def PerpendicularCA(self) -> Line

Gets the perpendicular bisector for edge CA.

Permanent link · Official RhinoCommon reference

Perimeter

def Perimeter(self) -> float

Gets the perimeter of this triangle. This is the sum of the lengths of all edges.

Permanent link · Official RhinoCommon reference

Area

def Area(self) -> float

Gets the area inside this triangle.

Permanent link · Official RhinoCommon reference

AreaCenter

def AreaCenter(self) -> Point3d

Gets the triangle area centroid.

Permanent link · Official RhinoCommon reference

Orthocenter

def Orthocenter(self) -> Point3d

Gets the triangle orthocenter.

Permanent link · Official RhinoCommon reference

Circumcenter

def Circumcenter(self) -> Point3d

Gets the triangle circumcenter.

Permanent link · Official RhinoCommon reference

BarycentricCoordsAt

def BarycentricCoordsAt(self, point: Point3d) -> tuple[Point2d, float]

Gets the projection of a point onto the barycentric coordinates.

Permanent link · Official RhinoCommon reference

ClosestParameterOnBoundary

def ClosestParameterOnBoundary(self, point: Point3d) -> float

Gets the parameter on the triangle boundary closest to a test point.

Permanent link · Official RhinoCommon reference

ClosestPointOnBoundary

def ClosestPointOnBoundary(self, point: Point3d) -> Point3d

Gets the point on the triangle boundary closest to a test point.

Permanent link · Official RhinoCommon reference

PointAlongBoundary

def PointAlongBoundary(self, t: float) -> Point3d

Gets the point along the boundary of the triangle. The triangle boundary has a domain [0, 3] where each subsequent unit domain maps to a different edge.

Permanent link · Official RhinoCommon reference

PointAtBarycentricCoords

def PointAtBarycentricCoords(self, coords: Point2d) -> Point3d

Barycentric weights interpolate relative to triangle vertices. Interior weights are nonnegative and sum to one.

Out-of-range weights extrapolate. Degenerate triangles cannot support a stable inverse barycentric mapping.

Permanent link · Official RhinoCommon reference

PointOnInterior

def PointOnInterior(self, u: float, v: float) -> Point3d

Gets the point on the triangle using the AB and AC primary axes.

Permanent link · Official RhinoCommon reference

ToMesh

def ToMesh(self) -> Mesh

Create a mesh from this triangle.

Permanent link · Official RhinoCommon reference

ToPolyline

def ToPolyline(self) -> Polyline

Create a polyline from this triangle.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, transform: Transform) -> Triangle3d

Transform this triangle.

Permanent link · Official RhinoCommon reference

TrySmallestEnclosingTriangle

def TrySmallestEnclosingTriangle(points: Iterable[Point2d], tolerance: float) -> tuple[bool, Triangle3d]

Attempt to create the smallest triangle containing a set of planar points.

Permanent link · Official RhinoCommon reference

WithA

def WithA(self, a: Point3d) -> Triangle3d

Replace the A corner.

Permanent link · Official RhinoCommon reference

WithB

def WithB(self, b: Point3d) -> Triangle3d

Replace the B corner.

Permanent link · Official RhinoCommon reference

WithC

def WithC(self, c: Point3d) -> Triangle3d

Replace the C corner.

Permanent link · Official RhinoCommon reference

Unroller

8 members
Unrollersurfaces

Unrolling aims to flatten developable geometry while retaining correspondence to associated objects.

Surfaces with nonzero Gaussian curvature cannot generally flatten isometrically. Check distortion before using flattened geometry for fabrication.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self, brep: Brep) -> None
def __init__(self, surface: Surface) -> None

Initializes a new instance of the Rhino.Geometry.Unroller class with a brep.

Permanent link · Official RhinoCommon reference

ExplodeOutput

def ExplodeOutput(self) -> bool

Gets or sets a value determining whether geometry should be exploded.

Permanent link · Official RhinoCommon reference

ExplodeSpacing

def ExplodeSpacing(self) -> float

Gets or sets a value determining whether spacing should be exploded.

Permanent link · Official RhinoCommon reference

AbsoluteTolerance

def AbsoluteTolerance(self) -> float

Gets or sets the absolute tolerance for the unrolling operation. Absolute tolerance is used in the evaluation of new entities, such as intersections, re-projections and splits. In the current implementation, absolute tolerance is used in tessellating rails, fitting curves and pulling back trims.

Permanent link · Official RhinoCommon reference

RelativeTolerance

def RelativeTolerance(self) -> float

Gets or sets the relative tolerance for the unrolling operation. Relative tolerance is used in the evaluation of intrinsic properties, such as computations "along" the surface or brep. In the current implementation, relative tolerance is used to decide if a surface is flat enough to try to unroll. That helps ease the scale dependency. The surface has to be linear in one direction within (length * RelativeTolerance) to be considered linear for that purpose. Otherwise smash will ignore that tolerance and unroll anything.

Permanent link · Official RhinoCommon reference

AddFollowingGeometry

def AddFollowingGeometry(self, curve: Curve) -> None
def AddFollowingGeometry(self, curves: Iterable[Curve]) -> None
def AddFollowingGeometry(self, dot: TextDot) -> None
def AddFollowingGeometry(self, dotLocation: Point3d, dotText: str) -> None
def AddFollowingGeometry(self, dotLocations: Iterable[Point3d], dotText: Iterable[str]) -> None
def AddFollowingGeometry(self, dots: Iterable[TextDot]) -> None
def AddFollowingGeometry(self, point: Point) -> None
def AddFollowingGeometry(self, point: Point3d) -> None
def AddFollowingGeometry(self, points: Iterable[Point3d]) -> None

Adds a curve that should be unrolled along with the surface/brep.

Permanent link · Official RhinoCommon reference

FollowingGeometryIndex

def FollowingGeometryIndex(self, curve: Curve) -> int
def FollowingGeometryIndex(self, dot: TextDot) -> int

Given an unrolled curve, returns the index of the source, or following curve.

Permanent link · Official RhinoCommon reference

PerformUnroll

def PerformUnroll(self) -> tuple[Sequence[Brep], Sequence[Curve], Sequence[Point3d], Sequence[TextDot]]
def PerformUnroll(self, flatbreps: Iterable[Brep]) -> int

Executes unrolling operations.

Permanent link · Official RhinoCommon reference

Vector2d

21 members
Vector2d

Represents the two components of a vector in two-dimensional space, using System.Double-precision floating point numbers.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, x: float, y: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

X

def X(self) -> float

Gets or sets the X (first) component of this vector.

Permanent link · Official RhinoCommon reference

Y

def Y(self) -> float

Gets or sets the Y (second) component of this vector.

Permanent link · Official RhinoCommon reference

Length

def Length(self) -> float

Computes the length (or magnitude, or size) of this vector. This is an application of Pythagoras' theorem.

Permanent link · Official RhinoCommon reference

Zero

Zero: ClassVar[Vector2d]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Vector2d]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets a value indicating whether this vector is valid. A valid vector must be formed of valid component values for x, y and z.

Permanent link · Official RhinoCommon reference

SquareLength

def SquareLength(self) -> float

Returns the square of the length of the vector.

Permanent link · Official RhinoCommon reference

Add

def Add(vector1: Vector2d, vector2: Vector2d) -> Vector2d

Sums up two vectors. (Provided for languages that do not support operator overloading. You can use the + operator otherwise)

Permanent link · Official RhinoCommon reference

CompareTo

def CompareTo(self, other: Vector2d) -> int

Compares this Rhino.Geometry.Vector2d with another Rhino.Geometry.Vector2d. Components evaluation priority is first X, then Y.

Permanent link · Official RhinoCommon reference

Divide

def Divide(vector: Vector2d, t: float) -> Vector2d

Divides a Rhino.Geometry.Vector2d by a number, having the effect of shrinking it. (Provided for languages that do not support operator overloading. You can use the / operator otherwise)

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Vector2d, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, vector: Vector2d) -> bool
def Equals(self, obj: Any) -> bool

Determines whether the specified vector has the same value as the present vector.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Provides a hashing value for the present vector.

Permanent link · Official RhinoCommon reference

IsTiny

def IsTiny(self) -> bool
def IsTiny(self, tolerance: float) -> bool

Uses RhinoMath.ZeroTolerance for IsTiny calculation.

Permanent link · Official RhinoCommon reference

Multiply

def Multiply(t: float, vector: Vector2d) -> Vector2d
def Multiply(vector: Vector2d, t: float) -> Vector2d
def Multiply(vector1: Vector2d, vector2: Vector2d) -> float

Multiplies a vector by a number, having the effect of scaling it. (Provided for languages that do not support operator overloading. You can use the * operator otherwise)

Permanent link · Official RhinoCommon reference

Negate

def Negate(vector: Vector2d) -> Vector2d

Computes the reversed vector. (Provided for languages that do not support operator overloading. You can use the - unary operator otherwise)

Permanent link · Official RhinoCommon reference

Rotate

def Rotate(self, angleRadians: float) -> bool

Rotates this vector.

Permanent link · Official RhinoCommon reference

Subtract

def Subtract(vector1: Vector2d, vector2: Vector2d) -> Vector2d

Subtracts the second vector from the first one. (Provided for languages that do not support operator overloading. You can use the - operator otherwise)

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str
def ToString(self, format: str, formatProvider: Any) -> str

Constructs a string representation of the current vector.

Permanent link · Official RhinoCommon reference

Unitize

def Unitize(self) -> bool

Unitizes the vector in place. A unit vector has length 1 unit. An invalid or zero length vector cannot be unitized.

Permanent link · Official RhinoCommon reference

Vector2f

24 members
Vector2f

Represents the two components of a vector in two-dimensional space, using System.Single-precision floating point numbers.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, x: float, y: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Zero

Zero: ClassVar[Vector2f]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

XAxis

XAxis: ClassVar[Vector2f]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

YAxis

YAxis: ClassVar[Vector2f]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Vector2f]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

X

def X(self) -> float

Gets or sets the X (first) component of this vector.

Permanent link · Official RhinoCommon reference

Y

def Y(self) -> float

Gets or sets the Y (second) component of this vector.

Permanent link · Official RhinoCommon reference

IsZero

def IsZero(self) -> bool

Gets a value indicating whether the X, Y, and Z values are all equal to 0.0.

Permanent link · Official RhinoCommon reference

IsUnitVector

def IsUnitVector(self) -> bool

Gets a value indicating whether or not this is a unit vector. A unit vector has length 1.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Returns an indication regarding the validity of this vector.

Permanent link · Official RhinoCommon reference

SquareLength

def SquareLength(self) -> float

Returns the square of the length of this vector. This method does not check for the validity of its inputs.

Permanent link · Official RhinoCommon reference

Length

def Length(self) -> float

Computes the length (or magnitude, or size) of this vector. This is an application of Pythagoras' theorem. If this vector is invalid, its length is considered 0.

Permanent link · Official RhinoCommon reference

Add

def Add(point: Point2f, vector: Vector2f) -> Point2f
def Add(vector1: Vector2f, vector2: Vector2f) -> Vector2f

Sums up a point and a vector, and returns a new point. (Provided for languages that do not support operator overloading. You can use the + operator otherwise)

Permanent link · Official RhinoCommon reference

CompareTo

def CompareTo(self, other: Vector2f) -> int

Compares this Rhino.Geometry.Vector2f with another Rhino.Geometry.Vector2f. Components evaluation priority is first X, then Y.

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Vector2f, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, vector: Vector2f) -> bool
def Equals(self, obj: Any) -> bool

Determines whether the specified vector has the same values as the present vector.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Computes a hash number that represents the current vector.

Permanent link · Official RhinoCommon reference

Multiply

def Multiply(point1: Vector2f, point2: Vector2f) -> float

Multiplies two Rhino.Geometry.Vector2f together, returning the dot (internal) product of the two. (Provided for languages that do not support operator overloading. You can use the * operator otherwise)

Permanent link · Official RhinoCommon reference

Negate

def Negate(vector: Vector2f) -> Vector2f

Computes the reversed vector. (Provided for languages that do not support operator overloading. You can use the - unary operator otherwise)

Permanent link · Official RhinoCommon reference

PerpendicularTo

def PerpendicularTo(self, other: Vector2f) -> bool

Sets this vector to be perpendicular to another vector. Result is not unitized.

Permanent link · Official RhinoCommon reference

Reverse

def Reverse(self) -> bool

Reverses this vector in place (reverses the direction). If this vector contains RhinoMath.UnsetValue, the reverse will also be invalid and false will be returned.

Permanent link · Official RhinoCommon reference

Subtract

def Subtract(vector1: Vector2f, vector2: Vector2f) -> Vector2f

Subtracts the second vector from the first one. (Provided for languages that do not support operator overloading. You can use the - operator otherwise)

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str
def ToString(self, format: str, formatProvider: Any) -> str

Constructs the string representation of the current vector.

Permanent link · Official RhinoCommon reference

Unitize

def Unitize(self) -> bool

Unitizes the vector in place. A unit vector has length 1 unit. An invalid or zero length vector cannot be unitized.

Permanent link · Official RhinoCommon reference

Vector3d

39 members
Vector3danglesmutationvectors

A vector has direction and magnitude but no position. The zero vector cannot define a usable direction.

Displacements carry length units, while unit normals and directions are dimensionless. Validate and normalize before constructing a frame from directions.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, point: Point3d) -> None
def __init__(self, vector: Vector3d) -> None
def __init__(self, vector: Vector3f) -> None
def __init__(self, x: float, y: float, z: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Zero

Zero: ClassVar[Vector3d]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

XAxis

XAxis: ClassVar[Vector3d]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

YAxis

YAxis: ClassVar[Vector3d]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ZAxis

ZAxis: ClassVar[Vector3d]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Vector3d]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

X

def X(self) -> float

Gets or sets the X (first) component of the vector.

Permanent link · Official RhinoCommon reference

Y

def Y(self) -> float

Gets or sets the Y (second) component of the vector.

Permanent link · Official RhinoCommon reference

Z

def Z(self) -> float

Gets or sets the Z (third) component of the vector.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Gets a value indicating whether this vector is valid. A valid vector must be formed of valid component values for x, y and z.

Permanent link · Official RhinoCommon reference

MinimumCoordinate

def MinimumCoordinate(self) -> float

Gets the smallest (both positive and negative) component value in this vector.

Permanent link · Official RhinoCommon reference

MaximumCoordinate

def MaximumCoordinate(self) -> float

Gets the largest (both positive and negative) component value in this vector, as an absolute value.

Permanent link · Official RhinoCommon reference

Length

def Length(self) -> float

Computes the length (or magnitude, or size) of this vector. This is an application of Pythagoras' theorem. If this vector is invalid, its length is considered 0.

Permanent link · Official RhinoCommon reference

SquareLength

def SquareLength(self) -> float

Computes the squared length (or magnitude, or size) of this vector. This is an application of Pythagoras' theorem. While the Length property checks for input validity, this property does not. You should check validity in advance, if this vector can be invalid.

Permanent link · Official RhinoCommon reference

IsUnitVector

def IsUnitVector(self) -> bool

Gets a value indicating whether or not this is a unit vector. A unit vector has length 1.

Permanent link · Official RhinoCommon reference

IsZero

def IsZero(self) -> bool

Gets a value indicating whether the X, Y, and Z values are all equal to 0.0.

Permanent link · Official RhinoCommon reference

Add

def Add(vector1: Vector3d, vector2: Vector3d) -> Vector3d

Sums up two vectors. (Provided for languages that do not support operator overloading. You can use the + operator otherwise)

Permanent link · Official RhinoCommon reference

AreOrthogonal

def AreOrthogonal(x: Vector3d, y: Vector3d, z: Vector3d) -> bool

Test whether three vectors describe an orthogonal axis system. All vectors must be mutually perpendicular this to be the case.

Permanent link · Official RhinoCommon reference

AreOrthonormal

def AreOrthonormal(x: Vector3d, y: Vector3d, z: Vector3d) -> bool

Test whether three vectors describe an orthogonal, unit axis system. All vectors must be mutually perpendicular and have unit length for this to be the case.

Permanent link · Official RhinoCommon reference

AreRighthanded

def AreRighthanded(x: Vector3d, y: Vector3d, z: Vector3d) -> bool

Test whether three vectors describe a right-handed, orthogonal, unit axis system. The vectors must be orthonormal and follow the right-hand ordering; index-finger=x, middle-finger=y, thumb=z.

Permanent link · Official RhinoCommon reference

CompareTo

def CompareTo(self, other: Vector3d) -> int

Compares this Rhino.Geometry.Vector3d with another Rhino.Geometry.Vector3d. Component evaluation priority is first X, then Y, then Z.

Permanent link · Official RhinoCommon reference

CrossProduct

def CrossProduct(a: Vector3d, b: Vector3d) -> Vector3d

The cross product is perpendicular to both inputs. Reversing their order reverses its direction.

Its magnitude equals the area of the parallelogram spanned by the inputs. Parallel inputs produce a zero vector, so check before normalizing the result.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
x, y = rg.Vector3d(1, 0, 0), rg.Vector3d(0, 1, 0)
z = rg.Vector3d.CrossProduct(x, y)
assert z.Z == 1.0

Permanent link · Official RhinoCommon reference

Divide

def Divide(vector: Vector3d, t: float) -> Vector3d

Divides a Rhino.Geometry.Vector3d by a number, having the effect of shrinking it. (Provided for languages that do not support operator overloading. You can use the / operator otherwise)

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Vector3d, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, vector: Vector3d) -> bool
def Equals(self, obj: Any) -> bool

Determines whether the specified vector has the same value as the present vector.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Computes the hash code for the current vector.

Permanent link · Official RhinoCommon reference

IsParallelTo

def IsParallelTo(self, other: Vector3d) -> int
def IsParallelTo(self, other: Vector3d, angleTolerance: float) -> int

The result is an integer classification: 1 parallel, -1 antiparallel, and 0 neither.

Do not interpret every nonzero result as identical direction. Supply an explicit angular tolerance when the decision depends on it.

Permanent link · Official RhinoCommon reference

IsPerpendicularTo

def IsPerpendicularTo(self, other: Vector3d) -> bool
def IsPerpendicularTo(self, other: Vector3d, angleTolerance: float) -> bool

Test to see whether this vector is perpendicular to within one degree of another one.

Permanent link · Official RhinoCommon reference

IsTiny

def IsTiny(self) -> bool
def IsTiny(self, tolerance: float) -> bool

Uses RhinoMath.ZeroTolerance for IsTiny calculation.

Permanent link · Official RhinoCommon reference

Multiply

def Multiply(t: float, vector: Vector3d) -> Vector3d
def Multiply(vector: Vector3d, t: float) -> Vector3d
def Multiply(vector1: Vector3d, vector2: Vector3d) -> float

Vector-vector multiplication returns a dot product; vector-scalar multiplication changes magnitude. RhinoCommon has no Vector3d.DotProduct method.

The dot product equals the product of lengths times the cosine of the angle. It supports projection and perpendicularity tests for valid nonzero vectors.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
a = rg.Vector3d(1, 0, 0)
b = rg.Vector3d(0, 1, 0)
assert rg.Vector3d.Multiply(a, b) == 0.0

Permanent link · Official RhinoCommon reference

Negate

def Negate(vector: Vector3d) -> Vector3d

Computes the reversed vector. (Provided for languages that do not support operator overloading. You can use the - unary operator otherwise)

Permanent link · Official RhinoCommon reference

PerpendicularTo

def PerpendicularTo(self, other: Vector3d) -> bool
def PerpendicularTo(self, point0: Point3d, point1: Point3d, point2: Point3d) -> bool

Sets this vector to be perpendicular to another vector. Result is not unitized.

Permanent link · Official RhinoCommon reference

Reverse

def Reverse(self) -> bool

Reverse modifies the vector and returns a Boolean. Its direction changes sign while magnitude is preserved.

Reversing a normal changes its positive side. It does not change the underlying surface's topological orientation.

Permanent link · Official RhinoCommon reference

Rotate

def Rotate(self, angleRadians: float, rotationAxis: Vector3d) -> bool

Rotates this vector around a given axis.

Permanent link · Official RhinoCommon reference

Subtract

def Subtract(vector1: Vector3d, vector2: Vector3d) -> Vector3d

Subtracts the second vector from the first one. (Provided for languages that do not support operator overloading. You can use the - operator otherwise)

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str
def ToString(self, format: str, formatProvider: Any) -> str

Returns the string representation of the current vector, in the form X,Y,Z.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, transformation: Transform) -> None

Transforms the vector in place. The transformation matrix acts on the left of the vector; i.e., result = transformation*vector

Permanent link · Official RhinoCommon reference

Unitize

def Unitize(self) -> bool

Unitize modifies this vector and reports success. A zero or invalid vector cannot provide a normalized direction.

Check the Boolean return. Normalization discards magnitude, so copy the vector first when its original length is needed.

Rhino 8 Python example · geometry in memory

import Rhino.Geometry as rg
v = rg.Vector3d(3, 0, 0)
if not v.Unitize():
    raise ValueError("A direction requires a nonzero vector")
assert abs(v.Length - 1) < 1e-9

Permanent link · Official RhinoCommon reference

VectorAngle

def VectorAngle(a: Vector3d, b: Vector3d) -> float
def VectorAngle(a: Vector3d, b: Vector3d, plane: Plane) -> float
def VectorAngle(v1: Vector3d, v2: Vector3d, vNormal: Vector3d) -> float

Angles are in radians. Choose a plane or normal overload when orientation of the angle matters.

The two-vector overload gives an unsigned angle. Zero vectors do not define an angle; validate inputs before interpreting the measurement.

Permanent link · Official RhinoCommon reference

Vector3f

30 members
Vector3f

Represents the three components of a vector in three-dimensional space, using System.Single-precision floating point numbers.

Permanent link · Official RhinoCommon reference

__init__

def __init__(self) -> None
def __init__(self, x: float, y: float, z: float) -> None

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Zero

Zero: ClassVar[Vector3f]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

XAxis

XAxis: ClassVar[Vector3f]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

YAxis

YAxis: ClassVar[Vector3f]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

ZAxis

ZAxis: ClassVar[Vector3f]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

Unset

Unset: ClassVar[Vector3f]

See the signature and official API documentation for this member.

Permanent link · Official RhinoCommon reference

X

def X(self) -> float

Gets or sets the X (first) component of this vector.

Permanent link · Official RhinoCommon reference

Y

def Y(self) -> float

Gets or sets the Y (second) component of this vector.

Permanent link · Official RhinoCommon reference

Z

def Z(self) -> float

Gets or sets the Z (third) component of this vector.

Permanent link · Official RhinoCommon reference

IsZero

def IsZero(self) -> bool

Gets a value indicating whether the X, Y, and Z values are all equal to 0.0.

Permanent link · Official RhinoCommon reference

IsUnitVector

def IsUnitVector(self) -> bool

Gets a value indicating whether or not this is a unit vector. A unit vector has length 1.

Permanent link · Official RhinoCommon reference

IsValid

def IsValid(self) -> bool

Returns an indication regarding the validity of this vector.

Permanent link · Official RhinoCommon reference

SquareLength

def SquareLength(self) -> float

Returns the square length of the vector. This property does not check for the validity of the inputs.

Permanent link · Official RhinoCommon reference

Length

def Length(self) -> float

Computes the length (or magnitude, or size) of this vector. This is an application of Pythagoras' theorem. If this vector is invalid, its length is considered 0.

Permanent link · Official RhinoCommon reference

Add

def Add(point: Point3f, vector: Vector3f) -> Point3f
def Add(vector1: Vector3f, vector2: Vector3f) -> Vector3f

Sums up a point and a vector, and returns a new point. (Provided for languages that do not support operator overloading. You can use the + operator otherwise)

Permanent link · Official RhinoCommon reference

CompareTo

def CompareTo(self, other: Vector3f) -> int

Compares this Rhino.Geometry.Vector3f with another Rhino.Geometry.Vector3f. Component evaluation priority is first X, then Y, then Z.

Permanent link · Official RhinoCommon reference

CrossProduct

def CrossProduct(a: Vector3f, b: Vector3f) -> Vector3f

Computes the cross product (or vector product, or exterior product) of two vectors. This operation is not commutative.

Permanent link · Official RhinoCommon reference

Divide

def Divide(vector: Vector3f, t: float) -> Vector3f

Divides a Rhino.Geometry.Vector3f by a number, having the effect of shrinking it, t times. (Provided for languages that do not support operator overloading. You can use the / operator otherwise)

Permanent link · Official RhinoCommon reference

EpsilonEquals

def EpsilonEquals(self, other: Vector3f, epsilon: float) -> bool

Check that all values in other are within epsilon of the values in this

Permanent link · Official RhinoCommon reference

Equals

def Equals(self, vector: Vector3f) -> bool
def Equals(self, obj: Any) -> bool

Determines whether the specified vector has the same values as the present vector.

Permanent link · Official RhinoCommon reference

GetHashCode

def GetHashCode(self) -> int

Computes a hash number that represents the current vector.

Permanent link · Official RhinoCommon reference

Multiply

def Multiply(point1: Vector3f, point2: Vector3f) -> float
def Multiply(t: float, vector: Vector3f) -> Vector3f
def Multiply(vector: Vector3f, t: float) -> Vector3f

Multiplies two Rhino.Geometry.Vector3f together, returning the dot (internal) product of the two. This is not the cross product. (Provided for languages that do not support operator overloading. You can use the * operator otherwise)

Permanent link · Official RhinoCommon reference

Negate

def Negate(vector: Vector3f) -> Vector3f

Computes the reversed vector. (Provided for languages that do not support operator overloading. You can use the - unary operator otherwise)

Permanent link · Official RhinoCommon reference

PerpendicularTo

def PerpendicularTo(self, other: Vector3f) -> bool

Sets this vector to be perpendicular to another vector. Result is not unitized.

Permanent link · Official RhinoCommon reference

Reverse

def Reverse(self) -> bool

Reverses this vector in place (reverses the direction). If this vector contains RhinoMath.UnsetValue, the reverse will also be invalid and false will be returned.

Permanent link · Official RhinoCommon reference

Rotate

def Rotate(self, angleRadians: float, rotationAxis: Vector3f) -> bool

Rotates this vector around a given axis.

Permanent link · Official RhinoCommon reference

Subtract

def Subtract(vector1: Vector3f, vector2: Vector3f) -> Vector3f

Subtracts the second vector from the first one. (Provided for languages that do not support operator overloading. You can use the - operator otherwise)

Permanent link · Official RhinoCommon reference

ToString

def ToString(self) -> str
def ToString(self, format: str, formatProvider: Any) -> str

Constructs the string representation of the current vector.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, transformation: Transform) -> None

Transforms the vector in place. The transformation matrix acts on the left of the vector; i.e., result = transformation*vector

Permanent link · Official RhinoCommon reference

Unitize

def Unitize(self) -> bool

Unitizes the vector in place. A unit vector has length 1 unit. An invalid or zero length vector cannot be unitized.

Permanent link · Official RhinoCommon reference

VolumeMassProperties

28 members
VolumeMassPropertiesmeasurement

Volume has cubed model units. For a physical solid interpretation, check that the boundary is closed and valid; orientation can affect signed quantities.

Topological validity is separate from fabrication constraints. A closed volume can still violate minimum thickness or other task requirements.

Permanent link · Official RhinoCommon reference

Volume

def Volume(self) -> float

Gets the volume solution.

Permanent link · Official RhinoCommon reference

VolumeError

def VolumeError(self) -> float

Gets the uncertainty in the volume calculation.

Permanent link · Official RhinoCommon reference

Centroid

def Centroid(self) -> Point3d

Gets the volume centroid in the world coordinate system.

Permanent link · Official RhinoCommon reference

CentroidError

def CentroidError(self) -> Vector3d

Gets the uncertainty in the Centroid calculation.

Permanent link · Official RhinoCommon reference

WorldCoordinatesFirstMoments

def WorldCoordinatesFirstMoments(self) -> Vector3d

Returns the world coordinate first moments if they were able to be calculated. X is integral of "x dm" over the volume Y is integral of "y dm" over the volume Z is integral of "z dm" over the volume.

Permanent link · Official RhinoCommon reference

WorldCoordinatesFirstMomentsError

def WorldCoordinatesFirstMomentsError(self) -> Vector3d

Uncertainty in world coordinates first moments calculation.

Permanent link · Official RhinoCommon reference

WorldCoordinatesSecondMoments

def WorldCoordinatesSecondMoments(self) -> Vector3d

Returns the world coordinate second moments if they were able to be calculated. X is integral of "xx dm" over the volume Y is integral of "yy dm" over the volume Z is integral of "zz dm" over the volume.

Permanent link · Official RhinoCommon reference

WorldCoordinatesSecondMomentsError

def WorldCoordinatesSecondMomentsError(self) -> Vector3d

Uncertainty in world coordinates second moments calculation.

Permanent link · Official RhinoCommon reference

WorldCoordinatesProductMoments

def WorldCoordinatesProductMoments(self) -> Vector3d

Returns the world coordinate product moments if they were able to be calculated. X is integral of "xy dm" over the volume Y is integral of "yz dm" over the volume Z is integral of "zx dm" over the volume.

Permanent link · Official RhinoCommon reference

WorldCoordinatesProductMomentsError

def WorldCoordinatesProductMomentsError(self) -> Vector3d

Uncertainty in world coordinates second moments calculation.

Permanent link · Official RhinoCommon reference

WorldCoordinatesMomentsOfInertia

def WorldCoordinatesMomentsOfInertia(self) -> Vector3d

The moments of inertia about the world coordinate axes. X = integral of (y^2 + z^2) dm Y = integral of (z^2 + x^2) dm Z = integral of (z^2 + y^2) dm.

Permanent link · Official RhinoCommon reference

WorldCoordinatesMomentsOfInertiaError

def WorldCoordinatesMomentsOfInertiaError(self) -> Vector3d

Uncertainty in world coordinates moments of inertia calculation.

Permanent link · Official RhinoCommon reference

WorldCoordinatesRadiiOfGyration

def WorldCoordinatesRadiiOfGyration(self) -> Vector3d

Radii of gyration with respect to world coordinate system. X = sqrt(integral of (y^2 + z^2) dm/M) Y = sqrt(integral of (z^2 + x^2) dm/M) Z = sqrt(integral of (z^2 + y^2) dm/M)

Permanent link · Official RhinoCommon reference

CentroidCoordinatesSecondMoments

def CentroidCoordinatesSecondMoments(self) -> Vector3d

Second moments with respect to centroid coordinate system. X = integral of (x-x0)^2 dm Y = integral of (y-y0)^2 dm Z = integral of (z-z0)^2 dm where (x0,y0,z0) = centroid.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesSecondMomentsError

def CentroidCoordinatesSecondMomentsError(self) -> Vector3d

Uncertainty in centroid coordinates second moments calculation.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesProductMoments

def CentroidCoordinatesProductMoments(self) -> Vector3d

Product moments with respect to centroid coordinate system.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesProductMomentsError

def CentroidCoordinatesProductMomentsError(self) -> Vector3d

Uncertainty in product moments with respect to centroid coordinate system.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesMomentsOfInertia

def CentroidCoordinatesMomentsOfInertia(self) -> Vector3d

Moments of inertia with respect to centroid coordinate system. X = integral of ((y-y0)^2 + (z-z0)^2) dm Y = integral of ((z-z0)^2 + (x-x0)^2) dm Z = integral of ((z-z0)^2 + (y-y0)^2) dm where (x0,y0,z0) = centroid.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesMomentsOfInertiaError

def CentroidCoordinatesMomentsOfInertiaError(self) -> Vector3d

Uncertainty in centroid coordinates moments of inertia calculation.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesRadiiOfGyration

def CentroidCoordinatesRadiiOfGyration(self) -> Vector3d

Radii of gyration with respect to centroid coordinate system. X = sqrt(integral of ((y-y0)^2 + (z-z0)^2) dm/M) Y = sqrt(integral of ((z-z0)^2 + (x-x0)^2) dm/M) Z = sqrt(integral of ((z-z0)^2 + (y-y0)^2) dm/M) where (x0,y0,z0) = centroid.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesPrincipalMoments

def CentroidCoordinatesPrincipalMoments(self) -> tuple[bool, float, Vector3d, float, Vector3d, float, Vector3d]

Calculates the eigenvalues and eigenvectors of the moments matrix with respect to centroid coordinates.

Permanent link · Official RhinoCommon reference

CentroidCoordinatesPrincipalMomentsOfInertia

def CentroidCoordinatesPrincipalMomentsOfInertia(self) -> tuple[bool, float, Vector3d, float, Vector3d, float, Vector3d]

Calculates the principal moments of inertia and principal axes with respect to centroid coordinates.

Permanent link · Official RhinoCommon reference

Compute

def Compute(brep: Brep) -> VolumeMassProperties
def Compute(brep: Brep, volume: bool, firstMoments: bool, secondMoments: bool, productMoments: bool) -> VolumeMassProperties
def Compute(brep: Brep, volume: bool, firstMoments: bool, secondMoments: bool, productMoments: bool, relativeTolerance: float, absoluteTolerance: float) -> VolumeMassProperties
def Compute(geometry: Iterable[GeometryBase]) -> VolumeMassProperties
def Compute(geometry: Iterable[GeometryBase], volume: bool, firstMoments: bool, secondMoments: bool, productMoments: bool) -> VolumeMassProperties
def Compute(mesh: Mesh) -> VolumeMassProperties
def Compute(mesh: Mesh, volume: bool, firstMoments: bool, secondMoments: bool, productMoments: bool) -> VolumeMassProperties
def Compute(surface: Surface) -> VolumeMassProperties
def Compute(surface: Surface, volume: bool, firstMoments: bool, secondMoments: bool, productMoments: bool) -> VolumeMassProperties

For a physical volume interpretation, check failure, closure, orientation, and validity.

Volume has cubed model units. An open or inconsistently oriented boundary can invalidate the physical meaning of a computed result.

Permanent link · Official RhinoCommon reference

Dispose

def Dispose(self) -> None

Actively reclaims unmanaged resources that this instance uses.

Permanent link · Official RhinoCommon reference

Sum

def Sum(self, summand: VolumeMassProperties) -> bool

Sum mass properties together to get an aggregate mass.

Permanent link · Official RhinoCommon reference

Transform

def Transform(self, xform: Transform) -> bool

On input, this contains the mass properties for some geometry G. On exit, this contains the mass properties for the transformed geometry xform(G).

Permanent link · Official RhinoCommon reference

WorldCoordinatesPrincipalMoments

def WorldCoordinatesPrincipalMoments(self) -> tuple[bool, float, Vector3d, float, Vector3d, float, Vector3d]

Calculates the eigenvalues and eigenvectors of moments matrix in world coordinates.

Permanent link · Official RhinoCommon reference

WorldCoordinatesPrincipalMomentsOfInertia

def WorldCoordinatesPrincipalMomentsOfInertia(self) -> tuple[bool, float, Vector3d, float, Vector3d, float, Vector3d]

Calculates the principal moments of inertia and principal axes with respect to world coordinates.

Permanent link · Official RhinoCommon reference