Skip to content

ObjRef.CurveParameter

Public Class

If the reference geometry is a curve or edge with a selection point, then this gets the parameter of the selection point.

Namespace: Rhino.DocObjects

Assembly: RhinoCommon (in RhinoCommon.dll)

**Since:**5.0

Syntax

public Curve CurveParameter(
out double parameter
)

Parameters

parameter

Type:System.Double.
The parameter of the selection point.

Return Value

Type: Curve
If the selection point was on a curve or edge, then the curve/edge is returned, otherwise null.

Remarks

If a curve was selected and CurveParameter is called and the SelectionMethod() is not 1 (point pick on object), the curve will be returned and parameter will be set to the start parameter of the picked curve. This can be misleading so it may be necessary to call SelectionMethod() first, before calling CurveParameter to get the desired information.

Examples

using Rhino;
using Rhino.DocObjects;
using Rhino.Commands;
using Rhino.Geometry;
using Rhino.Input;
namespace examples_cs
{
public class AddRadialDimensionCommand : Rhino.Commands.Command
{
public override string EnglishName
{
get { return "csAddRadialDimension"; }
}
protected override Result RunCommand(RhinoDoc doc, RunMode mode)
{
ObjRef obj_ref;
var rc = RhinoGet.GetOneObject("Select curve for radius dimension",
true, ObjectType.Curve, out obj_ref);
if (rc != Result.Success)
return rc;
double curve_parameter;
var curve = obj_ref.CurveParameter(out curve_parameter);
if (curve == null)
return Result.Failure;
if (curve.IsLinear() || curve.IsPolyline())
{
RhinoApp.WriteLine("Curve must be non-linear.");
return Result.Nothing;
}
// in this example just deal with planar curves
if (!curve.IsPlanar())
{
RhinoApp.WriteLine("Curve must be planar.");
return Result.Nothing;
}
var point_on_curve = curve.PointAt(curve_parameter);
var curvature_vector = curve.CurvatureAt(curve_parameter);
var len = curvature_vector.Length;
if (len < RhinoMath.SqrtEpsilon)
{
RhinoApp.WriteLine("Curve is almost linear and therefore has no curvature.");
return Result.Nothing;
}
var center = point_on_curve + (curvature_vector/(len*len));
Plane plane;
curve.TryGetPlane(out plane);
var radial_dimension =
new RadialDimension(center, point_on_curve, plane.XAxis, plane.Normal, 5.0);
doc.Objects.AddRadialDimension(radial_dimension);
doc.Views.Redraw();
return Result.Success;
}
}
}
from Rhino import *
from Rhino.DocObjects import *
from Rhino.Commands import *
from Rhino.Geometry import *
from Rhino.Input import *
from scriptcontext import doc
def RunCommand():
rc, obj_ref = RhinoGet.GetOneObject("Select curve for radius dimension",
True, ObjectType.Curve)
if rc != Result.Success:
return rc
curve, curve_parameter = obj_ref.CurveParameter()
if curve == None:
return Result.Failure
if curve.IsLinear() or curve.IsPolyline():
print "Curve must be non-linear."
return Result.Nothing
# in this example just deal with planar curves
if not curve.IsPlanar():
print "Curve must be planar."
return Result.Nothing
point_on_curve = curve.PointAt(curve_parameter)
curvature_vector = curve.CurvatureAt(curve_parameter)
len = curvature_vector.Length
if len < RhinoMath.SqrtEpsilon:
print "Curve is almost linear and therefore has no curvature."
return Result.Nothing
center = point_on_curve + (curvature_vector/(len*len))
_, plane = curve.TryGetPlane()
radial_dimension = \
RadialDimension(center, point_on_curve, plane.XAxis, plane.Normal, 5.0)
doc.Objects.AddRadialDimension(radial_dimension)
doc.Views.Redraw()
return Result.Success
if __name__=="__main__":
RunCommand()