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.
Constructors
public ClippingPlaneSurface()
Constructs an empty clipping plane surface
Constructs a clipping plane surface from a Plane
Parameters:
| plane (Plane) |
Constructs a ClippingPlaneSurface from a PlaneSurface
Parameters:
| planeSurface (PlaneSurface) |
ClippingPlaneSurface
#Protected constructor for internal use.
Parameters:
| info (SerializationInfo) | Serialization data. |
| context (StreamingContext) | Serialization stream. |
Properties
The id of the dimstyle used by this clipping plane surface. This is used to help determine how the clipping plane is drawn with respect to things like arrows and fonts
Disposed
Indicates if this object has been disposed or the document it originally belonged to has been disposed.
HasBrepForm
Returns true if the Brep.TryConvertBrep function will be successful for this object
HasUserData
Gets true if this class has any custom information attached to it through UserData.
IsDeformable
true if object can be accurately modified with "squishy" transformations like projections, shears, and non-uniform scaling.
IsDocumentControlled
If true this object may not be modified. Any properties or functions that attempt to modify this object when it is set to "IsReadOnly" will throw a NotSupportedException.
Overrides: CommonObject.IsDocumentControlled
IsShallowDuplicate
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)
IsSubDFriendly
Returns true if the surface is a non-rational, uniform, natural or periodic, cubic NURBS surface. Otherwise, false is returned.
ObjectType
Useful for switch statements that need to differentiate between basic object types like points, curves, surfaces, and so on.
Should the object and layer participation lists be used when determining clipping
Determines if the PlaneDepth value should be used
UserData
List of custom information that is attached to this class.
UserDictionary
Dictionary of custom information attached to this class. The dictionary is actually user data provided as an easy to use shareable set of information.
Methods
Adds a viewport id to the list of viewports that this clipping plane clips.
Parameters:
| viewportId (Guid) | The id of the RhinoViewport to add. |
Returns: true if the viewport was added, false if the viewport is already in the list.
public void ClearClipParticipationLists()
Remove list of object ids that this clipping plane surface clips. This causes the clipping plane surface to clip all objects
ClosestPoint
Input the parameters of the point on the surface that is closest to testPoint.
ClosestSide
Gets the side that is closest, in terms of 3D-distance, to a U and V parameter.
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.
Returns: This object's component index. If this object is not a sub-piece of a larger geometric entity, then the returned index has m_type = ComponentIndex.InvalidType and m_index = -1.
ConstructConstObject
Assigns a parent object and a sub-object index to this.
CurvatureAt
Computes the curvature at the given UV coordinate.
DataCRC
Returns a CRC calculated from the information that defines the object. This CRC can be used as a quick way to see if two objects are not identical.
Parameters:
| currentRemainder (uint) | The current remainder value. |
Returns: CRC of the information the defines the object.
Degree
Returns the maximum algebraic degree of any span (or a good estimate if curve spans are not algebraic).
Parameters:
| direction (int) | 0 gets first parameter's domain, 1 gets second parameter's domain. |
Returns: The maximum degree.
DeleteAllUserStrings
public void DeleteAllUserStrings()
Parameters:
| key (string) |
Dispose
public void Dispose()
Actively reclaims unmanaged resources that this instance uses.
Dispose
Overridden in order to destroy local display cache information
Parameters:
| disposing (bool) |
Overrides: CommonObject.Dispose
Parameters:
| direction (int) | 0 gets first parameter, 1 gets second parameter. |
Returns: An interval value.
Returns: An object of the same type as this, with the same properties and behavior.
DuplicateShallow
Constructs a light copy of this object. By "light", it is meant that the same underlying data is used until something is done to attempt to change it. For example, you could have a shallow copy of a very heavy mesh object and the same underlying data will be used when doing things like inspecting the number of faces on the mesh. If you modify the location of one of the mesh vertices, the shallow copy will create a full duplicate of the underlying mesh data and the shallow copy will become a deep copy.
Returns: An object of the same type as this object.
This behavior is overridden by implementing classes.
EnsurePrivateCopy
public void EnsurePrivateCopy()
If you want to keep a copy of this class around by holding onto it in a variable after a command completes, call EnsurePrivateCopy to make sure that this class is not tied to the document. You can call this function as many times as you want.
Evaluate
[ConstOperation]
public bool Evaluate(double u, double v, int numberDerivatives, out Point3d point, out Vector3d[] derivatives)
Evaluates a surface mathematically.
Remarks: The partial derivatives will be in the order {Su, Sv} for numberDerivatives = 1, {Su, Sv, Suu, Suv, Svv} for 2, {Su, Sv, Suu, Suv, Svv, Suuu, Suuv, Suvv, Svvv} for 3, and similar for higher counts.
Parameters:
| u (double) | A U parameter. |
| v (double) | A V parameter. |
| numberDerivatives (int) | The number of derivatives. |
| point (out Point3d) | A point. This out parameter will be assigned during this call. |
| derivatives (out Vector3d[]) | A vector array. This out parameter will be assigned during this call. This can be null. |
Returns: true if the operation succeeded; false otherwise.
Extend
Analytically extends the surface to include the interval.
Parameters:
| direction (int) | If 0, Surface.Domain(0) will include the interval. (the first surface parameter). If 1, Surface.Domain(1) will include the interval. (the second surface parameter). |
| interval (Interval) | If the interval is not included in surface domain, the surface will be extended so that its domain includes the interval. Note, this method will fail if the surface is closed in the specified direction. |
Returns: True if successful, false otherwise.
Extend
Extends an untrimmed surface along one edge.
Fit
Fits a new surface through an existing surface.
FitCurveToSurface
Parameters:
| trimCurve3d (Curve) | curve that will trim from one edge to the opposite |
| trimProjectionDir (Vector3d) | Vector for projection, or zero vector for no projection |
| tolerance (double) | 3d tolerance for projection, splitting, fitting... |
| Knots (IEnumerable<double>) | For TrimParamKnots=3, the custom knots to add |
| divideIntoSections (bool) | If true, the surface is divided at each knot |
| trimCurveOnSurface (ref Curve) | the actual trim curve as it is projected on or pulled to the surface |
| splitCurve (ref Curve) | the actual fit curve the split the surface |
FrameAt
Computes the orient plane on a surface given a U and V parameter.
This is the simple evaluation call with no error handling.
GetBoundingBox
Bounding box solver. Gets the world axis aligned bounding box for the geometry.
Parameters:
| accurate (bool) | If true, a physically accurate bounding box will be computed. If not, a bounding box estimate will be computed. For some geometry types there is no difference between the estimate and the accurate bounding box. Estimated bounding boxes can be computed much (much) faster than accurate (or "tight") bounding boxes. Estimated bounding boxes are always similar to or larger than accurate bounding boxes. |
Returns: The bounding box of the geometry in world coordinates or BoundingBox.Empty if not bounding box could be found.
GetBoundingBox
Aligned Bounding box solver. Gets the plane aligned bounding box.
GetBoundingBox
Aligned Bounding box solver. Gets the plane aligned bounding box.
Parameters:
| plane (Plane) | Orientation plane for BoundingBox. |
Returns: A BoundingBox in plane coordinates.
GetBoundingBox
Aligned Bounding box solver. Gets the world axis aligned bounding box for the transformed geometry.
Parameters:
| xform (Transform) | Transformation to apply to object prior to the BoundingBox computation. The geometry itself is not modified. |
Returns: The accurate bounding box of the transformed geometry in world coordinates or BoundingBox.Empty if not bounding box could be found.
GetClipParticipation
#public void GetClipParticipation(out IEnumerable<Guid> objectIds, out IEnumerable<int> layerIndices, out bool isExclusionList)
Parameters:
| objectIds (out IEnumerable<Guid>) | |
| layerIndices (out IEnumerable<int>) | |
| isExclusionList (out bool) |
Parameters:
| direction (int) | The direction, where 0 gets plane surface's x coordinate extents and 1 gets plane surface's y coordinate extents. |
Returns: An increasing interval.
GetNextDiscontinuity
[ConstOperation]
public bool GetNextDiscontinuity(int direction, Continuity continuityType, double t0, double t1, double cosAngleTolerance, double curvatureTolerance, out double t)
Searches for a derivative, tangent, or curvature discontinuity.
Parameters:
| direction (int) | If 0, then "u" parameter is checked. If 1, then the "v" parameter is checked. |
| continuityType (Continuity) | The desired continuity. |
| t0 (double) | Search begins at t0. If there is a discontinuity at t0, it will be ignored. This makes it possible to repeatedly call GetNextDiscontinuity and step through the discontinuities. |
| t1 (double) | (t0 != t1) If there is a discontinuity at t1 is will be ignored unless c is a locus discontinuity type and t1 is at the start or end of the curve. |
| cosAngleTolerance (double) | default = cos(1 degree) Used only when continuityType is G1_continuous or G2_continuous. If the cosine of the angle between two tangent vectors is <= cos_angle_tolerance, then a G1 discontinuity is reported. |
| curvatureTolerance (double) | (default = ON_SQRT_EPSILON) Used only when continuityType is G2_continuous. If K0 and K1 are curvatures evaluated from above and below and |K0 - K1| > curvature_tolerance, then a curvature discontinuity is reported. |
| t (out double) | if a discontinuity is found, then t reports the parameter at the discontinuity. |
Returns: Parametric continuity tests c = (C0_continuous, ..., G2_continuous): TRUE if a parametric discontinuity was found strictly between t0 and t1. Note well that all curves are parametrically continuous at the ends of their domains. Locus continuity tests c = (C0_locus_continuous, ...,G2_locus_continuous): TRUE if a locus discontinuity was found strictly between t0 and t1 or at t1 is the at the end of a curve. Note well that all open curves (IsClosed()=false) are locus discontinuous at the ends of their domains. All closed curves (IsClosed()=true) are at least C0_locus_continuous at the ends of their domains.
GetNextDiscontinuity
[ConstOperation]
public bool GetNextDiscontinuity(int direction, Continuity continuityType, double t0, double t1, out double t)
Searches for a derivative, tangent, or curvature discontinuity.
Parameters:
| direction (int) | If 0, then "u" parameter is checked. If 1, then the "v" parameter is checked. |
| continuityType (Continuity) | The desired continuity. |
| t0 (double) | Search begins at t0. If there is a discontinuity at t0, it will be ignored. This makes it possible to repeatedly call GetNextDiscontinuity and step through the discontinuities. |
| t1 (double) | (t0 != t1) If there is a discontinuity at t1 is will be ignored unless c is a locus discontinuity type and t1 is at the start or end of the curve. |
| t (out double) | if a discontinuity is found, then t reports the parameter at the discontinuity. |
Returns: Parametric continuity tests c = (C0_continuous, ..., G2_continuous): TRUE if a parametric discontinuity was found strictly between t0 and t1. Note well that all curves are parametrically continuous at the ends of their domains. Locus continuity tests c = (C0_locus_continuous, ...,G2_locus_continuous): TRUE if a locus discontinuity was found strictly between t0 and t1 or at t1 is the at the end of a curve. Note well that all open curves (IsClosed()=false) are locus discontinuous at the ends of their domains. All closed curves (IsClosed()=true) are at least C0_locus_continuous at the ends of their domains.
GetNurbsFormParameterFromSurfaceParameter
[ConstOperation]
public bool GetNurbsFormParameterFromSurfaceParameter(double surfaceS, double surfaceT, out double nurbsS, out double nurbsT)
Translates a parameter from the current surface to the parameter space of the surface returned by Surface.ToNurbsSurface().
Parameters:
| surfaceS (double) | The parameter in the S, or sometimes U, direction, of this surface. |
| surfaceT (double) | The parameter in the T, or sometimes V, direction of this surface. |
| nurbsS (out double) | S on the NURBS form. |
| nurbsT (out double) | T on the NURBS form. |
Returns: True if the operation succeeded; otherwise, false.
GetObjectData
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.SerializationFormatter)]
public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
Populates a System.Runtime.Serialization.SerializationInfo with the data needed to serialize the target object.
Parameters:
| info (SerializationInfo) | The System.Runtime.Serialization.SerializationInfo to populate with data. |
| context (StreamingContext) | The destination (see System.Runtime.Serialization.StreamingContext) for this serialization. |
GetSpanVector
Gets array of span "knots".
Parameters:
| direction (int) | 0 gets first parameter's domain, 1 gets second parameter's domain. |
Returns: An array with span vectors; or null on error.
GetSurfaceParameterFromNurbsFormParameter
[ConstOperation]
public bool GetSurfaceParameterFromNurbsFormParameter(double nurbsS, double nurbsT, out double surfaceS, out double surfaceT)
Translates a parameter from a value on the surface returned by Surface.ToNurbsSurface() to the current surface.
Parameters:
| nurbsS (double) | The parameter in the S, or sometimes U, direction of the NURBS form surface. |
| nurbsT (double) | The parameter in the T, or sometimes V, direction of the NURBS form surface. |
| surfaceS (out double) | S on this surface. |
| surfaceT (out double) | T o n this surface. |
Returns: True if the operation succeeded; otherwise, false.
GetSurfaceSize
Gets an estimate of the size of the rectangle that would be created if the 3d surface where flattened into a rectangle.
Parameters:
| width (out double) | corresponds to the first surface parameter. |
| height (out double) | corresponds to the second surface parameter. |
Returns: true if successful.
Example:Re-parameterize a surface to minimize distortion in the map from parameter space to 3d. Surface surf = ...; double width, height; if ( surf.GetSurfaceSize( out width, out height ) ) { surf.SetDomain( 0, new ON_Interval( 0.0, width ) ); surf.SetDomain( 1, new ON_Interval( 0.0, height ) ); }
Parameters:
| key (string) | id used to retrieve the string. |
Returns: string associated with the key if successful. null if no key was found.
GetUserStrings
Gets a copy of all (user key string, user value string) pairs attached to this geometry.
Returns: A new collection.
HasNurbsForm
Is there a NURBS surface representation of this surface.
Returns: 0 unable to create NURBS representation with desired accuracy. 1 success - NURBS parameterization matches the surface's 2 success - NURBS point locus matches the surface's and the domain of the NURBS surface is correct. However, This surface's parameterization and the NURBS surface parameterization may not match. This situation happens when getting NURBS representations of surfaces that have a transcendental parameterization like spheres, cylinders, and cones.
InterpolatedCurveOnSurface
[ConstOperation]
public NurbsCurve InterpolatedCurveOnSurface(IEnumerable<Point3d> points, double tolerance)
Constructs an interpolated curve on a surface, using 3D points.
Parameters:
| points (IEnumerable<Point3d>) | A list, an array or any enumerable set of points. |
| tolerance (double) | A tolerance value. |
Returns: A new NURBS curve, or null on error.
InterpolatedCurveOnSurfaceUV
[ConstOperation]
public NurbsCurve InterpolatedCurveOnSurfaceUV(IEnumerable<Point2d> points, double tolerance, bool closed, int closedSurfaceHandling)
Returns a curve that interpolates points on a surface. The interpolant lies on the surface.
Parameters:
| points (IEnumerable<Point2d>) | List of at least two UV parameter locations on the surface. |
| tolerance (double) | Tolerance used for the fit of the push-up curve. Generally, the resulting interpolating curve will be within tolerance of the surface. |
| closed (bool) | If false, the interpolating curve is not closed. If true, the interpolating curve is closed, and the last point and first point should generally not be equal. |
| closedSurfaceHandling (int) | If 0, all points must be in the rectangular domain of the surface. If the surface is closed in some direction, then this routine will interpret each point and place it at an appropriate location in the covering space. This is the simplest option and should give good results. If 1, then more options for more control of handling curves going across seams are available. If the surface is closed in some direction, then the points are taken as points in the covering space. Example, if srf.IsClosed(0)=true and srf.IsClosed(1)=false and srf.Domain(0)=srf.Domain(1)=Interval(0,1) then if closedSurfaceHandling=1 a point(u, v) in points can have any value for the u coordinate, but must have 0<=v<=1. In particular, if points = { (0.0,0.5), (2.0,0.5) } then the interpolating curve will wrap around the surface two times in the closed direction before ending at start of the curve. If closed=true the last point should equal the first point plus an integer multiple of the period on a closed direction. |
Returns: A new NURBS curve if successful, or null on error.
InterpolatedCurveOnSurfaceUV
[ConstOperation]
public NurbsCurve InterpolatedCurveOnSurfaceUV(IEnumerable<Point2d> points, double tolerance)
Returns a curve that interpolates points on a surface. The interpolant lies on the surface.
Parameters:
| points (IEnumerable<Point2d>) | List of at least two UV parameter locations on the surface. |
| tolerance (double) | Tolerance used for the fit of the push-up curve. Generally, the resulting interpolating curve will be within tolerance of the surface. |
Returns: A new NURBS curve if successful, or null on error.
IsAtSeam
Tests if a surface parameter value is at a seam.
IsAtSingularity
Tests if a surface parameter value is at a singularity.
IsClosed
Gets a value indicating if the surface is closed in a direction.
Parameters:
| direction (int) | 0 = U, 1 = V. |
Returns: The indicating boolean value.
IsCone
Determines if the surface is a portion of a cone within RhinoMath.ZeroTolerance.
Returns: true if the surface is a portion of a cone.
IsCone
Determines if the surface is a portion of a cone within a given tolerance.
Parameters:
| tolerance (double) | tolerance to use when checking. |
Returns: true if the surface is a portion of a cone.
IsContinuous
Tests continuity at a surface parameter value.
Parameters:
| continuityType (Continuity) | The continuity type to sample. |
| u (double) | Surface u parameter to test. |
| v (double) | Surface v parameter to test. |
Returns: true if the surface has at least the specified continuity at the (u,v) parameter.
IsCylinder
Determines if the surface is a portion of a cylinder within RhinoMath.ZeroTolerance.
Returns: true if the surface is a portion of a cylinder.
IsCylinder
Determines if the surface is a portion of a cylinder within a given tolerance.
Parameters:
| tolerance (double) | tolerance to use when checking. |
Returns: true if the surface is a portion of a cylinder.
IsExtrusion
Determines if the surface is a portion of an extrusion within RhinoMath.ZeroTolerance.
Returns: true if the surface is an extrusion.
IsExtrusion
Determines if the surface is a portion of an extrusion within a given tolerance.
Parameters:
| tolerance (double) | tolerance to use when checking. |
Returns: true if the surface is an extrusion.
IsIsoparametric
Determines if a 2d bounding box is isoparametric in the parameter space of this surface.
Parameters:
| bbox (BoundingBox) | Bounding box to test. |
Returns: IsoStatus flag describing the iso-parametric relationship between the surface and the bounding box.
IsIsoparametric
Determines if a 2D curve is isoparametric in the parameter space of this surface.
IsIsoparametric
Determines if a 2d curve is isoparametric in the parameter space of this surface.
Parameters:
| curve (Curve) | Curve to test. |
Returns: IsoStatus flag describing the iso-parametric relationship between the surface and the curve.
IsoCurve
Gets isoparametric curve.
Remarks: In this function "direction" indicates which direction the resulting curve runs. 0: horizontal, 1: vertical In the other Surface functions that take a "direction" argument, "direction" indicates if "constantParameter" is a "u" or "v" parameter.
Parameters:
| direction (int) | 0 first parameter varies and second parameter is constant e.g., point on IsoCurve(0,c) at t is srf(t,c) This is a horizontal line from left to right 1 first parameter is constant and second parameter varies e.g., point on IsoCurve(1,c) at t is srf(c,t This is a vertical line from bottom to top. |
| constantParameter (double) | The parameter that was constant on the original surface. |
Returns: An isoparametric curve or null on error.
IsoCurve
Gets isoparametric curve. IsoStatus.None is not supported, and IsoStatus.X and IsoStatus.Y need valid t-values in the U- or V-domain respectively.
Parameters:
| iso (IsoStatus) | IsoStatus.North returns the curve where U varies and V is V_max (paramter t is ignored) IsoStatus.East returns the curve where V varies and U is U_max (paramter t is ignored) IsoStatus.South returns the curve where U varies and V is V_min (paramter t is ignored) IsoStatus.West returns the curve where V varies and U is U_min (paramter t is ignored) IsoStatus.X returns the curve where V varies and U is t (if t is inside the U-domain) IsoStatus.Y returns the curve where U varies and V is t (if t is inside the V-domain) |
| t (double) | the parameter used if iso is X or Y. |
Returns: An isoparametric curve or null on error.
IsoCurve
Gets isoparametric curve that corresponds to one of the four surface edges. Other IsoStatus values are not supported.
Parameters:
| iso (IsoStatus) | IsoStatus.North returns the curve where U varies and V is V_max IsoStatus.East returns the curve where V varies and U is U_max IsoStatus.South returns the curve where U varies and V is V_min IsoStatus.West returns the curve where V varies and U is U_min |
Returns: An isoparametric curve or null on error.
IsPeriodic
Gets a value indicating if the surface is periodic in a direction (default is false).
Parameters:
| direction (int) | 0 = U, 1 = V. |
Returns: The indicating boolean value.
IsPlanar
Tests a surface to see if it is planar to zero tolerance.
Returns: true if the surface is planar (flat) to within RhinoMath.ZeroTolerance units (1e-12).
IsPlanar
Tests a surface to see if it is planar to a given tolerance.
Parameters:
| tolerance (double) | tolerance to use when checking. |
Returns: true if there is a plane such that the maximum distance from the surface to the plane is <= tolerance.
IsSingular
true if surface side is collapsed to a point.
Parameters:
| side (int) | side of parameter space to test 0 = south, 1 = east, 2 = north, 3 = west. |
Returns: True if this specific side of the surface is singular; otherwise, false.
IsSphere
Determines if the surface is a portion of a sphere within RhinoMath.ZeroTolerance.
Returns: true if the surface is a portion of a sphere.
IsSphere
Determines if the surface is a portion of a sphere within a given tolerance.
Parameters:
| tolerance (double) | tolerance to use when checking. |
Returns: true if the surface is a portion of a sphere.
IsTorus
Determines if the surface is a portion of a torus within RhinoMath.ZeroTolerance.
Returns: true if the surface is a portion of a torus.
IsTorus
Determines if the surface is a portion of a torus within a given tolerance.
Parameters:
| tolerance (double) | tolerance to use when checking. |
Returns: true if the surface is a portion of a torus.
IsValidWithLog
Determines if an object is valid. Also provides a report on errors if this object happens not to be valid.
Parameters:
| log (out string) | A textual log. This out parameter is assigned during this call. |
Returns: true if this object is valid; false otherwise.
LocalClosestPoint
[ConstOperation]
public bool LocalClosestPoint(Point3d testPoint, double seedU, double seedV, out double u, out double v)
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.
Parameters:
| testPoint (Point3d) | A point to test against. |
| seedU (double) | The seed parameter in the U direction. |
| seedV (double) | The seed parameter in the V direction. |
| u (out double) | U parameter of the surface that is closest to testPoint. |
| v (out double) | V parameter of the surface that is closest to testPoint. |
Returns: true if the search is successful, false if the search fails.
MakeDeformable
If possible, converts the object into a form that can be accurately modified with "squishy" transformations like projections, shears, an non-uniform scaling.
Returns: false if object cannot be converted to a deformable object. true if object was already deformable or was converted into a deformable object.
MemoryEstimate
Computes an estimate of the number of bytes that this object is using in memory.
Returns: An estimated memory footprint.
NonConstOperation
protected override void NonConstOperation()
Destroy cache handle
Overrides: CommonObject.NonConstOperation
NormalAt
Computes the surface normal at a point.
This is the simple evaluation call - it does not support error handling.
Offset
Constructs a new surface which is offset from the current surface.
OnSwitchToNonConst
protected override void OnSwitchToNonConst()
Is called when a non-constant operation occurs.
Overrides: CommonObject.OnSwitchToNonConst
PointAt
Evaluates a point at a given parameter.
Pullback
Pulls a 3d curve back to the surface's parameter space.
Pullback
Pulls a 3d curve back to the surface's parameter space.
Pushup
Computes a 3d curve that is the composite of a 2d curve and the surface map.
Parameters:
| curve2d (Curve) | a 2d curve whose image is in the surface's domain. |
| tolerance (double) | the maximum acceptable distance from the returned 3d curve to the image of curve_2d on the surface. |
| curve2dSubdomain (Interval) | The curve interval (a sub-domain of the original curve) to use. |
Returns: 3d curve.
Pushup
Computes a 3d curve that is the composite of a 2d curve and the surface map.
Rebuild
[ConstOperation]
public NurbsSurface Rebuild(int uDegree, int vDegree, int uPointCount, int vPointCount)
Rebuilds an existing surface to a given degree and point count.
Parameters:
| uDegree (int) | the output surface u degree. |
| vDegree (int) | the output surface u degree. |
| uPointCount (int) | The number of points in the output surface u direction. Must be bigger than uDegree (maximum value is 1000) |
| vPointCount (int) | The number of points in the output surface v direction. Must be bigger than vDegree (maximum value is 1000) |
Returns: new rebuilt surface on success. null on failure.
RebuildOneDirection
[ConstOperation]
public NurbsSurface RebuildOneDirection(int direction, int pointCount, LoftType loftType, double refitTolerance)
Rebuilds an existing surface with a new surface to a given point count in either the u or v directions independently.
Parameters:
| direction (int) | The direction (0 = U, 1 = V). |
| pointCount (int) | The number of points in the output surface in the "direction" direction. |
| loftType (LoftType) | The loft type |
| refitTolerance (double) | The refit tolerance. When in doubt, use the document's model absolute tolerance. |
Returns: new rebuilt surface on success. null on failure.
RefitSimplySplitSurface
[ConstOperation]
public bool RefitSimplySplitSurface(Curve trimCurve3d, Vector3d trimProjectionDir, double tolerance, RefitTrimKnotMode knotAdditionMode, int numInsertKnots, IEnumerable<double> Knots, RefitTrimSectionMode sectionMode, int numNonTrimSpans, bool meetCurve, bool oneSided, Point3d PtActive, bool outputSurface, bool outputCurve, ref int numSections, List<Surface> lowerSurface, List<Surface> upperSurface, List<Curve> edgeCurve, ref double FitMeasurement, ref Curve trimCurveOnSurface, ref Curve splitCurve)
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.
Parameters:
| trimCurve3d (Curve) | curve that will trim from one edge to the opposite |
| trimProjectionDir (Vector3d) | Vector for projection, or zero vector for no projection |
| tolerance (double) | 3d tolerance for projection, splitting, fitting... |
| knotAdditionMode (RefitTrimKnotMode) | 0: no, don't add any 1: Yes, add nKnots knots, spaced regularly over the entire surface 2: Yes, add nKnots knots, spaced regularly PER EXISTING SPAN 3: Yes, add nKnots knots, as provided in the array Knots |
| numInsertKnots (int) | FOr TrimParamKnots != 3, the number of knots to add |
| Knots (IEnumerable<double>) | For TrimParamKnots=3, the custom knots to add |
| sectionMode (RefitTrimSectionMode) | 0: no sections, just output one "upper" and one "lower" surface 1: Yes, divide into sections at each of the input surface's existing knots 2: Yes, divide into sections at each of the "nKnot" added knot values 3: Yes, divide into sections at ALL knot values (i.e. both 1 and 2) |
| numNonTrimSpans (int) | number of spans in the non-trim parameter |
| meetCurve (bool) | Drag the refit surfaces out to meet the original trim curve |
| oneSided (bool) | Inputting an "active" point means you only want one side of the "split" to be refit - In other words, you want a "trim refit". Results will be returned in "srfLower" |
| PtActive (Point3d) | Active point |
| outputSurface (bool) | if true, output fit surfaces: srfLower and, if !bActivePt, srfUpper |
| outputCurve (bool) | if true, output fit curve: crvEdge |
| numSections (ref int) | |
| lowerSurface (List<Surface>) | Surfaces (# = nSections) below trim curve in srf's (u,v) domain |
| upperSurface (List<Surface>) | Surfaces (# = nSections) above trim curve in srf's (u,v) domain |
| edgeCurve (List<Curve>) | Curves (# = nSections) fit to trim curve with srf's u/v parameter |
| FitMeasurement (ref double) | Calculated based on trimParamSections |
| trimCurveOnSurface (ref Curve) | the actual trim curve as it is projected on or pulled to the surface |
| splitCurve (ref Curve) | the actual fit curve the split the surface |
Returns: true for zuccess, false for failure
RefitSplit
[ConstOperation]
public int RefitSplit(Curve curve, Vector3d trimProjectionDir, double tolerance, IEnumerable<double> Knots, bool bMeetCurve, bool divideIntoSections, List<Surface> srfLower, List<Surface> srfUpper, List<Curve> edgeCurve, ref Curve trimCurveOnSurface, ref Curve splitCurve)
Splits the surface into two and refits the split edge
Parameters:
| curve (Curve) | The curve used to split the surface. It must be a simple division, from one edge of the parametric space to the opposite edge. |
| trimProjectionDir (Vector3d) | Vector for projection, or zero vector for no projection |
| tolerance (double) | 3d tolerance for projection, splitting, fitting... |
| Knots (IEnumerable<double>) | |
| bMeetCurve (bool) | |
| divideIntoSections (bool) | If true, the surface is divided at each knot |
| srfLower (List<Surface>) | Surfaces below trim curve in srf's (u,v) domain |
| srfUpper (List<Surface>) | Surfaces below trim curve in srf's (u,v) domain |
| edgeCurve (List<Curve>) | Curves (# = nSections) fit to trim curve with srf's u/v parameter |
| trimCurveOnSurface (ref Curve) | the actual trim curve as it is projected on or pulled to the surface |
| splitCurve (ref Curve) | the actual fit curve the split the surface |
Removes a viewport id that this being clipped by this clipping plane.
Parameters:
| viewportId (Guid) | The id of the RhinoViewport to remove. |
Returns: true if the viewport was removed, false if the viewport was not in the list.
Reverse
Same as Reverse, but if inPlace is set to true this Surface is modified instead of a new copy being created.
Reverse
Reverses parameterization Domain changes from [a,b] to [-b,-a]
Parameters:
| direction (int) | 0 for first parameter's domain, 1 for second parameter's domain. |
Returns: a new reversed surface on success.
Rotate
Rotates the object about the specified axis. A positive rotation angle results in a counter-clockwise rotation about the axis (right hand rule).
Scale
Scales the object by the specified factor. The scale is centered at the origin.
Parameters:
| scaleFactor (double) | The uniform scaling factor. |
Returns: true if geometry successfully scaled.
public void SetClipParticipation(IEnumerable<Guid> objectIds, IEnumerable<int> layerIndices, bool isExclusionList)
Set a list of specific object ids and layers that this clipping plane surface clips.
Parameters:
| objectIds (IEnumerable<Guid>) | |
| layerIndices (IEnumerable<int>) | |
| isExclusionList (bool) | Is the list a set of ids to not clip or a set to clip |
SetDomain
Sets the domain in a direction.
SetExtents
Sets the extents of the plane surface.
Parameters:
| direction (int) | The direction, where 0 sets plane surface's x coordinate extents and 1 sets plane surface's y coordinate extents. |
| extents (Interval) | An increasing interval. |
| syncDomain (bool) | If true, the corresponding evaluation interval domain is set so that it matches the extents interval. If false, the corresponding evaluation interval domain is not changed. |
SetUserString
Attach a user string (key,value combination) to this geometry.
ShortPath
Constructs a geodesic between 2 points, used by ShortPath command in Rhino.
Parameters:
| start (Point2d) | start point of curve in parameter space. Points must be distinct in the domain of the surface. |
| end (Point2d) | end point of curve in parameter space. Points must be distinct in the domain of the surface. |
| tolerance (double) | tolerance used in fitting discrete solution. |
Returns: a geodesic curve on the surface on success. null on failure.
Smooth
public Surface Smooth(double smoothFactor, bool bXSmooth, bool bYSmooth, bool bZSmooth, bool bFixBoundaries, SmoothingCoordinateSystem coordinateSystem, Plane plane)
Smooths a surface by averaging the positions of control points in a specified region.
Parameters:
| smoothFactor (double) | The smoothing factor, which controls how much control points move towards the average of the neighboring control points. |
| bXSmooth (bool) | When true control points move in X axis direction. |
| bYSmooth (bool) | When true control points move in Y axis direction. |
| bZSmooth (bool) | When true control points move in Z axis direction. |
| bFixBoundaries (bool) | When true the surface edges don't move. |
| coordinateSystem (SmoothingCoordinateSystem) | The coordinates to determine the direction of the smoothing. |
| plane (Plane) | If SmoothingCoordinateSystem.CPlane specified, then the construction plane. |
Returns: The smoothed surface if successful, null otherwise.
Smooth
public Surface Smooth(double smoothFactor, bool bXSmooth, bool bYSmooth, bool bZSmooth, bool bFixBoundaries, SmoothingCoordinateSystem coordinateSystem)
Smooths a surface by averaging the positions of control points in a specified region.
Parameters:
| smoothFactor (double) | The smoothing factor, which controls how much control points move towards the average of the neighboring control points. |
| bXSmooth (bool) | When true control points move in X axis direction. |
| bYSmooth (bool) | When true control points move in Y axis direction. |
| bZSmooth (bool) | When true control points move in Z axis direction. |
| bFixBoundaries (bool) | When true the surface edges don't move. |
| coordinateSystem (SmoothingCoordinateSystem) | The coordinates to determine the direction of the smoothing. |
Returns: The smoothed surface if successful, null otherwise.
SpanCount
Gets number of smooth nonempty spans in the parameter direction.
Parameters:
| direction (int) | 0 gets first parameter's domain, 1 gets second parameter's domain. |
Returns: The span count.
Split
Splits (divides) the surface into two parts at the specified parameter
Parameters:
| direction (int) | 0 = The surface is split vertically. The "west" side is returned as the first surface in the array and the "east" side is returned as the second surface in the array. 1 = The surface is split horizontally. The "south" side is returned as the first surface in the array and the "north" side is returned as the second surface in the array |
| parameter (double) | value of constant parameter in interval returned by Domain(direction) |
Returns: Array of two surfaces on success
Returns: A Brep with a similar shape like this surface or null.
ToJSON
Create a JSON string representation of this object
Parameters:
| options (SerializationOptions) |
ToMesh
public Mesh ToMesh()
Computes a polygon mesh of the surface made of one quad.
Returns: A polygon mesh of the surface.
ToNurbsSurface
Gets a NURBS surface representation of this surface. Default tolerance of 0.0 is used.
Returns: NurbsSurface on success, null on failure.
ToNurbsSurface
Gets a NURBS surface representation of this surface.
Parameters:
| tolerance (double) | tolerance to use when creating NURBS representation. |
| accuracy (out int) | 0 = unable to create NURBS representation with desired accuracy. 1 = success - returned NURBS parameterization matches the surface's to the desired accuracy. 2 = success - returned NURBS point locus matches the surface's to the desired accuracy and the domain of the NURBS surface is correct. However, this surface's parameterization and the NURBS surface parameterization may not match to the desired accuracy. This situation happens when getting NURBS representations of surfaces that have a transcendental parameterization like spheres, cylinders, and cones. |
Returns: NurbsSurface on success, null on failure.
Transform
Transforms the geometry. If the input Transform has a SimilarityType of OrientationReversing, you may want to consider flipping the transformed geometry after calling this function when it makes sense. For example, you may want to call Flip() on a Brep after transforming it.
Parameters:
| xform (Transform) | Transformation to apply to geometry. |
Returns: true if geometry successfully transformed.
Translate
Translates the object along the specified vector.
Translate
Translates the object along the specified vector.
Parameters:
| translationVector (Vector3d) | A moving vector. |
Returns: true if geometry successfully translated.
Transpose
Transposes surface parameterization (swap U and V)
Returns: New transposed surface on success, null on failure.
Parameters:
| inPlace (bool) |
Returns: New transposed surface on success, null on failure.
Trim
Constructs a sub-surface that covers the specified UV trimming domain.
TryGetCone
Tests a surface to see if it is a portion of a cone and returns the cone.
TryGetCone
Tests a surface to see if it is a portion of a cone within RhinoMath.ZeroTolerance and return the cone.
Parameters:
| cone (out Cone) | On success, the cone parameters are filled in. |
Returns: true if the surface is a portion of a cone.
TryGetCylinder
Tests a surface to see if it is a portion of a cylinder and return the infinite cylinder.
Remarks: If successful, an infinite cylinder is returned. When a surface has a cylindrical shape, even if its ends are not circles on the cylinder, it returns the axis and radius. You can detect infinite cylinders using Cylinder.IsFinite.
Parameters:
| cylinder (out Cylinder) | On success, the cylinder parameters are filled in. |
| tolerance (double) | tolerance to use when checking. |
Returns: true if the surface is a portion of a cylinder.
TryGetCylinder
Tests a surface to see if it is a portion of a cylinder within RhinoMath.ZeroTolerance and return the cylinder.
Remarks: If successful, an infinite cylinder is returned. When a surface has a cylindrical shape, even if its ends are not circles on the cylinder, it returns the axis and radius. You can detect infinite cylinders using Cylinder.IsFinite.
Parameters:
| cylinder (out Cylinder) | On success, the cylinder parameters are filled in. |
Returns: true if the surface is a portion of a cylinder.
TryGetExtrusion
Tests a surface to see if it is an extrusion and returns the extrusion.
TryGetExtrusion
Tests a surface to see if it is an extrusion within RhinoMath.ZeroTolerance and returns the extrusion.
Parameters:
| extrusion (out Extrusion) | On success, the extrusion parameters are filled in. |
Returns: true if the surface is an extrusion.
TryGetFiniteCylinder
Tests a surface with the assumption that it might be a right circular cylinder and returns this geometry.
TryGetPlane
Tests a surface for planarity and return the plane.
TryGetPlane
Tests a surface for planarity and return the plane.
Parameters:
| plane (out Plane) | On success, the plane parameters are filled in. |
Returns: true if there is a plane such that the maximum distance from the surface to the plane is <= RhinoMath.ZeroTolerance.
TryGetSphere
Test a surface to see if it is a portion of a sphere and return the sphere.
TryGetSphere
Test a surface to see if it is a portion of a sphere and return the sphere.
Parameters:
| sphere (out Sphere) | On success, the sphere parameters are filled in. |
Returns: true if the surface is a portion of a sphere.
TryGetTorus
Tests a surface to see if it is a portion of a torus and returns the torus.
TryGetTorus
Tests a surface to see if it is a portion of a torus within RhinoMath.ZeroTolerance and returns the torus.
Parameters:
| torus (out Torus) | On success, the torus parameters are filled in. |
Returns: true if the surface is a portion of a torus.
VariableOffset
public Surface VariableOffset(double uMinvMin, double uMinvMax, double uMaxvMin, double uMaxvMax, double tolerance)
Copies a surface so that all locations at the corners of the copied surface are specified distances from the original surface.
Parameters:
| uMinvMin (double) | Offset distance at Domain(0).Min, Domain(1).Min. |
| uMinvMax (double) | Offset distance at Domain(0).Min, Domain(1).Max. |
| uMaxvMin (double) | Offset distance at Domain(0).Max, Domain(1).Min. |
| uMaxvMax (double) | Offset distance at Domain(0).Max, Domain(1).Max. |
| tolerance (double) | The offset tolerance. |
Returns: The offset surface if successful, null otherwise.
VariableOffset
public Surface VariableOffset(double uMinvMin, double uMinvMax, double uMaxvMin, double uMaxvMax, IEnumerable<Point2d> interiorParameters, IEnumerable<double> interiorDistances, double tolerance)
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.
Parameters:
| uMinvMin (double) | Offset distance at Domain(0).Min, Domain(1).Min. |
| uMinvMax (double) | Offset distance at Domain(0).Min, Domain(1).Max. |
| uMaxvMin (double) | Offset distance at Domain(0).Max, Domain(1).Min. |
| uMaxvMax (double) | Offset distance at Domain(0).Max, Domain(1).Max. |
| interiorParameters (IEnumerable<Point2d>) | An array of interior UV parameters to offset from. |
| interiorDistances (IEnumerable<double>) | >An array of offset distances at the interior UV parameters. |
| tolerance (double) | The offset tolerance. |
Returns: The offset surface if successful, null otherwise.