RhinoCommon API
RhinoGetGetOneObject Method (String, Boolean, ObjectType, ObjRef) |
Easy to use object getter.
Namespace: Rhino.Input
Assembly: RhinoCommon (in RhinoCommon.dll)

public static Result GetOneObject( string prompt, bool acceptNothing, ObjectType filter, out ObjRef rhObject )
Public Shared Function GetOneObject ( prompt As String, acceptNothing As Boolean, filter As ObjectType, <OutAttribute> ByRef rhObject As ObjRef ) As Result
Parameters
- prompt
- Type: SystemString
command prompt. - acceptNothing
- Type: SystemBoolean
if true, the user can press enter. - filter
- Type: Rhino.DocObjectsObjectType
geometry filter to use when getting objects. - rhObject
- Type: Rhino.DocObjectsObjRef
result of the get. may be null.
Return Value
Type: ResultCommands.Result.Success - got object Commands.Result.Nothing - user pressed enter Commands.Result.Cancel - user cancel object getting.

If you need options or more advanced user interface, then use GetObject class.

using Rhino.DocObjects; partial class Examples { public static Rhino.Commands.Result DivideByLengthPoints(Rhino.RhinoDoc doc) { const ObjectType filter = Rhino.DocObjects.ObjectType.Curve; Rhino.DocObjects.ObjRef objref; Rhino.Commands.Result rc = Rhino.Input.RhinoGet.GetOneObject("Select curve to divide", false, filter, out objref); if (rc != Rhino.Commands.Result.Success || objref == null) return rc; Rhino.Geometry.Curve crv = objref.Curve(); if (crv == null || crv.IsShort(Rhino.RhinoMath.ZeroTolerance)) return Rhino.Commands.Result.Failure; double crv_length = crv.GetLength(); string s = string.Format("Curve length is {0:f3}. Segment length", crv_length); double seg_length = crv_length / 2.0; rc = Rhino.Input.RhinoGet.GetNumber(s, false, ref seg_length, 0, crv_length); if (rc != Rhino.Commands.Result.Success) return rc; Rhino.Geometry.Point3d[] points; crv.DivideByLength(seg_length, true, out points); if (points == null) return Rhino.Commands.Result.Failure; foreach (Rhino.Geometry.Point3d point in points) doc.Objects.AddPoint(point); doc.Views.Redraw(); return Rhino.Commands.Result.Success; } }
Imports Rhino.DocObjects Partial Class Examples Public Shared Function DivideByLengthPoints(ByVal doc As Rhino.RhinoDoc) As Rhino.Commands.Result Const filter As ObjectType = Rhino.DocObjects.ObjectType.Curve Dim objref As Rhino.DocObjects.ObjRef = Nothing Dim rc As Rhino.Commands.Result = Rhino.Input.RhinoGet.GetOneObject("Select curve to divide", False, filter, objref) If rc <> Rhino.Commands.Result.Success OrElse objref Is Nothing Then Return rc End If Dim crv As Rhino.Geometry.Curve = objref.Curve() If crv Is Nothing OrElse crv.IsShort(Rhino.RhinoMath.ZeroTolerance) Then Return Rhino.Commands.Result.Failure End If Dim crv_length As Double = crv.GetLength() Dim s As String = String.Format("Curve length is {0:f3}. Segment length", crv_length) Dim seg_length As Double = crv_length / 2.0 rc = Rhino.Input.RhinoGet.GetNumber(s, False, seg_length, 0, crv_length) If rc <> Rhino.Commands.Result.Success Then Return rc End If Dim points As Rhino.Geometry.Point3d() = Nothing crv.DivideByLength(seg_length, True, points) If points Is Nothing Then Return Rhino.Commands.Result.Failure End If For Each point As Rhino.Geometry.Point3d In points doc.Objects.AddPoint(point) Next doc.Views.Redraw() Return Rhino.Commands.Result.Success End Function End Class
Python
import Rhino import scriptcontext def DivideByLengthPoints(): filter = Rhino.DocObjects.ObjectType.Curve rc, objref = Rhino.Input.RhinoGet.GetOneObject("Select curve to divide", False, filter) if not objref or rc!=Rhino.Commands.Result.Success: return rc crv = objref.Curve() if not crv or crv.IsShort(Rhino.RhinoMath.ZeroTolerance): return Rhino.Commands.Result.Failure crv_length = crv.GetLength() s = "Curve length is {0:.3f}. Segment length".format(crv_length) seg_length = crv_length / 2.0 rc, length = Rhino.Input.RhinoGet.GetNumber(s, False, seg_length, 0, crv_length) if rc!=Rhino.Commands.Result.Success: return rc t_vals = crv.DivideByLength(length, True) if not t_vals: return Rhino.Commands.Result.Failure [scriptcontext.doc.Objects.AddPoint(crv.PointAt(t)) for t in t_vals] scriptcontext.doc.Views.Redraw() return Rhino.Commands.Result.Success if __name__=="__main__": DivideByLengthPoints()

Rhino for Mac
Supported in: 5.4Rhino for Windows
Supported in: 6.14