The problem might be that you are running the OrientOnSrf command UBound(pts) + 1 number of times instead of just once. With Copy=Yes, OrientOnSrf will continue to place copies - you just have to build the correct script string.
I’ve tracked this down to an issue with the OrientOnSrv command, which expected the points on the surface to be picked, not scripted. I will fix this for SR9. Thanks for reporting.
Yep, does exactly the same thing as mine. Which is nothing.
Basically what I’m doing is Rhino.OffsetCurveOnSurface, shorten the curves ends with Rhino.ExtendCurveLength and use curve ends as 3D points to orient my circles on a twisted surface.
Option Explicit
Call Main()
Sub Main()
Dim Circle, Panel, Point
Panel = Rhino.GetObjectEx("Pick surface", 8)(0)
Circle = Rhino.AddCircle(Rhino.WorldXYPlane, 1)
Point = Rhino.GetPoint(0)
Rhino.UnselectAllObjects
Rhino.SelectObject Circle
Rhino.Command "-_OrientOnSrf 0,0,0 0,1,0 _SelID " & Panel & " " & Rhino.Pt2Str(Point) & "_Enter _Enter", False
End Sub