Positioning Objects on a Surface
Windows only
Demonstrates how to positioning objects on a surface using RhinoScript.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' PositionOnSrf.rvb -- February 2009
' If this code works, it was written by Dale Fugier.
' If not, I don't know who wrote it.
' Works with Rhino 4.0.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Option Explicit
Sub PositionOnSrf
Dim objs, srf, box, p0, p1, pt, arr, i
objs = Rhino.GetObjects("Select objects to position on surface")
If IsNull(objs) Then Exit Sub
srf = Rhino.GetObject("Select surface", 8)
If IsNull(srf) Then Exit Sub
Rhino.EnableRedraw False
For i = 0 To UBound(objs)
box = Rhino.BoundingBox(objs(i))
If IsArray(box) Then
p0 = box(0)
p1 = box(2)
pt = Array((p1(0)+p0(0))/2,(p1(1)+p0(1))/2,(p1(2)+p0(2))/2)
arr = Rhino.ProjectPointToSurface(pt, srf, Array(0,0,1))
If IsArray(arr) Then
Rhino.MoveObject objs(i), pt, arr(0)
End If
End If
Next
Rhino.EnableRedraw True
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Rhino.AddStartupScript Rhino.LastLoadedScriptFile
Rhino.AddAlias "PositionOnSrf", "_NoEcho _-RunScript (PositionOnSrf)"