Option Explicit
'Script written by Luis Quinones
'Script copyrighted by [n]igma + complicit matter
'www.complicitmatter.com
'Script version Wednesday, March 30, 2011 12:00:37 PM
Call Main()
Sub Main()
Dim strLayer : strLayer = Rhino.AddLayer("Attractors")
Dim strCrv : strCrv = Rhino.GetObject("CRV",4)
Dim strMesh : strMesh = Rhino.GetObjects("Mesh",32)
Dim crvPts : crvPts = Rhino.DivideCurve(strCrv,25)
Dim i
Dim j
For j = 0 To Ubound(strMesh) Step 5
Dim mesharea : mesharea = Rhino.MeshArea(strMesh(j))
If mesharea(1) > 2000 Then
Dim meshPts : meshPts = Rhino.MeshVertices(strMesh(j))
Dim centroid : centroid = Rhino.meshareaCentroid(strMesh(j))
Dim index : index = Rhino.PointArrayClosestPoint(crvPts,centroid)
Dim arrClostactualPoint : arrClostactualPoint = crvPts(index-3)
Dim newLine : newLine = Rhino.AddLine(centroid,arrClostactualPoint)
Dim newDiv : newDiv = Rhino.DivideCurve(newLine,4)
Dim mainLine : mainLine = Rhino.AddLine(newDiv(1),arrClostactualPoint)
Dim gripStart2 : gripStart2 = Rhino.CurveStartPoint(mainLine)
Dim arrStart2 : arrStart2 = Rhino.AddPoint(gripStart2)
Call Rhino.ObjectLayer(arrStart2,strLayer)
Dim gripEnd2 : gripEnd2 = Rhino.CurveEndPoint(mainLine)
Dim arrEnd2 : arrEnd2 = Rhino.AddPoint(gripEnd2)
Call Rhino.ObjectLayer(arrEnd2,strLayer)
Call Rhino.DeleteObject(newLine)
For i = 0 To Ubound(meshPts)
Dim strGrip : strGrip = Rhino.AddLine(newDiv(1),meshPts(i))
Dim gripStart : gripStart = Rhino.CurveStartPoint(strGrip)
Dim arrStart : arrStart = Rhino.AddPoint(gripStart)
Call Rhino.ObjectLayer(arrStart,strLayer)
Dim gripEnd : gripEnd = Rhino.CurveEndPoint(strGrip)
Dim arrEnd : arrEnd = Rhino.AddPoint(gripEnd)
Call Rhino.ObjectLayer(arrEnd,strLayer)
Next
End If
Next
Call Rhino.Command ("SelDup")
Call Rhino.Command ("Delete")
End Sub
Update