RhinoCommon API
IntersectionProjectPointsToBreps Method |
Projects points onto breps.
Namespace: Rhino.Geometry.Intersect
Assembly: RhinoCommon (in RhinoCommon.dll)

public static Point3d[] ProjectPointsToBreps( IEnumerable<Brep> breps, IEnumerable<Point3d> points, Vector3d direction, double tolerance )
Public Shared Function ProjectPointsToBreps ( breps As IEnumerable(Of Brep), points As IEnumerable(Of Point3d), direction As Vector3d, tolerance As Double ) As Point3d()
Parameters
- breps
- Type: System.Collections.GenericIEnumerableBrep
The breps projection targets. - points
- Type: System.Collections.GenericIEnumerablePoint3d
The points to project. - direction
- Type: Rhino.GeometryVector3d
The direction to project. - tolerance
- Type: SystemDouble
The tolerance used for intersections.
Return Value
Type: Point3dArray of projected points, or null in case of any error or invalid input.

using Rhino; using Rhino.DocObjects; using Rhino.Input.Custom; using Rhino.Commands; using System.Collections.Generic; using Rhino.Geometry; using Rhino.Geometry.Intersect; namespace examples_cs { public class ProjectPointsToBrepsCommand : Command { public override string EnglishName { get { return "csProjectPtointsToBreps"; } } protected override Result RunCommand(RhinoDoc doc, RunMode mode) { var gs = new GetObject(); gs.SetCommandPrompt("select surface"); gs.GeometryFilter = ObjectType.Surface | ObjectType.PolysrfFilter; gs.DisablePreSelect(); gs.SubObjectSelect = false; gs.Get(); if (gs.CommandResult() != Result.Success) return gs.CommandResult(); var brep = gs.Object(0).Brep(); if (brep == null) return Result.Failure; var points = Intersection.ProjectPointsToBreps( new List<Brep> {brep}, // brep on which to project new List<Point3d> {new Point3d(0, 0, 0), new Point3d(3,0,3), new Point3d(-2,0,-2)}, // some random points to project new Vector3d(0, 1, 0), // project on Y axis doc.ModelAbsoluteTolerance); if (points != null && points.Length > 0) { foreach (var point in points) { doc.Objects.AddPoint(point); } } doc.Views.Redraw(); return Result.Success; } } }
Imports Rhino Imports Rhino.DocObjects Imports Rhino.Input.Custom Imports Rhino.Commands Imports System.Collections.Generic Imports Rhino.Geometry Imports Rhino.Geometry.Intersect Namespace examples_vb Public Class ProjectPointsToBrepsCommand Inherits Command Public Overrides ReadOnly Property EnglishName() As String Get Return "vbProjectPtointsToBreps" End Get End Property Protected Overrides Function RunCommand(doc As RhinoDoc, mode As RunMode) As Result Dim gs = New GetObject() gs.SetCommandPrompt("select surface") gs.GeometryFilter = ObjectType.Surface Or ObjectType.PolysrfFilter gs.DisablePreSelect() gs.SubObjectSelect = False gs.[Get]() If gs.CommandResult() <> Result.Success Then Return gs.CommandResult() End If Dim brep = gs.[Object](0).Brep() If brep Is Nothing Then Return Result.Failure End If ' brep on which to project ' some random points to project ' project on Y axis Dim points = Intersection.ProjectPointsToBreps(New List(Of Brep)() From { _ brep _ }, New List(Of Point3d)() From { _ New Point3d(0, 0, 0), _ New Point3d(3, 0, 3), _ New Point3d(-2, 0, -2) _ }, New Vector3d(0, 1, 0), doc.ModelAbsoluteTolerance) If points IsNot Nothing AndAlso points.Length > 0 Then For Each point As Point3d In points doc.Objects.AddPoint(point) Next End If doc.Views.Redraw() Return Result.Success End Function End Class End Namespace
import rhinoscriptsyntax as rs from scriptcontext import * from Rhino.Geometry import * def RunCommand(): srfid = rs.GetObject("select surface", rs.filter.surface | rs.filter.polysurface) if not srfid: return brep = rs.coercebrep(srfid) if not brep: return pts = Intersect.Intersection.ProjectPointsToBreps( [brep], # brep on which to project [Point3d(0, 0, 0), Point3d(3,0,3), Point3d(-2,0,-2)], # points to project Vector3d(0, 1, 0), # project on Y axis doc.ModelAbsoluteTolerance) if pts != None and pts.Length > 0: for pt in pts: doc.Objects.AddPoint(pt) doc.Views.Redraw() if __name__ == "__main__": RunCommand()

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