Option Explicit ' 'Script written by Dimitrie Stefanescu 'Released under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 '№ 1:58:07 AMWednesday, May 21, 2008 Call Main() Sub Main() Dim surf : surf = Rhino.GetObject("sel surf ", 8) Dim detailLevel : detailLevel = Rhino.GetInteger("det lev ", 10, 5, 100) Dim sun : sun = Rhino.getPoint("sel sun ") Dim uDomain : uDomain = Rhino.SurfaceDomain(surf, 0) Dim uStep : uStep = (uDomain(1) - uDomain(0))/detailLevel Dim vDomain : vDomain = Rhino.SurfaceDomain(surf, 1) Dim vStep : vStep = (vDomain(1) - vDomain(0))/detailLevel Dim i, j, m, mm : m = 0 : mm = 0 Dim a,b,c,d, text Dim facet, scaledfacet, orig, udom, vdom, scale, distance 'Dim arrspl : arrspl = Array() Call rhino.enableredraw(False) For i=uDomain(0) To uDomain(1)-uStep Step uStep For j=vDomain(0) To vDomain(1)-vStep Step vStep a = Rhino.EvaluateSurface(surf, Array(i,j)) b = Rhino.EvaluateSurface(surf, Array(i + uStep,j)) d = Rhino.EvaluateSurface(surf, Array(i,j + vStep)) c = Rhino.EvaluateSurface(surf, Array(i + uStep, j + vStep)) facet = Rhino.AddSrfPt(Array(a, b, c, d)) udom = Rhino.SurfaceDomain(facet, 0) vdom = Rhino.SurfaceDomain(facet, 1) orig = Rhino.EvaluateSurface(facet, Array((udom(1)-udom(0))/2, (vdom(1)-vdom(0))/2)) 'Call rhino.AddPoint(orig) distance = Rhino.Distance(orig, sun) scale = distance * 0.01 + 0.001 If scale > .9 Then scale = .9 End If If scale < .1 Then scale = .1 End If scaledfacet = rhino.ScaleObject(facet, orig, Array(scale, scale, scale), True) Dim arrspl arrspl = Rhino.SplitBrep(facet, scaledfacet, True) If Not isArray(arrspl) Then Call Rhino.Print("Smth wrng in tha split") Else Call rhino.DeleteObject(arrspl(0)) Call rhino.DeleteObject(scaledfacet) End If text = CStr(m) + ", " + CStr(mm Mod 10) Call Rhino.AddPoint(a) Call Rhino.AddText(text, a, 0.3) mm = mm + 1 Next m = m + 1 Next Call rhino.enableredraw(True) Call rhino.HideObject(surf) End Sub