M_Rhino_Geometry_Intersect_Intersection_ProjectPointsToMeshesEx - mcneel/rhinocommon-api-docs GitHub Wiki
Projects points onto meshes.
Namespace: Rhino.Geometry.Intersect
Assembly: RhinoCommon (in RhinoCommon.dll) Version: Rhino 6.0
C#
public static Point3d[] ProjectPointsToMeshesEx(
IEnumerable<Mesh> meshes,
IEnumerable<Point3d> points,
Vector3d direction,
double tolerance,
out int[] indices
)
VB
Public Shared Function ProjectPointsToMeshesEx (
meshes As IEnumerable(Of Mesh),
points As IEnumerable(Of Point3d),
direction As Vector3d,
tolerance As Double,
<OutAttribute> ByRef indices As Integer()
) As Point3d()
- meshes
- Type: System.Collections.Generic.IEnumerable(Mesh)
the meshes to project on to. - points
- Type: System.Collections.Generic.IEnumerable(Point3d)
the points to project. - direction
- Type: Rhino.Geometry.Vector3d
the direction to project. - tolerance
- Type: System.Double
Projection tolerances used for culling close points and for line-mesh intersection. - indices
- Type: System.Int32[]
Return points[i] is a projection of points[indices[i]]
Type: Point3d[]
Array of projected points, or null in case of any error or invalid input.
VB
Imports System.Collections.Generic
Imports Rhino
Imports Rhino.Commands
Imports Rhino.Geometry
Imports Rhino.Geometry.Intersect
Imports Rhino.Input
Imports Rhino.DocObjects
Namespace examples_vb
Public Class ProjectPointsToMeshesExCommand
Inherits Command
Public Overrides ReadOnly Property EnglishName() As String
Get
Return "vbProjectPointsToMeshesEx"
End Get
End Property
Protected Overrides Function RunCommand(doc As RhinoDoc, mode As RunMode) As Result
Dim obj_ref As ObjRef
Dim rc = RhinoGet.GetOneObject("mesh", False, ObjectType.Mesh, obj_ref)
If rc <> Result.Success Then
Return rc
End If
Dim mesh = obj_ref.Mesh()
Dim obj_ref_pts As ObjRef()
rc = RhinoGet.GetMultipleObjects("points", False, ObjectType.Point, obj_ref_pts)
If rc <> Result.Success Then
Return rc
End If
Dim points As New List(Of Point3d)()
For Each obj_ref_pt As ObjRef In obj_ref_pts
Dim pt = obj_ref_pt.Point().Location
points.Add(pt)
Next
Dim indices As Integer()
Dim prj_points = Intersection.ProjectPointsToMeshesEx(New Mesh() {mesh}, points, New Vector3d(0, 1, 0), 0, indices)
For Each prj_pt As Point3d In prj_points
doc.Objects.AddPoint(prj_pt)
Next
doc.Views.Redraw()
Return Result.Success
End Function
End Class
End Namespace
C#
using System.Collections.Generic;
using Rhino;
using Rhino.Commands;
using Rhino.Geometry;
using Rhino.Geometry.Intersect;
using Rhino.Input;
using Rhino.DocObjects;
namespace examples_cs
{
public class ProjectPointsToMeshesExCommand : Command
{
public override string EnglishName { get { return "csProjectPointsToMeshesEx"; } }
protected override Result RunCommand(RhinoDoc doc, RunMode mode)
{
ObjRef obj_ref;
var rc = RhinoGet.GetOneObject("mesh", false, ObjectType.Mesh, out obj_ref);
if (rc != Result.Success) return rc;
var mesh = obj_ref.Mesh();
ObjRef[] obj_ref_pts;
rc = RhinoGet.GetMultipleObjects("points", false, ObjectType.Point, out obj_ref_pts);
if (rc != Result.Success) return rc;
var points = new List<Point3d>();
foreach (var obj_ref_pt in obj_ref_pts)
{
var pt = obj_ref_pt.Point().Location;
points.Add(pt);
}
int[] indices;
var prj_points = Intersection.ProjectPointsToMeshesEx(new[] {mesh}, points, new Vector3d(0, 1, 0), 0, out indices);
foreach (var prj_pt in prj_points) doc.Objects.AddPoint(prj_pt);
doc.Views.Redraw();
return Result.Success;
}
}
}
Python
from System.Collections.Generic import *
from Rhino import *
from Rhino.Commands import *
from Rhino.Geometry import *
from Rhino.Geometry.Intersect import *
from Rhino.Input import *
from Rhino.DocObjects import *
from scriptcontext import doc
def RunCommand():
rc, obj_ref = RhinoGet.GetOneObject("mesh", False, ObjectType.Mesh)
if rc != Result.Success: return rc
mesh = obj_ref.Mesh()
rc, obj_ref_pts = RhinoGet.GetMultipleObjects("points", False, ObjectType.Point)
if rc != Result.Success: return rc
points = []
for obj_ref_pt in obj_ref_pts:
pt = obj_ref_pt.Point().Location
points.append(pt)
prj_points, indices = Intersection.ProjectPointsToMeshesEx({mesh}, points, Vector3d(0, 1, 0), 0)
for prj_pt in prj_points:
doc.Objects.AddPoint(prj_pt)
doc.Views.Redraw()
return Result.Success
if __name__ == "__main__":
RunCommand()
Supported in: 6.0.16224.21491, 5D58w