Pick Point
Demonstrates how to pick and select a point object.
partial class Examples
{
public static Result PickPoint(RhinoDoc doc)
{
// this creates a point where the mouse is clicked.
var gp = new GetPoint();
gp.SetCommandPrompt("Click for new point");
gp.Get();
if (gp.CommandResult() != Result.Success)
return gp.CommandResult();
var point3d = gp.Point();
doc.Objects.AddPoint(point3d);
doc.Views.Redraw();
// selects a point that already exists
ObjRef obj_ref;
var rc = RhinoGet.GetOneObject("Select point", false, ObjectType.Point, out obj_ref);
if (rc != Result.Success)
return rc;
var point = obj_ref.Point();
RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}",
point.Location.X,
point.Location.Y,
point.Location.Z);
doc.Objects.UnselectAll();
// selects multiple points that already exist
ObjRef[] obj_refs;
rc = RhinoGet.GetMultipleObjects("Select point", false, ObjectType.Point, out obj_refs);
if (rc != Result.Success)
return rc;
foreach (var o_ref in obj_refs)
{
point = o_ref.Point();
RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}",
point.Location.X,
point.Location.Y,
point.Location.Z);
}
doc.Objects.UnselectAll();
// also selects a point that already exists.
// Used when RhinoGet doesn't provide enough control
var go = new GetObject();
go.SetCommandPrompt("Select point");
go.GeometryFilter = ObjectType.Point;
go.GetMultiple(1, 0);
if (go.CommandResult() != Result.Success)
return go.CommandResult();
foreach (var o_ref in go.Objects())
{
point = o_ref.Point();
if (point != null)
RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}",
point.Location.X,
point.Location.Y,
point.Location.Z);
}
doc.Views.Redraw();
return Result.Success;
}
}
Partial Friend Class Examples
Public Shared Function PickPoint(ByVal doc As RhinoDoc) As Result
' this creates a point where the mouse is clicked.
Dim gp = New GetPoint()
gp.SetCommandPrompt("Click for new point")
gp.Get()
If gp.CommandResult() <> Result.Success Then
Return gp.CommandResult()
End If
Dim point3d = gp.Point()
doc.Objects.AddPoint(point3d)
doc.Views.Redraw()
' selects a point that already exists
Dim obj_ref As ObjRef = Nothing
Dim rc = RhinoGet.GetOneObject("Select point", False, ObjectType.Point, obj_ref)
If rc IsNot Result.Success Then
Return rc
End If
Dim point = obj_ref.Point()
RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}", point.Location.X, point.Location.Y, point.Location.Z)
doc.Objects.UnselectAll()
' selects multiple points that already exist
Dim obj_refs() As ObjRef = Nothing
rc = RhinoGet.GetMultipleObjects("Select point", False, ObjectType.Point, obj_refs)
If rc IsNot Result.Success Then
Return rc
End If
For Each o_ref In obj_refs
point = o_ref.Point()
RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}", point.Location.X, point.Location.Y, point.Location.Z)
Next o_ref
doc.Objects.UnselectAll()
' also selects a point that already exists.
' Used when RhinoGet doesn't provide enough control
Dim go = New GetObject()
go.SetCommandPrompt("Select point")
go.GeometryFilter = ObjectType.Point
go.GetMultiple(1, 0)
If go.CommandResult() <> Result.Success Then
Return go.CommandResult()
End If
For Each o_ref In go.Objects()
point = o_ref.Point()
If point IsNot Nothing Then
RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}", point.Location.X, point.Location.Y, point.Location.Z)
End If
Next o_ref
doc.Views.Redraw()
Return Result.Success
End Function
End Class
from Rhino import *
from Rhino.DocObjects import *
from Rhino.Commands import *
from Rhino.Input import *
from Rhino.Input.Custom import *
from scriptcontext import doc
import rhinoscriptsyntax as rs
def RunCommand():
# creates a point where the mouse is clicked
# using RhinoCommon
gp = GetPoint()
gp.SetCommandPrompt("Click for point")
gp.Get()
if gp.CommandResult() != Result.Success:
return gp.CommandResult()
point3d = gp.Point()
doc.Objects.AddPoint(point3d)
doc.Views.Redraw()
# creates a point where the mouse is clicked
# using the RhinoScript syntax
point3d = rs.GetPoint("Click for point")
if point3d == None: return Result.Nothing
rs.AddPoint(point3d)
doc.Objects.AddPoint(point3d)
# selects a point that already exists
# using RhinoCommon
rc, obj_ref = RhinoGet.GetOneObject("Select point", False, ObjectType.Point)
if rc != Result.Success:
return rc
point = obj_ref.Point()
RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}", point.Location.X, point.Location.Y, point.Location.Z)
doc.Objects.UnselectAll()
# also selects a point that already exists
# using RhinoCommon
# Used when RhinoGet doesn't provide enough control
go = GetObject()
go.SetCommandPrompt("Select point")
go.GeometryFilter = ObjectType.Point
go.GetMultiple(1, 0)
if go.CommandResult() != Result.Success:
return go.CommandResult()
for o_ref in go.Objects():
point = o_ref.Point()
if point != None:
RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}", point.Location.X, point.Location.Y, point.Location.Z)
doc.Objects.UnselectAll()
# selects a point that already exists
# using RhinoScript syntax
point_id = rs.GetObject("Select point", rs.filter.point)
if point_id == None: return Result.Nothing
print "point id: {0}".format(point_id)
rs.UnselectAllObjects()
# selects multiple points that already exist
rc, obj_refs = RhinoGet.GetMultipleObjects("Select point", False, ObjectType.Point)
if rc != Result.Success:
return rc
for o_ref in obj_refs:
point = o_ref.Point()
RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}", point.Location.X, point.Location.Y, point.Location.Z)
doc.Objects.UnselectAll()
# selects multiple poins that already exists
# using the RhinoScript syntax
point_ids = rs.GetObjects("Select point", rs.filter.point)
for p_id in point_ids:
print "point id: {0}".format(p_id)
return Result.Success
if __name__ == "__main__":
RunCommand()