<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title></title>
	<atom:link href="http://thewhiteball.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://thewhiteball.wordpress.com</link>
	<description></description>
	<lastBuildDate>Mon, 14 Mar 2011 11:54:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='thewhiteball.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/002af1c1b2f21b81a3232f4eadef76e6?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title></title>
		<link>http://thewhiteball.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://thewhiteball.wordpress.com/osd.xml" title="" />
	<atom:link rel='hub' href='http://thewhiteball.wordpress.com/?pushpress=hub'/>
		<item>
		<title>surfaces.morph.01</title>
		<link>http://thewhiteball.wordpress.com/2010/03/05/surfaces-morph-01/</link>
		<comments>http://thewhiteball.wordpress.com/2010/03/05/surfaces-morph-01/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 16:42:17 +0000</pubDate>
		<dc:creator>jonbailey</dc:creator>
				<category><![CDATA[surfaces]]></category>

		<guid isPermaLink="false">http://thewhiteball.wordpress.com/?p=300</guid>
		<description><![CDATA[Option Explicit &#8216;Script written by &#8216;Script copyrighted by &#8216;Script version Thursday, March 06, 2008 10:48:20 AM Call Main() Sub Main() Dim surfaces,iterations,ctrlCrv surfaces = Rhino.GetObjects(&#8220;Select Surfaces to Morph&#8221;,8) If isNull(surfaces) Then Exit Sub iterations = Rhino.GetReal(&#8220;Number of Objects Between Steps&#8221;, 5,1) If isNull(iterations) Then Exit Sub ctrlCrv = Rhino.GetBoolean(&#8220;Display Control Curves&#8221;,array(&#8220;curveStatus&#8221;,&#8221;delete&#8221;,&#8221;display&#8221;),array(False)) Call Rhino.EnableRedraw(False) Call surfaceMorpher(surfaces,iterations,ctrlCrv(0)) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=300&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://thewhiteball.files.wordpress.com/2010/03/surfmorph.jpg"><img src="http://thewhiteball.files.wordpress.com/2010/03/surfmorph.jpg?w=426&#038;h=251" alt="" title="surfmorph" width="426" height="251" class="aligncenter size-full wp-image-301" /></a></p>
<p>
Option Explicit<br />
&#8216;Script written by<br />
&#8216;Script copyrighted by<br />
&#8216;Script version Thursday, March 06, 2008 10:48:20 AM</p>
<p>Call Main()<br />
Sub Main()<br />
	Dim surfaces,iterations,ctrlCrv<br />
	surfaces = Rhino.GetObjects(&#8220;Select Surfaces to Morph&#8221;,8)<br />
	If isNull(surfaces) Then Exit Sub<br />
	iterations = Rhino.GetReal(&#8220;Number of Objects Between Steps&#8221;, 5,1)<br />
	If isNull(iterations) Then Exit Sub<br />
	ctrlCrv = Rhino.GetBoolean(&#8220;Display Control Curves&#8221;,array(&#8220;curveStatus&#8221;,&#8221;delete&#8221;,&#8221;display&#8221;),array(False))</p>
<p>	Call Rhino.EnableRedraw(False)<br />
	Call surfaceMorpher(surfaces,iterations,ctrlCrv(0))<br />
	Call Rhino.EnableRedraw(True)</p>
<p>End Sub<br />
Function surfaceMorpher(surfaces,instances,crvBln)<br />
	surfaceMorpher = Null<br />
	Dim i,j,k,r,m<br />
	Dim Ucount,Vcount,Udom,Vdom,objCount,pCount,pDom<br />
	Dim arrU(),arrV(),domU(),domV()<br />
	Dim tempPtSet<br />
	Dim srfPts(),srfPtSet(),arrSrfPts(),ctrlCrvPts()<br />
	objCount = uBound(surfaces)<br />
	ReDim arrU(objCount), arrV(objCount),domU(objCount),domV(objCount)<br />
	&#8216;Find out existing surface parameters<br />
	For i = 0 To objCount Step 1<br />
		pCount = Rhino.SurfacePointCount(surfaces(i))<br />
		pDom = Rhino.SurfaceDegree (surfaces(i))<br />
		arrU(i)=pCount(0)<br />
		arrV(i)=pCount(1)<br />
		domU(i) = pDom(0)<br />
		domV(i) = pDom(1)<br />
		&#8216;Call Rhino.Print(arrU(i))<br />
		&#8216;Call Rhino.Print(arrV(i))<br />
	Next<br />
	&#8216;find you maximum values<br />
	Dim surfRe<br />
	Udom = Rhino.Max(domU)<br />
	Vdom = Rhino.Max(domV)<br />
	Ucount = Rhino.Max(arrU)<br />
	Vcount = Rhino.Max(arrV)</p>
<p>	ReDim srfPts(Vcount),srfPtSet(Ucount),arrSrfPts(objCount)<br />
	&#8216;rebuild the surfaces based on max values<br />
	For i = 0 To objCount Step 1<br />
		surfRe = Rhino.RebuildSurface(surfaces(i),array(Udom,Vdom), array(Ucount,Vcount))<br />
	Next<br />
	&#8216;extract the surface control points<br />
	For i = 0 To objCount Step 1<br />
		tempPtSet = Rhino.SurfacePoints(surfaces(i))<br />
		m = 0<br />
		For j = 0 To Ucount-1 Step 1<br />
			For k = 0 To Vcount-1 Step 1<br />
				srfPts(k) = tempPtSet(m)<br />
				m=m+1<br />
			Next<br />
			srfPtSet(j) = srfPts<br />
		Next<br />
		arrSrfPts(i) = srfPtSet<br />
	Next<br />
	&#8216;resequence and create blend points<br />
	ReDim ctrlCrvPts(objCount)</p>
<p>	Dim ctrlCrv,crvDom,crvSteps<br />
	Dim finSrfPt(),finSrfSet(),arrFinSrfPts()<br />
	crvSteps = instances*objCount+objCount<br />
	ReDim finSrfSet(Vcount), arrFinSrfPts(Ucount),finSrfPt(crvSteps)<br />
	r=0<br />
	For i = 0 To Ucount-1 Step 1<br />
		For j = 0 To Vcount-1 Step 1<br />
			For k = 0 To objCount Step 1<br />
				ctrlCrvPts(k) = arrSrfPts(k)(i)(j)<br />
			Next<br />
			ctrlCrv = Rhino.AddInterpCurve(ctrlCrvPts)<br />
			crvDom = Rhino.CurveDomain(ctrlCrv)<br />
			For r = 0 To crvSteps Step 1<br />
				finSrfPt(r)= Rhino.EvaluateCurve(ctrlCrv,r*(crvDom(1)/crvSteps))<br />
			Next<br />
			If crvBln = False Then<br />
				Call Rhino.DeleteObject(ctrlCrv)<br />
			End If<br />
			finSrfSet(j) = finSrfPt<br />
		Next<br />
		arrFinSrfPts(i) = finSrfSet<br />
	Next</p>
<p>	&#8216;resequence into point grid for surface<br />
	Dim SrfCtrlPts(),endSurf()<br />
	ReDim SrfCtrlPts(Vcount*Ucount-1),endSurf(crvSteps)<br />
	For i = 0 To crvSteps Step 1<br />
		r=0<br />
		For j = 0 To Ucount-1 Step 1<br />
			For k = 0 To Vcount-1 Step 1<br />
				SrfCtrlPts(r) = arrFinSrfPts(j)(k)(i)<br />
				r=r+1<br />
			Next<br />
		Next<br />
		endSurf(i) = Rhino.AddSrfControlPtGrid (array(Ucount,Vcount), SrfCtrlPts,array(Udom,Vdom))<br />
	Next<br />
	Call Rhino.DeleteObjects(surfaces)<br />
	surfaceMorpher = endSurf<br />
End Function</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thewhiteball.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thewhiteball.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thewhiteball.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thewhiteball.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thewhiteball.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thewhiteball.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thewhiteball.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thewhiteball.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thewhiteball.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thewhiteball.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thewhiteball.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thewhiteball.wordpress.com/300/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thewhiteball.wordpress.com/300/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thewhiteball.wordpress.com/300/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=300&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thewhiteball.wordpress.com/2010/03/05/surfaces-morph-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5069a043eaef591b91d4b5cf82c83b39?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonbailey</media:title>
		</media:content>

		<media:content url="http://thewhiteball.files.wordpress.com/2010/03/surfmorph.jpg" medium="image">
			<media:title type="html">surfmorph</media:title>
		</media:content>
	</item>
		<item>
		<title>arrange.multisweep.01</title>
		<link>http://thewhiteball.wordpress.com/2010/03/05/arrange-multisweep-01/</link>
		<comments>http://thewhiteball.wordpress.com/2010/03/05/arrange-multisweep-01/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 16:39:46 +0000</pubDate>
		<dc:creator>jonbailey</dc:creator>
				<category><![CDATA[arrange]]></category>

		<guid isPermaLink="false">http://thewhiteball.wordpress.com/?p=298</guid>
		<description><![CDATA[Option Explicit &#8216;Script written by &#8216;Script copyrighted by &#8216;Script version Thursday, March 13, 2008 4:36:59 PM Call Main() Sub Main() Dim rails,profile,blnOrigin, i rails = Rhino.GetObjects(&#8220;Select Rail Curves&#8221;,4) If isNull(rails) Then Exit Sub profile = Rhino.GetObjects(&#8220;Select Profile Curves in Order of Placement&#8221;,4) If isNull(profile) Then Exit Sub Dim bbox, tline, tpt, pt, arrPt() ReDim arrPt(Ubound(profile)) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=298&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Option Explicit<br />
&#8216;Script written by<br />
&#8216;Script copyrighted by<br />
&#8216;Script version Thursday, March 13, 2008 4:36:59 PM</p>
<p>Call Main()<br />
Sub Main()<br />
	Dim rails,profile,blnOrigin, i<br />
	rails = Rhino.GetObjects(&#8220;Select Rail Curves&#8221;,4)<br />
	If isNull(rails) Then Exit Sub<br />
	profile = Rhino.GetObjects(&#8220;Select Profile Curves in Order of Placement&#8221;,4)<br />
	If isNull(profile) Then Exit Sub</p>
<p>	Dim bbox, tline, tpt, pt, arrPt()<br />
	ReDim arrPt(Ubound(profile))<br />
	For i = 0 To Ubound(profile) Step 1<br />
		Call Rhino.SelectObject(profile(i))<br />
		bbox = Rhino.BoundingBox(profile(i))<br />
		Call Rhino.EnableRedraw(False)<br />
		tline = Rhino.AddLine(bbox(0),bbox(2))<br />
		tpt = Rhino.CurveMidPoint(tline)<br />
		Call Rhino.DeleteObject(tline)<br />
		Call Rhino.EnableRedraw(True)</p>
<p>		pt = Rhino.GetPoint(&#8220;Select Origin for Profile&#8221; &amp; i,tpt)<br />
		Call Rhino.Command(&#8220;_SelNone&#8221;,False)</p>
<p>		If isNull(pt) Then<br />
			arrPt(i) = tpt<br />
		Else<br />
			arrPt(i) = pt<br />
		End If<br />
		pt = Null<br />
	Next</p>
<p>	Call Rhino.EnableRedraw(False)<br />
	For i = 0 To uBound(rails) Step 1<br />
		Call reparameterize(rails(i))<br />
	Next<br />
	Call Rhino.EnableRedraw(True)</p>
<p>	Call curveSweepMultiProf(rails,profile,arrPt)<br />
End Sub<br />
Function curveSweepMultiProf(rail,profile,arrOrigin)<br />
	curveSweepMultiProf = Null</p>
<p>	Dim i,j,k,m,n,angle,pCount,Count<br />
	Count = uBound(rail)<br />
	pCount = uBound(profile)<br />
	&#8216;profile variables<br />
	Dim bBox(), oriPts(), dist(2), originPts(2),originPln<br />
	ReDim bBox(pCount), oriPts(pCount)</p>
<p>	&#8216;create an origin plane for the profile<br />
	Call Rhino.EnableRedraw(False)<br />
	For j = 0 To pCount Step 1<br />
		bBox(j) = Rhino.BoundingBox(profile(j))<br />
		dist(0) = Rhino.Distance(bBox(j)(0),bBox(j)(2))<br />
		dist(1) = Rhino.Distance(bBox(j)(0),bBox(j)(5))<br />
		dist(2) = Rhino.Distance(bBox(j)(0),bBox(j)(7))</p>
<p>		If dist(0) &gt; dist(1) And dist(0) &gt; dist(2) Then<br />
			m = array(1,0,0)<br />
			n = array(0,1,0)<br />
		ElseIf dist(1) &gt; dist(0) And dist(1) &gt; dist(2) Then<br />
			m = array(1,0,0)<br />
			n = array(0,0,1)<br />
		ElseIf dist(2) &gt; dist(1) And dist(2) &gt; dist(0) Then<br />
			m = array(0,1,0)<br />
			n = array(0,0,1)<br />
		End If</p>
<p>		originPts(2)= arrOrigin(j)<br />
		originPts(0)= array(originPts(2)(0)+m(0),originPts(2)(1)+m(1),originPts(2)(2)+m(2))<br />
		originPts(1)= array(originPts(2)(0)+n(0),originPts(2)(1)+n(1),originPts(2)(2)+n(2))</p>
<p>		originPln = Rhino.PlaneFromPoints(originPts(2),originPts(0),originPts(1))<br />
		oriPts(j) = originPts<br />
	Next</p>
<p>	&#8216;create alignment planes on the curve<br />
	&#8216;rail variables<br />
	Dim crvDom,crvStep, crvPlane(),crvProf(),crvPt(2)<br />
	ReDim crvPlane(Pcount),crvPlaneSet(count),crvProfSet(count),crvProf(Pcount)<br />
	For i = 0 To count Step 1<br />
		crvDom = Rhino.CurveDomain(rail(i))<br />
		If Pcount = 0 Then<br />
			crvStep= 0<br />
		Else<br />
			crvStep= crvDom(1)/Pcount<br />
		End If<br />
		For j = 0 To Pcount Step 1<br />
			crvPlane(j) = Rhino.CurvePerpFrame(rail(i), j*crvStep)<br />
			crvPt(0) = crvPlane(j)(0)<br />
			crvPt(1) = Rhino.pointadd(crvPlane(j)(0),crvPlane(j)(1))<br />
			crvPt(2) = Rhino.pointadd(crvPlane(j)(0),crvPlane(j)(2))<br />
			crvProf(j) = Rhino.OrientObject (profile(j), array(oriPts(j)(2),oriPts(j)(1),oriPts(j)(0)),array(crvPt(0),crvPt(1),crvPt(2)),1)<br />
		Next<br />
		crvPlaneSet(i)= crvPlane<br />
		crvProfSet(i) = crvProf<br />
	Next<br />
	&#8216;allow for rotation correction<br />
	Call Rhino.EnableRedraw(True)<br />
	angle = 90<br />
	Do Until angle = 0<br />
		angle = Rhino.GetReal(&#8220;Object Rotation&#8221;,0,0,360)<br />
		If isNull(angle) Then Exit Do<br />
		Call Rhino.EnableRedraw(False)<br />
		For i = 0 To count Step 1<br />
			For j = 0 To Pcount Step 1<br />
				Call Rhino.RotateObject(crvProfSet(i)(j),crvPlaneSet(i)(j)(0),angle,crvPlaneSet(i)(j)(3))<br />
			Next<br />
		Next<br />
		Call Rhino.EnableRedraw(True)<br />
	Loop</p>
<p>	Call Rhino.EnableRedraw(False)</p>
<p>	&#8216;sweep variables<br />
	Dim swProfSet(),strProfSet<br />
	ReDim swProfSet(Pcount)</p>
<p>	&#8216;call out sweep command<br />
	For i = 0 To count Step 1<br />
		For j = 0 To Pcount Step 1<br />
			swProfSet(j) = (&#8220;_SelID &#8221; &amp; crvProfSet(i)(j) &amp; &#8221; &#8220;)<br />
		Next<br />
		strProfSet = Join(swProfSet)<br />
		&#8216;swPprofSet<br />
		Call Rhino.Command( &#8220;-_Sweep1 &#8221; &amp; &#8220;_SelID &#8221; &amp; rail(i) &amp; &#8221; &#8221; &amp; strProfSet &amp; &#8221; _Enter _Enter _Simplify=None Enter&#8221;, False)<br />
	Next<br />
	Call Rhino.EnableRedraw(True)</p>
<p>	curveSweepMultiProf = array()<br />
End Function<br />
Function reparameterize(strObjectID)<br />
	If Rhino.IsCurve(strObjectID) = True Then<br />
		Call rhino.SelectObject(strObjectID)<br />
		Call rhino.Command(&#8220;reparameterize 0 1&#8243;,False)<br />
		Call rhino.UnselectAllObjects()<br />
	End If<br />
	If Rhino.IsSurface(strObjectID) = True Then<br />
		Call rhino.SelectObject(strObjectID)<br />
		Call rhino.Command(&#8220;reparameterize 0 1 0 1&#8243;,False)<br />
		Call rhino.UnselectAllObjects()<br />
	End If<br />
End Function</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thewhiteball.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thewhiteball.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thewhiteball.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thewhiteball.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thewhiteball.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thewhiteball.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thewhiteball.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thewhiteball.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thewhiteball.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thewhiteball.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thewhiteball.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thewhiteball.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thewhiteball.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thewhiteball.wordpress.com/298/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=298&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thewhiteball.wordpress.com/2010/03/05/arrange-multisweep-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5069a043eaef591b91d4b5cf82c83b39?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonbailey</media:title>
		</media:content>
	</item>
		<item>
		<title>misc.documentation.arrows.01</title>
		<link>http://thewhiteball.wordpress.com/2010/03/05/misc-documentation-arrows-01/</link>
		<comments>http://thewhiteball.wordpress.com/2010/03/05/misc-documentation-arrows-01/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 16:39:21 +0000</pubDate>
		<dc:creator>jonbailey</dc:creator>
				<category><![CDATA[curves]]></category>
		<category><![CDATA[lines]]></category>
		<category><![CDATA[misc]]></category>

		<guid isPermaLink="false">http://thewhiteball.wordpress.com/?p=295</guid>
		<description><![CDATA[Option Explicit &#8216;Script written by &#8216;Script copyrighted by &#8216;Script version Sunday, June 08, 2008 1:19:49 AM Call Main() Sub Main() Dim crv: crv = Rhino.GetObjects(&#8220;Select Curves&#8221;,4) If isNull(crv) Then Exit Sub Dim arrItems, arrValues, arrResults arrItems = array(&#8220;scale_width&#8221;,&#8221;twist_angle&#8221;,&#8221;tip_location&#8221;,&#8221;tip_angle&#8221;,&#8221;start_width&#8221;,&#8221;end_width&#8221;,&#8221;tip_length&#8221;,&#8221;type_(1)or(2)&#8221;,&#8221;curved arrows&#8221;) arrValues = array(1,0,.95,45,.2,.5,1,1,True) arrResults = Rhino.PropertyListBox (arrItems, arrValues ,,&#8221;Arrow Parameters&#8221;) Dim i If arrResults(0) .99 Then [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=295&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://thewhiteball.files.wordpress.com/2010/03/leadtheway.jpg?w=426&#038;h=251" alt="" title="leadtheway" width="426" height="251" class="aligncenter size-full wp-image-296" /></p>
<p>
Option Explicit<br />
&#8216;Script written by<br />
&#8216;Script copyrighted by<br />
&#8216;Script version Sunday, June 08, 2008 1:19:49 AM</p>
<p>Call Main()<br />
Sub Main()<br />
	Dim crv: crv = Rhino.GetObjects(&#8220;Select Curves&#8221;,4)<br />
	If isNull(crv) Then Exit Sub<br />
	Dim arrItems, arrValues, arrResults<br />
	arrItems = array(&#8220;scale_width&#8221;,&#8221;twist_angle&#8221;,&#8221;tip_location&#8221;,&#8221;tip_angle&#8221;,&#8221;start_width&#8221;,&#8221;end_width&#8221;,&#8221;tip_length&#8221;,&#8221;type_(1)or(2)&#8221;,&#8221;curved arrows&#8221;)<br />
	arrValues = array(1,0,.95,45,.2,.5,1,1,True)<br />
	arrResults = Rhino.PropertyListBox (arrItems, arrValues ,,&#8221;Arrow Parameters&#8221;)<br />
	Dim i<br />
	If arrResults(0)  .99 Then<br />
		arrResults(2) = .99<br />
	End If<br />
	If arrResults(4) &lt; .01 Then<br />
		arrResults(4) = .01<br />
	End If<br />
	If arrResults(5) &lt; .01 Then<br />
		arrResults(5) = .01<br />
	End If<br />
	If arrResults(7)  1 Then<br />
		arrResults(7) = 1<br />
	End If</p>
<p>	Call Rhino.EnableRedraw(False)<br />
	For i = 0 To uBound(crv) Step 1<br />
		Call reparameterize(crv(i))<br />
		Call curveArrows(crv(i),CDbl(arrResults(0)),CDbl(arrResults(1)),CDbl(arrResults(2)),CDbl(arrResults(3)),CDbl(arrResults(4)),CDbl(arrResults(5)),CDbl(arrResults(6)),CInt(arrResults(7)),CBool(arrResults(8)))<br />
	Next<br />
	Call Rhino.EnableRedraw(True)<br />
End Sub<br />
Function curveArrows(curve, dblScale,twistAngle,tip,headAngle,edgeParaA,edgeParaB,width,dblType,CrvBln)<br />
	curveArrows = Null<br />
	Dim i,j, crv, tipEdge, crvCpy, crvDom, dis,scale, count, crvFrame, strProfSet(1),tempCrv, crvX, srf(3)<br />
	Dim endPt, midPtA, midPtB<br />
	count = 2+CInt(twistAngle/90)<br />
	ReDim frame(count), pt(count*2+1), swProfSetA(count-1), swProfSetB(count-1),crvA(count-1),crvB(count-1),parameter(count)<br />
	ReDim srfEdge(2), edgeA(count-1), edgeB(count-1)</p>
<p>	If width  0 Then<br />
		tip = (Rhino.CurveLength(curve)-width)/Rhino.CurveLength (curve)<br />
	End If<br />
	crvDom = Rhino.CurveDomain(curve)(1)<br />
	parameter(0) = 0<br />
	For i = 0 To count-1 Step 1<br />
		parameter(i) = (crvDom*tip/(count-1))*i<br />
	Next<br />
	parameter(count) = crvDom-(crvDom-crvDom*tip)*.5</p>
<p>	dis = Rhino.Distance(Rhino.EvaluateCurve(curve,crvDom*tip),Rhino.EvaluateCurve(curve,crvDom))*dblScale<br />
	scale = dis*0.5</p>
<p>	j=0<br />
	For i = 0 To count Step 1<br />
		crvFrame = Rhino.CurveFrame(curve,parameter(i))<br />
		If i = count Then<br />
			frame(i) = Rhino.RotatePlane(crvFrame,(twistAngle/(count-1))*(i-1),crvFrame(1))<br />
		Else<br />
			frame(i) = Rhino.RotatePlane(crvFrame,(twistAngle/(count-1))*i,crvFrame(1))<br />
		End If<br />
		pt(j) = Rhino.PointAdd(frame(i)(0),Rhino.VectorRotate(Rhino.VectorScale(frame(i)(2),scale),90-headAngle,frame(i)(3)))<br />
		j=j+1<br />
		pt(j) = Rhino.PointAdd(frame(i)(0),Rhino.VectorRotate(Rhino.VectorScale(frame(i)(2),scale),90+headAngle,frame(i)(3)))<br />
		j=j+1<br />
		If iedgeParaB Then<br />
		edgeParaB = -(edgeParaA-edgeParaB)/(count-1)<br />
	ElseIf edgeParaB&gt;edgeParaA Then<br />
		edgeParaB = (edgeParaB-edgeParaA)/(count-1)<br />
	Else<br />
		edgeParaB = 0<br />
	End If<br />
	For i = 0 To  count-1 Step 1<br />
		edgeA(i) = Rhino.SplitCurve(crvA(i),Rhino.CurveDomain(crvA(i))(1)*(1-(edgeParaA+edgeParaB*i)),True)<br />
		edgeB(i) = Rhino.SplitCurve(crvB(i),Rhino.CurveDomain(crvB(i))(1)*(edgeParaA+edgeParaB*i),True)<br />
	Next<br />
	For i = 0 To count-1 Step 1<br />
		swProfSetA(i) = (&#8220;_SelID &#8221; &amp; edgeA(i)(1) &amp; &#8221; &#8220;)<br />
		swProfSetB(i) = (&#8220;_SelID &#8221; &amp; edgeB(i)(0) &amp; &#8221; &#8220;)</p>
<p>	Next<br />
	strProfSet(0) = Join(swProfSetA)<br />
	strProfSet(1) = Join(swProfSetB)<br />
	If dblType = 1 Then<br />
		Call Rhino.Command( &#8220;-_Sweep1 &#8221; &amp; &#8220;_SelID &#8221; &amp; crv(0) &amp; &#8221; &#8221; &amp; strProfSet(0) &amp; &#8221; _Enter _Simplify=None Enter&#8221;)<br />
		srf(2)= Rhino.FirstObject()<br />
	End If<br />
	Call Rhino.Command( &#8220;-_Sweep1 &#8221; &amp; &#8220;_SelID &#8221; &amp; crv(0) &amp; &#8221; &#8221; &amp; strProfSet(1) &amp; &#8221; _Enter  _Simplify=None Enter&#8221;)<br />
	srf(3)= Rhino.FirstObject()</p>
<p>	If dblType = 1 Then<br />
		Call Rhino.JoinSurfaces(srf,True)<br />
	Else<br />
		Call Rhino.JoinSurfaces(array(srf(1),srf(3)),True)<br />
	End If<br />
	Call Rhino.DeleteObjects(crv)<br />
	Call Rhino.DeleteObjects(srfEdge)<br />
	For i = 0 To count-1 Step 1<br />
		Call Rhino.DeleteObjects(edgeA(i))<br />
		Call Rhino.DeleteObjects(edgeB(i))<br />
	Next<br />
End Function<br />
Function reparameterize(strCurveID)<br />
	If Rhino.IsCurve(strCurveID) = True Then<br />
		Call rhino.SelectObject(strCurveID)<br />
		Call rhino.Command(&#8220;reparameterize 0 1&#8243;)<br />
		Call rhino.UnselectAllObjects()<br />
	End If<br />
	If Rhino.IsSurface(strCurveID) = True Then<br />
		Call rhino.SelectObject(strCurveID)<br />
		Call rhino.Command(&#8220;reparameterize 0 1 0 1&#8243;)<br />
		Call rhino.UnselectAllObjects()<br />
	End If<br />
End Function</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thewhiteball.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thewhiteball.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thewhiteball.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thewhiteball.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thewhiteball.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thewhiteball.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thewhiteball.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thewhiteball.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thewhiteball.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thewhiteball.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thewhiteball.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thewhiteball.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thewhiteball.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thewhiteball.wordpress.com/295/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=295&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thewhiteball.wordpress.com/2010/03/05/misc-documentation-arrows-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5069a043eaef591b91d4b5cf82c83b39?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonbailey</media:title>
		</media:content>

		<media:content url="http://thewhiteball.files.wordpress.com/2010/03/leadtheway.jpg" medium="image">
			<media:title type="html">leadtheway</media:title>
		</media:content>
	</item>
		<item>
		<title>geometry.lattice pipe.01</title>
		<link>http://thewhiteball.wordpress.com/2010/03/05/geometry-lattice-pipe-01/</link>
		<comments>http://thewhiteball.wordpress.com/2010/03/05/geometry-lattice-pipe-01/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 16:31:15 +0000</pubDate>
		<dc:creator>jonbailey</dc:creator>
				<category><![CDATA[geometry]]></category>

		<guid isPermaLink="false">http://thewhiteball.wordpress.com/2010/03/05/geometry-lattice-pipe-01/</guid>
		<description><![CDATA[Option Explicit &#8216;Script written by &#8216;Script copyrighted by &#8216;Script version Sunday, August 30, 2009 1:22:47 AM Call Main() Sub Main() Dim strCurve strCurve = Rhino.GetObject(&#8220;Select Curve&#8221;,4,True) If isNull(strCurve) Then Exit Sub Call reparameterize(strCurve) Dim arrItems, arrValues, arrReturns arrItems = array(&#8220;Strands&#8221;,&#8221;Rotations&#8221;,&#8221;Strand Oscillations&#8221;,&#8221;Min Radius&#8221;,&#8221;Max Radius&#8221;,&#8221;Radius Oscillations&#8221;,&#8221;Samples&#8221;) arrValues= array(8,0,4,1,2,4,18) arrReturns = Rhino.PropertyListBox (arrItems, arrValues ,,&#8221;Parameters&#8221;) If isNull(arrReturns) Then [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=292&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://thewhiteball.files.wordpress.com/2010/03/lattice-pipe.jpg?w=426&#038;h=251" alt="" title="lattice pipe" width="426" height="251" class="aligncenter size-full wp-image-293" /></p>
<p>
Option Explicit<br />
&#8216;Script written by<br />
&#8216;Script copyrighted by<br />
&#8216;Script version Sunday, August 30, 2009 1:22:47 AM</p>
<p>Call Main()<br />
Sub Main()<br />
	Dim strCurve<br />
	strCurve = Rhino.GetObject(&#8220;Select Curve&#8221;,4,True)<br />
	If isNull(strCurve) Then Exit Sub<br />
	Call reparameterize(strCurve)</p>
<p>	Dim arrItems, arrValues, arrReturns<br />
	arrItems = array(&#8220;Strands&#8221;,&#8221;Rotations&#8221;,&#8221;Strand Oscillations&#8221;,&#8221;Min Radius&#8221;,&#8221;Max Radius&#8221;,&#8221;Radius Oscillations&#8221;,&#8221;Samples&#8221;)<br />
	arrValues= array(8,0,4,1,2,4,18)<br />
	arrReturns = Rhino.PropertyListBox (arrItems, arrValues ,,&#8221;Parameters&#8221;)<br />
	If isNull(arrReturns) Then Exit Sub</p>
<p>	Call Rhino.EnableRedraw(False)<br />
	Call curveLattice(strCurve,CInt(arrReturns(0)),CInt(arrReturns(2)),CDbl(arrReturns(1)),array(CDbl(arrReturns(3)),CDbl(arrReturns(4))),CInt(arrReturns(5)),CInt(arrReturns(6)))<br />
	Call Rhino.EnableRedraw(True)</p>
<p>End Sub<br />
Function curveLattice(strCurve,intStrands,intOscillations, dblRotation, arrRadius, intRadius, intSamples)<br />
	curveLattice = Null<br />
	intOscillations = intOscillations*2</p>
<p>	Dim i,j, count, tDom, tStep, rStep, dblSc<br />
	Dim tFrame, rFrame<br />
	Dim arrOutput(),arrPt()</p>
<p>	count = intSamples*intOscillations<br />
	ReDim arrPt(count), arrOutput(intStrands)</p>
<p>	tDom = Rhino.CurveDomain(strCurve)<br />
	tStep = (tDom(1)-tDom(0))/count<br />
	rStep = 360/intStrands<br />
	dblSc = arrRadius(1)-arrRadius(0)</p>
<p>	For i = 0 To intStrands-1 Step 1<br />
		For j = 0 To count Step 1<br />
			tFrame = Rhino.CurvePerpFrame(strCurve,tDom(0)+tStep*j)<br />
			If i Mod(2) Then<br />
				rFrame = Rhino.RotatePlane(tFrame,rStep*i+(rStep*0.5)*sin(intOscillations*PI*(j/count))+(360*dblRotation)*j/count,tFrame(3))<br />
			Else<br />
				rFrame = Rhino.RotatePlane(tFrame,rStep*i+(rStep*0.5)*sin(PI+intOscillations*PI*(j/count))+(360*dblRotation)*j/count,tFrame(3))<br />
			End If<br />
			arrPt(j) = Rhino.PointAdd(tFrame(0),Rhino.VectorScale(Rhino.VectorUnitize(rFrame(1)),arrRadius(0)+dblSc+dblSc*cos(intRadius*PI*(j/count))))<br />
		Next<br />
		arrOutput(i) = arrPt<br />
		Call Rhino.AddInterpCurve(arrPt)<br />
	Next</p>
<p>	curveLattice = arrOutput<br />
End Function<br />
Function reparameterize(strObjectID)<br />
	If Rhino.IsCurve(strObjectID) = True Then<br />
		Call rhino.SelectObject(strObjectID)<br />
		Call rhino.Command(&#8220;reparameterize 0 1&#8243;)<br />
		Call rhino.UnselectAllObjects()<br />
	End If<br />
	If Rhino.IsSurface(strObjectID) = True Then<br />
		Call rhino.SelectObject(strObjectID)<br />
		Call rhino.Command(&#8220;reparameterize 0 1 0 1&#8243;)<br />
		Call rhino.UnselectAllObjects()<br />
	End If<br />
End Function</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thewhiteball.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thewhiteball.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thewhiteball.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thewhiteball.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thewhiteball.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thewhiteball.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thewhiteball.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thewhiteball.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thewhiteball.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thewhiteball.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thewhiteball.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thewhiteball.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thewhiteball.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thewhiteball.wordpress.com/292/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=292&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thewhiteball.wordpress.com/2010/03/05/geometry-lattice-pipe-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5069a043eaef591b91d4b5cf82c83b39?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonbailey</media:title>
		</media:content>

		<media:content url="http://thewhiteball.files.wordpress.com/2010/03/lattice-pipe.jpg" medium="image">
			<media:title type="html">lattice pipe</media:title>
		</media:content>
	</item>
		<item>
		<title>images.reader.01</title>
		<link>http://thewhiteball.wordpress.com/2010/03/05/image-reader-01/</link>
		<comments>http://thewhiteball.wordpress.com/2010/03/05/image-reader-01/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 16:30:50 +0000</pubDate>
		<dc:creator>jonbailey</dc:creator>
				<category><![CDATA[images]]></category>

		<guid isPermaLink="false">http://thewhiteball.wordpress.com/2010/03/05/image-reader-01/</guid>
		<description><![CDATA[Option Explicit &#8216;Script written by &#8216;Script copyrighted by &#8216;Script version Monday, May 26, 2008 1:43:26 PM Call Main() Sub Main() Dim surf surf = Rhino.GetObject(&#8220;select surface&#8221;,8) If isNull(surf) Then Exit Sub Call reparameterize(surf) Dim arrItems, arrValues, arrResults arrItems = array(&#8220;Cell_Colums&#8221;,&#8221;Cell_Rows&#8221;,&#8221;Offset&#8221;,&#8221;Scale_btw_0-1&#8243;,&#8221;tabHeight&#8221;,&#8221;cutTemplate&#8221;,&#8221;surfaces&#8221;,&#8221;imageScale&#8221;,&#8221;imageOculi&#8221;) arrValues= array(10,10,1,0.4,1,True,True,False,True) arrResults = Rhino.PropertyListBox (arrItems, arrValues ,,&#8221;Volume Parameters&#8221;) Dim scale, oculi If CBool(arrResults(7)) = [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=291&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Option Explicit<br />
&#8216;Script written by<br />
&#8216;Script copyrighted by<br />
&#8216;Script version Monday, May 26, 2008 1:43:26 PM</p>
<p>Call Main()<br />
Sub Main()<br />
	Dim surf<br />
	surf = Rhino.GetObject(&#8220;select surface&#8221;,8)<br />
	If isNull(surf) Then Exit Sub<br />
	Call reparameterize(surf)</p>
<p>	Dim arrItems, arrValues, arrResults<br />
	arrItems = array(&#8220;Cell_Colums&#8221;,&#8221;Cell_Rows&#8221;,&#8221;Offset&#8221;,&#8221;Scale_btw_0-1&#8243;,&#8221;tabHeight&#8221;,&#8221;cutTemplate&#8221;,&#8221;surfaces&#8221;,&#8221;imageScale&#8221;,&#8221;imageOculi&#8221;)<br />
	arrValues= array(10,10,1,0.4,1,True,True,False,True)<br />
	arrResults = Rhino.PropertyListBox (arrItems, arrValues ,,&#8221;Volume Parameters&#8221;)<br />
	Dim scale, oculi</p>
<p>	If CBool(arrResults(7)) = True Then<br />
		scale = arrImageSample(CInt(arrResults(0))*2+1, CInt(arrResults(1))*2+1)(6)<br />
	Else<br />
		scale = arrayValue(CInt(arrResults(0))*2+1, CInt(arrResults(1))*2+1,CDbl(arrResults(2)))<br />
	End If<br />
	If CBool(arrResults(8)) = True Then<br />
		oculi = arrImageSample(CInt(arrResults(0))*2, CInt(arrResults(1))*2)(6)<br />
	Else<br />
		oculi = arrayValue(CInt(arrResults(0))*2, CInt(arrResults(1))*2,CDbl(arrResults(3)))<br />
	End If</p>
<p>	Dim tri, cut(2)<br />
	Call Rhino.EnableRedraw(False)<br />
	tri = TriangulateSurface(surf,CInt(arrResults(0))*2,CInt(arrResults(1))*2,CDbl(arrResults(2)),scale)<br />
	If CBool(arrResults(6)) = True Then<br />
		Call SurfaceMe(tri(0),oculi,CDbl(arrResults(3)),&#8221;surfaces_out&#8221;)<br />
		Call SurfaceMe(tri(1),oculi,CDbl(arrResults(3)),&#8221;surfaces_in&#8221;)<br />
		Call SurfaceMe(tri(2),oculi,CDbl(arrResults(3)),&#8221;surfaces_center&#8221;)<br />
	End If</p>
<p>	If CBool(arrResults(5)) = True Then<br />
		cut(0) = UnfoldMe(tri(0),0,CDbl(arrResults(4)),oculi,CDbl(arrResults(3)),&#8221;A&#8221;)<br />
		cut(1) = UnfoldMe(tri(1),cut(0)+5,CDbl(arrResults(4)),oculi,CDbl(arrResults(3)),&#8221;B&#8221;)<br />
		cut(2) = UnfoldMe(tri(2),cut(1)+5,CDbl(arrResults(4)),oculi,CDbl(arrResults(3)),&#8221;C&#8221;)<br />
	End If</p>
<p>	Call Rhino.EnableRedraw(True)</p>
<p>End Sub<br />
Function TriangulateSurface(surface,cols,rows,offset,arrOffset)<br />
	TriangulateSurface = Null<br />
	Dim i,j<br />
	Dim uDom,vDom,uStep,vStep<br />
	uDom = Rhino.SurfaceDomain(surface,0)(1): uStep = uDom/cols<br />
	vDom = Rhino.SurfaceDomain(surface,1)(1): VStep = vDom/rows</p>
<p>	ReDim uv(rows),pt(rows),ptA(rows),ptB(rows),uvSet(cols),ptSet(cols),ptSetA(cols),ptSetB(cols)<br />
	&#8216;plot point grid<br />
	For i = 0 To cols Step 1<br />
		For j = 0 To rows Step 1<br />
			uv(j) = array(i*uStep,j*vStep)<br />
			ptB(j) = Rhino.EvaluateSurface(surface,uv(j))<br />
			If arrOffset(i)(j)  0.9 Then<br />
				If i Mod(2) Then<br />
					If j Mod(2) Then<br />
						srfA(j) = Rhino.AddSrfPt(array(ptSet(i)(j),ptSet(i)(j+1),ptSet(i+1)(j)))<br />
						srfB(j) = Rhino.AddSrfPt(array(ptSet(i+1)(j+1),ptSet(i)(j+1),ptSet(i+1)(j)))<br />
					Else<br />
						srfA(j) = Rhino.AddSrfPt(array(ptSet(i+1)(j),ptSet(i+1)(j+1),ptSet(i)(j)))<br />
						srfB(j) = Rhino.AddSrfPt(array(ptSet(i)(j+1),ptSet(i+1)(j+1),ptSet(i)(j)))<br />
					End If<br />
				Else<br />
					If j Mod(2) Then<br />
						srfA(j) = Rhino.AddSrfPt(array(ptSet(i+1)(j),ptSet(i+1)(j+1),ptSet(i)(j)))<br />
						srfB(j) = Rhino.AddSrfPt(array(ptSet(i)(j+1),ptSet(i+1)(j+1),ptSet(i)(j)))<br />
					Else<br />
						srfA(j) = Rhino.AddSrfPt(array(ptSet(i)(j),ptSet(i)(j+1),ptSet(i+1)(j)))<br />
						srfB(j) = Rhino.AddSrfPt(array(ptSet(i+1)(j+1),ptSet(i)(j+1),ptSet(i+1)(j)))<br />
					End If<br />
				End If<br />
				Call Rhino.ObjectLayer(srfA(j),objLayer)<br />
				Call Rhino.ObjectLayer(srfB(j),objLayer)<br />
			Else<br />
				If scale(i)(j)  ptC(j-1)(1) Then<br />
					angX(j) = -Rhino.Angle2(array(ptB(j-1),Rhino.PointAdd(ptB(j-1),wrldCS(1))),array(ptB(j-1),ptC(j-1)))(0)<br />
				Else<br />
					angX(j) = Rhino.Angle2(array(ptB(j-1),Rhino.PointAdd(ptB(j-1),wrldCS(1))),array(ptB(j-1),ptC(j-1)))(0)<br />
				End If<br />
			End If<br />
			If i Mod(2) Then<br />
				r = j+1<br />
			Else<br />
				r = j<br />
			End If<br />
			If r Mod(2) Then<br />
				ptA(j) = Rhino.PointAdd(oriPt(j),Rhino.VectorScale(Rhino.VectorRotate(wrldCS(1),angX(j),wrldCS(3)),d(i)(0)(j)))<br />
				ptB(j) = Rhino.PointAdd(oriPt(j),Rhino.VectorScale(Rhino.VectorRotate(wrldCS(1),angX(j)+a(i)(1)(j)+a(i)(2)(j),wrldCS(3)),d(i)(2)(j)))<br />
				ptC(j) = Rhino.PointAdd(ptA(j),Rhino.VectorScale(Rhino.VectorRotate(wrldCS(1),angX(j)+180-a(i)(0)(j),wrldCS(3)),d(i)(1)(j)))<br />
			Else<br />
				ptA(j) = Rhino.PointAdd(oriPt(j),Rhino.VectorScale(Rhino.VectorRotate(wrldCS(1),angX(j),wrldCS(3)),d(i)(0)(j)))<br />
				ptB(j) = Rhino.PointAdd(oriPt(j),Rhino.VectorScale(Rhino.VectorRotate(wrldCS(1),angX(j)+a(i)(0)(j),wrldCS(3)),d(i)(1)(j)))<br />
				ptC(j) = Rhino.PointAdd(ptA(j),Rhino.VectorScale(Rhino.VectorRotate(wrldCS(1),angX(j)+180-a(i)(1)(j)-a(i)(2)(j),wrldCS(3)),d(i)(2)(j)))<br />
			End If<br />
			minX(j) = Rhino.Min(array(ptA(j)(0),ptB(j)(0),ptC(j)(0)))<br />
			maxX(j) = Rhino.Max(array(ptA(j)(0),ptB(j)(0),ptC(j)(0)))<br />
			r=r+1<br />
		Next<br />
		mn(i) = Rhino.Min(minX)<br />
		If mn(i) &gt; 0 Then<br />
			mn(i) = 0<br />
		Else<br />
			mn(i) = abs(mn(i))<br />
		End If<br />
		mx(i) = abs(Rhino.Max(maxX))<br />
		pts(i) = array(oriPt,ptA,ptB,ptC)<br />
	Next<br />
	Dim ptX, k,u<br />
	Dim points(3),yVal(3),dblY<br />
	ReDim yMax(rows-1), yM(cols-1)<br />
	Dim edge(),edgeA(), edgeB(), span()<br />
	ReDim edge(cols-1),edgeA(rows-1), edgeB(rows-1), span(rows*2)<br />
	Dim cPt(1), oculi(1)<br />
	r=0<br />
	For i = 0 To cols-1 Step 1<br />
		k=0<br />
		If i &gt; 0 Then<br />
			r = r+mx(i-1)+mn(i)+tabHeight*2<br />
		End If<br />
		For j = 0 To rows-1 Step 1<br />
			ptX	= array(r,0,0)<br />
			For u = 0 To 3 Step 1<br />
				points(u) = Rhino.PointAdd(ptX,pts(i)(u)(j))<br />
			Next<br />
			If j Mod(2) Then<br />
				span(k) = Rhino.AddLine(points(0),points(3))<br />
				Call Rhino.ObjectLayer(span(k),&#8221;scores&#8221;)<br />
				k=k+1<br />
			Else<br />
				span(k) = Rhino.AddLine(points(1),points(2))<br />
				Call Rhino.ObjectLayer(span(k),&#8221;scores&#8221;)<br />
				k=k+1<br />
			End If<br />
			If j = 0 Then<br />
				span(k) = Rhino.AddLine(points(0),points(1))<br />
				Call Rhino.ObjectLayer(span(k),&#8221;cuts&#8221;)<br />
				k=k+1<br />
			End If<br />
			If j = rows-1 Then<br />
				span(k) = Rhino.AddLine(points(2),points(3))<br />
				Call Rhino.ObjectLayer(span(k),&#8221;cuts&#8221;)<br />
				k=k+1<br />
			Else<br />
				span(k) = Rhino.AddLine(points(2),points(3))<br />
				Call Rhino.ObjectLayer(span(k),&#8221;scores&#8221;)<br />
				k=k+1<br />
			End If</p>
<p>			If scale(i)(j) &lt;= .9 Then<br />
				If scale(i)(j) w Then<br />
				x = w<br />
			End If</p>
<p>			If y&gt;h Then<br />
				y = h<br />
			End If</p>
<p>			r(j) = RhPicture.Red(x,y)/255<br />
			g(j) = RhPicture.Green(x,y)/255<br />
			b(j) = RhPicture.Blue(x,y)/255<br />
			a(j) = RhPicture.Alpha(x,y)/255<br />
			hu(j) = RhPicture.Hue(x,y)/360<br />
			s(j) = RhPicture.Saturation(x,y)<br />
			u(j) = RhPicture.Luminance(x,y)</p>
<p>		Next<br />
		rValSet(i) = r<br />
		gValSet(i) = g<br />
		bValSet(i) = b<br />
		aValSet(i) = a<br />
		hValSet(i) = hu<br />
		sValSet(i) = s<br />
		uValSet(i) = u<br />
	Next<br />
	Set RhPicture = Nothing<br />
	&#8216; image outputs (0)red(1)green(2)blue(3)alpha(4)hue(5)saturation(6)luminance<br />
	arrImageSample = array(rValSet,gValSet,bValSet,aValSet,hValSet,sValSet,uValSet)<br />
End Function<br />
Function arrayValue(cols,rows,value)<br />
	arrayValue = Null<br />
	Dim i,j<br />
	ReDim val(rows), arrVal(cols)<br />
	For i = 0 To cols Step 1<br />
		For j = 0 To rows Step 1<br />
			val(j) = value<br />
		Next<br />
		arrVal(i) = val<br />
	Next<br />
	arrayValue = arrVal<br />
End Function</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thewhiteball.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thewhiteball.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thewhiteball.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thewhiteball.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thewhiteball.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thewhiteball.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thewhiteball.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thewhiteball.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thewhiteball.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thewhiteball.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thewhiteball.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thewhiteball.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thewhiteball.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thewhiteball.wordpress.com/291/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=291&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thewhiteball.wordpress.com/2010/03/05/image-reader-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5069a043eaef591b91d4b5cf82c83b39?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonbailey</media:title>
		</media:content>
	</item>
		<item>
		<title>surfaces.expand.01</title>
		<link>http://thewhiteball.wordpress.com/2010/03/05/surfaces-expand-01/</link>
		<comments>http://thewhiteball.wordpress.com/2010/03/05/surfaces-expand-01/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 16:29:52 +0000</pubDate>
		<dc:creator>jonbailey</dc:creator>
				<category><![CDATA[surfaces]]></category>

		<guid isPermaLink="false">http://thewhiteball.wordpress.com/?p=289</guid>
		<description><![CDATA[Option Explicit &#8216;Script written by &#8216;Script copyrighted by &#8216;Script version Monday, May 26, 2008 1:43:26 PM Call Main() Sub Main() Dim surf surf = Rhino.GetObject(&#8220;select surface&#8221;,8) If isNull(surf) Then Exit Sub Call reparameterize(surf) Dim arrItems, arrValues, arrResults arrItems = array(&#8220;Cell_Colums&#8221;,&#8221;Cell_Rows&#8221;,&#8221;Offset&#8221;,&#8221;Scale_btw_0-1&#8243;,&#8221;tabHeight&#8221;,&#8221;cutTemplate&#8221;,&#8221;surfaces&#8221;,&#8221;imageScale&#8221;,&#8221;imageOculi&#8221;) arrValues= array(10,10,1,0.4,1,True,True,False,True) arrResults = Rhino.PropertyListBox (arrItems, arrValues ,,&#8221;Volume Parameters&#8221;) Dim scale, oculi If CBool(arrResults(7)) = [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=289&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Option Explicit<br />
&#8216;Script written by<br />
&#8216;Script copyrighted by<br />
&#8216;Script version Monday, May 26, 2008 1:43:26 PM</p>
<p>Call Main()<br />
Sub Main()<br />
	Dim surf<br />
	surf = Rhino.GetObject(&#8220;select surface&#8221;,8)<br />
	If isNull(surf) Then Exit Sub<br />
	Call reparameterize(surf)</p>
<p>	Dim arrItems, arrValues, arrResults<br />
	arrItems = array(&#8220;Cell_Colums&#8221;,&#8221;Cell_Rows&#8221;,&#8221;Offset&#8221;,&#8221;Scale_btw_0-1&#8243;,&#8221;tabHeight&#8221;,&#8221;cutTemplate&#8221;,&#8221;surfaces&#8221;,&#8221;imageScale&#8221;,&#8221;imageOculi&#8221;)<br />
	arrValues= array(10,10,1,0.4,1,True,True,False,True)<br />
	arrResults = Rhino.PropertyListBox (arrItems, arrValues ,,&#8221;Volume Parameters&#8221;)<br />
	Dim scale, oculi</p>
<p>	If CBool(arrResults(7)) = True Then<br />
		scale = arrImageSample(CInt(arrResults(0))*2+1, CInt(arrResults(1))*2+1)(6)<br />
	Else<br />
		scale = arrayValue(CInt(arrResults(0))*2+1, CInt(arrResults(1))*2+1,CDbl(arrResults(2)))<br />
	End If<br />
	If CBool(arrResults(8)) = True Then<br />
		oculi = arrImageSample(CInt(arrResults(0))*2, CInt(arrResults(1))*2)(6)<br />
	Else<br />
		oculi = arrayValue(CInt(arrResults(0))*2, CInt(arrResults(1))*2,CDbl(arrResults(3)))<br />
	End If</p>
<p>	Dim tri, cut(2)<br />
	Call Rhino.EnableRedraw(False)<br />
	tri = TriangulateSurface(surf,CInt(arrResults(0))*2,CInt(arrResults(1))*2,CDbl(arrResults(2)),scale)<br />
	If CBool(arrResults(6)) = True Then<br />
		Call SurfaceMe(tri(0),oculi,CDbl(arrResults(3)),&#8221;surfaces_out&#8221;)<br />
		Call SurfaceMe(tri(1),oculi,CDbl(arrResults(3)),&#8221;surfaces_in&#8221;)<br />
		Call SurfaceMe(tri(2),oculi,CDbl(arrResults(3)),&#8221;surfaces_center&#8221;)<br />
	End If</p>
<p>	If CBool(arrResults(5)) = True Then<br />
		cut(0) = UnfoldMe(tri(0),0,CDbl(arrResults(4)),oculi,CDbl(arrResults(3)),&#8221;A&#8221;)<br />
		cut(1) = UnfoldMe(tri(1),cut(0)+5,CDbl(arrResults(4)),oculi,CDbl(arrResults(3)),&#8221;B&#8221;)<br />
		cut(2) = UnfoldMe(tri(2),cut(1)+5,CDbl(arrResults(4)),oculi,CDbl(arrResults(3)),&#8221;C&#8221;)<br />
	End If</p>
<p>	Call Rhino.EnableRedraw(True)</p>
<p>End Sub<br />
Function TriangulateSurface(surface,cols,rows,offset,arrOffset)<br />
	TriangulateSurface = Null<br />
	Dim i,j<br />
	Dim uDom,vDom,uStep,vStep<br />
	uDom = Rhino.SurfaceDomain(surface,0)(1): uStep = uDom/cols<br />
	vDom = Rhino.SurfaceDomain(surface,1)(1): VStep = vDom/rows</p>
<p>	ReDim uv(rows),pt(rows),ptA(rows),ptB(rows),uvSet(cols),ptSet(cols),ptSetA(cols),ptSetB(cols)<br />
	&#8216;plot point grid<br />
	For i = 0 To cols Step 1<br />
		For j = 0 To rows Step 1<br />
			uv(j) = array(i*uStep,j*vStep)<br />
			ptB(j) = Rhino.EvaluateSurface(surface,uv(j))<br />
			If arrOffset(i)(j)  0.9 Then<br />
				If i Mod(2) Then<br />
					If j Mod(2) Then<br />
						srfA(j) = Rhino.AddSrfPt(array(ptSet(i)(j),ptSet(i)(j+1),ptSet(i+1)(j)))<br />
						srfB(j) = Rhino.AddSrfPt(array(ptSet(i+1)(j+1),ptSet(i)(j+1),ptSet(i+1)(j)))<br />
					Else<br />
						srfA(j) = Rhino.AddSrfPt(array(ptSet(i+1)(j),ptSet(i+1)(j+1),ptSet(i)(j)))<br />
						srfB(j) = Rhino.AddSrfPt(array(ptSet(i)(j+1),ptSet(i+1)(j+1),ptSet(i)(j)))<br />
					End If<br />
				Else<br />
					If j Mod(2) Then<br />
						srfA(j) = Rhino.AddSrfPt(array(ptSet(i+1)(j),ptSet(i+1)(j+1),ptSet(i)(j)))<br />
						srfB(j) = Rhino.AddSrfPt(array(ptSet(i)(j+1),ptSet(i+1)(j+1),ptSet(i)(j)))<br />
					Else<br />
						srfA(j) = Rhino.AddSrfPt(array(ptSet(i)(j),ptSet(i)(j+1),ptSet(i+1)(j)))<br />
						srfB(j) = Rhino.AddSrfPt(array(ptSet(i+1)(j+1),ptSet(i)(j+1),ptSet(i+1)(j)))<br />
					End If<br />
				End If<br />
				Call Rhino.ObjectLayer(srfA(j),objLayer)<br />
				Call Rhino.ObjectLayer(srfB(j),objLayer)<br />
			Else<br />
				If scale(i)(j)  ptC(j-1)(1) Then<br />
					angX(j) = -Rhino.Angle2(array(ptB(j-1),Rhino.PointAdd(ptB(j-1),wrldCS(1))),array(ptB(j-1),ptC(j-1)))(0)<br />
				Else<br />
					angX(j) = Rhino.Angle2(array(ptB(j-1),Rhino.PointAdd(ptB(j-1),wrldCS(1))),array(ptB(j-1),ptC(j-1)))(0)<br />
				End If<br />
			End If<br />
			If i Mod(2) Then<br />
				r = j+1<br />
			Else<br />
				r = j<br />
			End If<br />
			If r Mod(2) Then<br />
				ptA(j) = Rhino.PointAdd(oriPt(j),Rhino.VectorScale(Rhino.VectorRotate(wrldCS(1),angX(j),wrldCS(3)),d(i)(0)(j)))<br />
				ptB(j) = Rhino.PointAdd(oriPt(j),Rhino.VectorScale(Rhino.VectorRotate(wrldCS(1),angX(j)+a(i)(1)(j)+a(i)(2)(j),wrldCS(3)),d(i)(2)(j)))<br />
				ptC(j) = Rhino.PointAdd(ptA(j),Rhino.VectorScale(Rhino.VectorRotate(wrldCS(1),angX(j)+180-a(i)(0)(j),wrldCS(3)),d(i)(1)(j)))<br />
			Else<br />
				ptA(j) = Rhino.PointAdd(oriPt(j),Rhino.VectorScale(Rhino.VectorRotate(wrldCS(1),angX(j),wrldCS(3)),d(i)(0)(j)))<br />
				ptB(j) = Rhino.PointAdd(oriPt(j),Rhino.VectorScale(Rhino.VectorRotate(wrldCS(1),angX(j)+a(i)(0)(j),wrldCS(3)),d(i)(1)(j)))<br />
				ptC(j) = Rhino.PointAdd(ptA(j),Rhino.VectorScale(Rhino.VectorRotate(wrldCS(1),angX(j)+180-a(i)(1)(j)-a(i)(2)(j),wrldCS(3)),d(i)(2)(j)))<br />
			End If<br />
			minX(j) = Rhino.Min(array(ptA(j)(0),ptB(j)(0),ptC(j)(0)))<br />
			maxX(j) = Rhino.Max(array(ptA(j)(0),ptB(j)(0),ptC(j)(0)))<br />
			r=r+1<br />
		Next<br />
		mn(i) = Rhino.Min(minX)<br />
		If mn(i) &gt; 0 Then<br />
			mn(i) = 0<br />
		Else<br />
			mn(i) = abs(mn(i))<br />
		End If<br />
		mx(i) = abs(Rhino.Max(maxX))<br />
		pts(i) = array(oriPt,ptA,ptB,ptC)<br />
	Next<br />
	Dim ptX, k,u<br />
	Dim points(3),yVal(3),dblY<br />
	ReDim yMax(rows-1), yM(cols-1)<br />
	Dim edge(),edgeA(), edgeB(), span()<br />
	ReDim edge(cols-1),edgeA(rows-1), edgeB(rows-1), span(rows*2)<br />
	Dim cPt(1), oculi(1)<br />
	r=0<br />
	For i = 0 To cols-1 Step 1<br />
		k=0<br />
		If i &gt; 0 Then<br />
			r = r+mx(i-1)+mn(i)+tabHeight*2<br />
		End If<br />
		For j = 0 To rows-1 Step 1<br />
			ptX	= array(r,0,0)<br />
			For u = 0 To 3 Step 1<br />
				points(u) = Rhino.PointAdd(ptX,pts(i)(u)(j))<br />
			Next<br />
			If j Mod(2) Then<br />
				span(k) = Rhino.AddLine(points(0),points(3))<br />
				Call Rhino.ObjectLayer(span(k),&#8221;scores&#8221;)<br />
				k=k+1<br />
			Else<br />
				span(k) = Rhino.AddLine(points(1),points(2))<br />
				Call Rhino.ObjectLayer(span(k),&#8221;scores&#8221;)<br />
				k=k+1<br />
			End If<br />
			If j = 0 Then<br />
				span(k) = Rhino.AddLine(points(0),points(1))<br />
				Call Rhino.ObjectLayer(span(k),&#8221;cuts&#8221;)<br />
				k=k+1<br />
			End If<br />
			If j = rows-1 Then<br />
				span(k) = Rhino.AddLine(points(2),points(3))<br />
				Call Rhino.ObjectLayer(span(k),&#8221;cuts&#8221;)<br />
				k=k+1<br />
			Else<br />
				span(k) = Rhino.AddLine(points(2),points(3))<br />
				Call Rhino.ObjectLayer(span(k),&#8221;scores&#8221;)<br />
				k=k+1<br />
			End If</p>
<p>			If scale(i)(j) &lt;= .9 Then<br />
				If scale(i)(j) w Then<br />
				x = w<br />
			End If</p>
<p>			If y&gt;h Then<br />
				y = h<br />
			End If</p>
<p>			r(j) = RhPicture.Red(x,y)/255<br />
			g(j) = RhPicture.Green(x,y)/255<br />
			b(j) = RhPicture.Blue(x,y)/255<br />
			a(j) = RhPicture.Alpha(x,y)/255<br />
			hu(j) = RhPicture.Hue(x,y)/360<br />
			s(j) = RhPicture.Saturation(x,y)<br />
			u(j) = RhPicture.Luminance(x,y)</p>
<p>		Next<br />
		rValSet(i) = r<br />
		gValSet(i) = g<br />
		bValSet(i) = b<br />
		aValSet(i) = a<br />
		hValSet(i) = hu<br />
		sValSet(i) = s<br />
		uValSet(i) = u<br />
	Next<br />
	Set RhPicture = Nothing<br />
	&#8216; image outputs (0)red(1)green(2)blue(3)alpha(4)hue(5)saturation(6)luminance<br />
	arrImageSample = array(rValSet,gValSet,bValSet,aValSet,hValSet,sValSet,uValSet)<br />
End Function<br />
Function arrayValue(cols,rows,value)<br />
	arrayValue = Null<br />
	Dim i,j<br />
	ReDim val(rows), arrVal(cols)<br />
	For i = 0 To cols Step 1<br />
		For j = 0 To rows Step 1<br />
			val(j) = value<br />
		Next<br />
		arrVal(i) = val<br />
	Next<br />
	arrayValue = arrVal<br />
End Function</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thewhiteball.wordpress.com/289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thewhiteball.wordpress.com/289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thewhiteball.wordpress.com/289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thewhiteball.wordpress.com/289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thewhiteball.wordpress.com/289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thewhiteball.wordpress.com/289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thewhiteball.wordpress.com/289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thewhiteball.wordpress.com/289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thewhiteball.wordpress.com/289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thewhiteball.wordpress.com/289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thewhiteball.wordpress.com/289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thewhiteball.wordpress.com/289/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thewhiteball.wordpress.com/289/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thewhiteball.wordpress.com/289/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=289&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thewhiteball.wordpress.com/2010/03/05/surfaces-expand-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5069a043eaef591b91d4b5cf82c83b39?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonbailey</media:title>
		</media:content>
	</item>
		<item>
		<title>misc.documentation</title>
		<link>http://thewhiteball.wordpress.com/2010/03/05/misc-documentation/</link>
		<comments>http://thewhiteball.wordpress.com/2010/03/05/misc-documentation/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 16:27:41 +0000</pubDate>
		<dc:creator>jonbailey</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://thewhiteball.wordpress.com/2010/03/05/misc-documentation/</guid>
		<description><![CDATA[Option Explicit &#8216;Script written by &#8216;Script copyrighted by &#8216;Script version Sunday, September 28, 2008 12:18:06 AM Call Main() Sub Main() Dim objects, folder, name, arrResults, arrDrawings objects = Rhino.GetObjects(&#8220;Select Objects&#8221;) If isNull(objects) Then Exit Sub arrDrawings = Rhino.GetBoolean(&#8220;DrawingTypes&#8221;, array(&#8220;orthoElev&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;,&#8221;auxElev&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;,&#8221;auxTop&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;,&#8221;auxBottom&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;,&#8221;isoTop&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;,&#8221;isoBottom&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;),array(True,False,False,False,False,True)) arrResults = Rhino.GetBoolean(&#8220;Output Options&#8221;, array(&#8220;drawings&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;,&#8221;renders&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;),array(True,False)) If arrResults(1) = True Then name=Rhino.GetString(&#8220;Enter prefix for jpeg file naming&#8221;) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=288&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Option Explicit<br />
&#8216;Script written by<br />
&#8216;Script copyrighted by<br />
&#8216;Script version Sunday, September 28, 2008 12:18:06 AM</p>
<p>Call Main()<br />
Sub Main()<br />
	Dim objects, folder, name, arrResults, arrDrawings<br />
	objects = Rhino.GetObjects(&#8220;Select Objects&#8221;)<br />
	If isNull(objects) Then Exit Sub</p>
<p>	arrDrawings = Rhino.GetBoolean(&#8220;DrawingTypes&#8221;, array(&#8220;orthoElev&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;,&#8221;auxElev&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;,&#8221;auxTop&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;,&#8221;auxBottom&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;,&#8221;isoTop&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;,&#8221;isoBottom&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;),array(True,False,False,False,False,True))</p>
<p>	arrResults = Rhino.GetBoolean(&#8220;Output Options&#8221;, array(&#8220;drawings&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;,&#8221;renders&#8221;,&#8221;no&#8221;,&#8221;yes&#8221;),array(True,False))</p>
<p>	If arrResults(1) = True Then<br />
		name=Rhino.GetString(&#8220;Enter prefix for jpeg file naming&#8221;)<br />
		folder = Rhino.BrowseForFolder(&#8220;testFolder&#8221;,&#8221;SelectFolder&#8221;,&#8221;RenderFolder&#8221;)<br />
		If IsNull(folder) Then Exit Sub<br />
	End If</p>
<p>	Call multiIso(objects,array(0,0,0),folder,name,arrResults, arrDrawings)<br />
End Sub<br />
Function multiIso(arrObjects, origin,folder,name, arrBool, arrMode)<br />
	multiIso = Null</p>
<p>	Dim strView<br />
	Dim k: k=0<br />
	Dim count<br />
	Dim arrPoint(),arrTitle()<br />
	ReDim arrPoint(k),arrTitle(k)<br />
	If arrMode(0) = True Then<br />
		ReDim Preserve arrPoint(k+5),arrTitle(k+5),arrSwitch(k+5)<br />
		&#8216;plans and elevations<br />
		arrTitle(k) = &#8220;Top&#8221;<br />
		arrPoint(k) = Array(0,0,1)<br />
		arrTitle(k+1) = &#8220;Bottom&#8221;<br />
		arrPoint(k+1) = Array(0,0,-1)<br />
		arrTitle(k+2) = &#8220;Front&#8221;<br />
		arrPoint(k+2) = Array(0,-1,0)<br />
		arrTitle(k+3) = &#8220;Back&#8221;<br />
		arrPoint(k+3) = Array( 0,1,0)<br />
		arrTitle(k+4) = &#8220;Left&#8221;<br />
		arrPoint(k+4) = Array(-1,0,0)<br />
		arrTitle(k+5) = &#8220;Right&#8221;<br />
		arrPoint(k+5) = Array(1,0,0)<br />
		k=k+5<br />
	End If<br />
	If arrMode(1) = True Then<br />
		ReDim Preserve arrPoint(k+4),arrTitle(k+4),arrSwitch(k+4)<br />
		&#8216;auxilary orthographic elevation<br />
		arrSwitch(k) = True<br />
		arrTitle(k) = &#8220;FrontLeft&#8221;<br />
		arrPoint(k) = Array(-1,-1,0)<br />
		arrTitle(k+1) = &#8220;FrontRight&#8221;<br />
		arrPoint(k+1) = Array( 1,-1,0)<br />
		arrTitle(k+2) = &#8220;BackLeft&#8221;<br />
		arrPoint(k+2) = Array(-1, 1,0)<br />
		arrTitle(k+3) = &#8220;BackRight&#8221;<br />
		arrPoint(k+3) = Array( 1, 1,0)<br />
		k=k+4<br />
	End If</p>
<p>	If arrMode(2) = True Then<br />
		ReDim Preserve arrPoint(k+4),arrTitle(k+4),arrSwitch(k+4)<br />
		&#8216;auxilary orthographic top<br />
		arrSwitch(k) = True<br />
		arrTitle(k) = &#8220;TopFront&#8221;<br />
		arrPoint(k) = Array(0,-1,1)<br />
		arrTitle(k+1) = &#8220;TopBack&#8221;<br />
		arrPoint(k+1) = Array( 0,1,1)<br />
		arrTitle(k+2) = &#8220;TopLeft&#8221;<br />
		arrPoint(k+2) = Array(-1,0,1)<br />
		arrTitle(k+3) = &#8220;TopRight&#8221;<br />
		arrPoint(k+3) = Array( 1,0,1)<br />
		k=k+4<br />
	End If<br />
	If arrMode(3) = True Then<br />
		ReDim Preserve arrPoint(k+4),arrTitle(k+4),arrSwitch(k+4)<br />
		&#8216;auxilary orthographic bottom<br />
		arrSwitch(k) = True<br />
		arrTitle(k) = &#8220;BottomFront&#8221;<br />
		arrPoint(k) = Array(0,-1,-1)<br />
		arrTitle(k+1) = &#8220;BottomBack&#8221;<br />
		arrPoint(k+1) = Array( 0,1,-1)<br />
		arrTitle(k+2) = &#8220;BottomLeft&#8221;<br />
		arrPoint(k+2) = Array(-1,0,-1)<br />
		arrTitle(k+3) = &#8220;BottomRight&#8221;<br />
		arrPoint(k+3) = Array( 1,0,-1)<br />
		k=k+4<br />
	End If<br />
	If arrMode(4) = True Then<br />
		ReDim Preserve arrPoint(k+4),arrTitle(k+4),arrSwitch(k+4)<br />
		&#8216;axonometric isometric top<br />
		arrSwitch(k) = True<br />
		arrTitle(k) = &#8220;TopFrontLeft&#8221;<br />
		arrPoint(k) = Array(-1,-1,1)<br />
		arrTitle(k+1) = &#8220;TopFrontRight&#8221;<br />
		arrPoint(k+1) = Array( 1,-1,1)<br />
		arrTitle(k+2) = &#8220;TopBackLeft&#8221;<br />
		arrPoint(k+2) = Array(-1, 1,1)<br />
		arrTitle(k+3) = &#8220;TopBackRight&#8221;<br />
		arrPoint(k+3) = Array( 1, 1,1)<br />
		k=k+4<br />
	End If<br />
	If arrMode(5) = True Then<br />
		ReDim Preserve arrPoint(k+4),arrTitle(k+4),arrSwitch(k+4)<br />
		&#8216;axonometric isometric bottom<br />
		arrSwitch(k) = True<br />
		arrTitle(k) = &#8220;BottomFrontLeft&#8221;<br />
		arrPoint(k) = Array(-1,-1,-1)<br />
		arrTitle(k+1) = &#8220;BottomFrontRight&#8221;<br />
		arrPoint(k+1) = Array( 1,-1,-1)<br />
		arrTitle(k+2) = &#8220;BottomBackLeft&#8221;<br />
		arrPoint(k+2) = Array(-1, 1,-1)<br />
		arrTitle(k+3) = &#8220;BottomBackRight&#8221;<br />
		arrPoint(k+3) = Array( 1, 1,-1)<br />
		k=k+4<br />
	End If</p>
<p>	count = k-1<br />
	Dim arrOrigin, vect<br />
	arrOrigin = Array(0,0,0)</p>
<p>	Call Rhino.Command(&#8220;-_SetView c t &#8220;, False)<br />
	strView = Rhino.CurrentView()<br />
	Dim j,m,n,u<br />
	u=0<br />
	Dim obox: obox = Rhino.BoundingBox(arrObjects)<br />
	Dim i,r,s,t<br />
	Dim arrLabel<br />
	Dim invSel<br />
	Dim  arrDrawings(),bbox(), dblLength(), dblHeight(), dblDist<br />
	ReDim arrDrawings(count),bbox(count), dblLength(count), dblHeight(count)<br />
	Call Rhino.EnableRedraw (False)</p>
<p>	If arrBool(0) = True Then<br />
		If j = 0 And m = 0 And n = 0 Then<br />
			Call Rhino.SelectObjects(arrObjects)<br />
			Call Rhino.Command(&#8220;-_Make2d &#8221; ,False)<br />
			Call Rhino.DeleteObjects(Rhino.SelectedObjects())<br />
		Else<br />
			Call Rhino.Command(&#8220;-_SetView c t &#8220;, False)<br />
		End If</p>
<p>		Call Rhino.ViewProjection(strView,1)<br />
		For i = 0 To count Step 1<br />
			Call Rhino.ViewCameraTarget (strView, arrPoint(i), arrOrigin)<br />
			Call Rhino.UnselectAllObjects()<br />
			Call Rhino.SelectObjects(arrObjects)<br />
			Call Rhino.ZoomSelected()<br />
			Call Rhino.Command(&#8220;-_Make2d d c _Enter&#8221; ,False)<br />
			arrDrawings(i) = Rhino.SelectedObjects()<br />
			bbox(i) = Rhino.BoundingBox(arrDrawings(i))<br />
			dblLength(i) = Rhino.Distance(bbox(i)(0),bbox(i)(1))<br />
			dblHeight(i) = Rhino.Distance(bbox(i)(0),bbox(i)(3))<br />
			Call Rhino.UnselectAllObjects()</p>
<p>		Next<br />
		r = 0<br />
		s = 0<br />
		t = 0<br />
		For i = 0 To count Step 1<br />
			ReDim Preserve arrHeight(s)<br />
			arrHeight(s) = dblHeight(i)<br />
			s=s+1<br />
			If arrSwitch(i) = True Then<br />
				t = t+Rhino.max(arrHeight)+3<br />
				ReDim arrHeight(0)<br />
				s = 0<br />
				r = 0<br />
			End If<br />
			If r &gt; 0 Then<br />
				r = dblLength(i)*0.5+dblLength(i-1)*0.5+r<br />
			End If<br />
			Call Rhino.MoveObjects(arrDrawings(i),origin,array(r,u+t,0))<br />
			Call Rhino.AddText(CStr(arrTitle(i)),array(r,u+t-dblHeight(i)*0.2,0),dblHeight(i)*0.1)<br />
			r=r+3<br />
			If i = count Then<br />
				t = t+dblHeight(i)*1.5<br />
			End If<br />
		Next<br />
	End If</p>
<p>	If arrBool(1) = True Then<br />
		If isArray(arrObjects) Then<br />
			Call Rhino.SelectObjects(arrObjects)<br />
		Else<br />
			Call Rhino.SelectObject(arrObjects)<br />
		End If<br />
		invSel = Rhino.InvertSelectedObjects()<br />
		If isNull(invSel) Then<br />
		Else<br />
			Call Rhino.HideObjects(invSel)<br />
		End If<br />
		Call Rhino.UnselectAllObjects()</p>
<p>		Call Rhino.Command(&#8220;-_SetView c t &#8220;, False)<br />
		For i = 0 To count Step 1<br />
			Call Rhino.ViewCameraTarget (strView, arrPoint(i), arrOrigin)<br />
			Call Rhino.SelectObjects(arrObjects)<br />
			Call Rhino.ZoomSelected()<br />
			Call Rhino.Command(&#8220;_-Render&#8221;,False)<br />
			Call Rhino.Command(&#8220;_-SaveRenderWindowAs &#8221; &amp; GetRenderFileName(name,folder, CStr(arrTitle(i)), &#8220;png&#8221;),False)<br />
			Call Rhino.Command(&#8220;_-CloseRenderWindow&#8221;,False)<br />
			Call Rhino.UnselectAllObjects()<br />
		Next<br />
	End If<br />
	Call Rhino.EnableRedraw (True)<br />
	Call Rhino.Command(&#8220;-_SetView c t&#8221;, False)<br />
	Call Rhino.Command(&#8220;-_Show _Enter&#8221;,False)<br />
	Call Rhino.ZoomExtents()<br />
End Function<br />
Function GetRenderFileName(name,folder, view, ext)<br />
	Dim doc, file, temp<br />
	doc = Rhino.DocumentName<br />
	temp = &#8220;_&#8221;&amp; name &amp;&#8221;_&#8221;&amp; view &amp; &#8220;.&#8221; &amp; ext<br />
	file = LCase(Replace(doc, &#8220;.3dm&#8221;, temp, 1, -1, 1))<br />
	GetRenderFileName = Chr(34) &amp; folder &amp; file &amp; Chr(34)<br />
End Function</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thewhiteball.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thewhiteball.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thewhiteball.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thewhiteball.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thewhiteball.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thewhiteball.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thewhiteball.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thewhiteball.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thewhiteball.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thewhiteball.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thewhiteball.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thewhiteball.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thewhiteball.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thewhiteball.wordpress.com/288/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=288&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thewhiteball.wordpress.com/2010/03/05/misc-documentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5069a043eaef591b91d4b5cf82c83b39?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonbailey</media:title>
		</media:content>
	</item>
		<item>
		<title>curves.blend.01</title>
		<link>http://thewhiteball.wordpress.com/2010/03/05/curves-blend-01/</link>
		<comments>http://thewhiteball.wordpress.com/2010/03/05/curves-blend-01/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 16:26:01 +0000</pubDate>
		<dc:creator>jonbailey</dc:creator>
				<category><![CDATA[curves]]></category>

		<guid isPermaLink="false">http://thewhiteball.wordpress.com/?p=285</guid>
		<description><![CDATA[Option Explicit &#8216;Script written by &#8216;Script copyrighted by &#8216;Script version Sunday, May 03, 2009 1:54:38 PM Call Main() Sub Main() Dim Curves, SM, DN Curves= Rhino.GetObjects(&#8220;Select Curves&#8221;,4) If isNull(Curves) Then Exit Sub SM = Rhino.GetBoolean(&#8220;Blend Type&#8221;,array(&#8220;Type&#8221;,&#8221;Straight&#8221;,&#8221;Smooth&#8221;),array(False)) If isNull(SM) Then Exit Sub DN = Rhino.GetReal(&#8220;Blend Density&#8221;,5,1) If isNull(SM) Then Exit Sub Call Rhino.EnableRedraw(False) If uBound(Curves) &#62; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=285&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://thewhiteball.files.wordpress.com/2010/03/blend.jpg?w=426&#038;h=251" alt="" title="blend" width="426" height="251" class="aligncenter size-full wp-image-286" /></p>
<p>
Option Explicit<br />
&#8216;Script written by<br />
&#8216;Script copyrighted by<br />
&#8216;Script version Sunday, May 03, 2009 1:54:38 PM</p>
<p>Call Main()<br />
Sub Main()<br />
	Dim Curves, SM, DN</p>
<p>	Curves= Rhino.GetObjects(&#8220;Select Curves&#8221;,4)<br />
	If isNull(Curves) Then Exit Sub</p>
<p>	SM = Rhino.GetBoolean(&#8220;Blend Type&#8221;,array(&#8220;Type&#8221;,&#8221;Straight&#8221;,&#8221;Smooth&#8221;),array(False))<br />
	If isNull(SM) Then Exit Sub</p>
<p>	DN = Rhino.GetReal(&#8220;Blend Density&#8221;,5,1)<br />
	If isNull(SM) Then Exit Sub</p>
<p>	Call Rhino.EnableRedraw(False)<br />
	If uBound(Curves) &gt; 0 Then<br />
		Call BlendCurves(Curves,SM(0),DN)<br />
	Else<br />
		Call Rhino.Print(&#8220;2 or more curves required&#8221;)<br />
	End If</p>
<p>	Call Rhino.EnableRedraw(True)<br />
End Sub<br />
Function BlendCurves(arrCurves,blnSmooth,dblDensity)<br />
	BlendCurves = Null<br />
	Dim i,j,p<br />
	Dim count, max, dMax<br />
	Dim arrptCount(), arrCrvDeg(), arrPointSet(),arrPts(), arrCrvDom(),arrCrvStep(),arrBlndCrvPt()<br />
	Dim arrBlendCurve(), arrCtrlCrv()</p>
<p>	Dim dblSmoothness<br />
	If blnSmooth = False Then<br />
		dblSmoothness = 1<br />
	Else<br />
		dblSmoothness = 3<br />
	End If</p>
<p>	count = Ubound(arrCurves)<br />
	ReDim arrptCount(count),  arrCrvDeg(count), arrCrvDom(count), arrPointSet(count), arrPts(count)</p>
<p>	&#8216;get control point count<br />
	For i = 0 To count Step 1<br />
		arrptCount(i) = Rhino.CurvePointCount(arrCurves(i))<br />
		arrCrvDeg(i) = Rhino.CurveDegree(arrCurves(i))<br />
	Next<br />
	&#8216;determine max point count<br />
	max = Rhino.Max(arrptCount)<br />
	dMax= Rhino.Max(arrCrvDeg)</p>
<p>	&#8216;rebuild curves with max control point count<br />
	For i = 0 To count Step 1<br />
		Call Rhino.RebuildCurve(arrCurves(i),dMax, max)<br />
		arrPointSet(i) = Rhino.CurvePoints(arrCurves(i))<br />
	Next</p>
<p>	max = max-1<br />
	ReDim arrCtrlCrv(max), arrCrvDom(max), arrCrvStep(max), arrBlndCrvPt(max)<br />
	&#8216;create control curves<br />
	For i = 0 To max Step 1<br />
		For j = 0 To count Step 1<br />
			arrPts(j) = arrPointSet(j)(i)<br />
		Next<br />
		arrCtrlCrv(i)= Rhino.AddInterpCurve(arrPts,dblSmoothness)<br />
		arrCrvDom(i) = Rhino.CurveDomain(arrCtrlCrv(i))<br />
		arrCrvStep(i)= (arrCrvDom(i)(1)-arrCrvDom(i)(0))/(count*dblDensity)<br />
	Next<br />
	&#8216;create blended curves<br />
	ReDim arrBlendCurve(count*dblDensity)<br />
	For i = 0 To count*dblDensity Step 1<br />
		For j = 0 To max Step 1<br />
			arrBlndCrvPt(j) = Rhino.EvaluateCurve(arrCtrlCrv(j),arrCrvDom(j)(0)+i*arrCrvStep(j))<br />
		Next<br />
		arrBlendCurve(i) = Rhino.addcurve(arrBlndCrvPt,dMax)<br />
	Next<br />
	&#8216;delete control curves<br />
	Call Rhino.DeleteObjects(arrCtrlCrv)<br />
	Call Rhino.DeleteObjects(arrCurves)</p>
<p>	BlendCurves = array(arrBlendCurve,arrCtrlCrv)<br />
End Function</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thewhiteball.wordpress.com/285/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thewhiteball.wordpress.com/285/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thewhiteball.wordpress.com/285/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thewhiteball.wordpress.com/285/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thewhiteball.wordpress.com/285/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thewhiteball.wordpress.com/285/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thewhiteball.wordpress.com/285/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thewhiteball.wordpress.com/285/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thewhiteball.wordpress.com/285/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thewhiteball.wordpress.com/285/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thewhiteball.wordpress.com/285/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thewhiteball.wordpress.com/285/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thewhiteball.wordpress.com/285/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thewhiteball.wordpress.com/285/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=285&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thewhiteball.wordpress.com/2010/03/05/curves-blend-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5069a043eaef591b91d4b5cf82c83b39?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonbailey</media:title>
		</media:content>

		<media:content url="http://thewhiteball.files.wordpress.com/2010/03/blend.jpg" medium="image">
			<media:title type="html">blend</media:title>
		</media:content>
	</item>
		<item>
		<title>curves.bezier.01</title>
		<link>http://thewhiteball.wordpress.com/2010/03/05/curves-bezier-01/</link>
		<comments>http://thewhiteball.wordpress.com/2010/03/05/curves-bezier-01/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 16:19:58 +0000</pubDate>
		<dc:creator>jonbailey</dc:creator>
				<category><![CDATA[curves]]></category>

		<guid isPermaLink="false">http://thewhiteball.wordpress.com/?p=281</guid>
		<description><![CDATA[Option Explicit &#8216;Script written by &#8216;Script copyrighted by &#8216;Script version Tuesday, July 21, 2009 7:50:34 PM Call Main() Sub Main() Dim arrPoints,intSamples Do arrPoints = Rhino.GetObjects(&#8220;Select at Least 3 Points&#8221;,1,,True) If isNull(arrPoints) Then Exit Sub If uBound(arrPoints) &#62; 1 Then Exit Do End If Loop intSamples = Rhino.GetReal(&#8220;Samples&#8221;,10,1) If isNull(intSamples) Then Exit Sub Dim i, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=281&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://thewhiteball.files.wordpress.com/2010/03/bezier.jpg?w=426&#038;h=251" alt="" title="bezier" width="426" height="251" class="aligncenter size-full wp-image-283" /></p>
<p>
Option Explicit<br />
&#8216;Script written by<br />
&#8216;Script copyrighted by<br />
&#8216;Script version Tuesday, July 21, 2009 7:50:34 PM</p>
<p>Call Main()<br />
Sub Main()<br />
	Dim arrPoints,intSamples<br />
	Do<br />
		arrPoints = Rhino.GetObjects(&#8220;Select at Least 3 Points&#8221;,1,,True)<br />
		If isNull(arrPoints) Then Exit Sub</p>
<p>		If uBound(arrPoints) &gt; 1 Then<br />
			Exit Do<br />
		End If<br />
	Loop<br />
	intSamples = Rhino.GetReal(&#8220;Samples&#8221;,10,1)<br />
	If isNull(intSamples) Then Exit Sub</p>
<p>	Dim i, arrPts(),arrOutput<br />
	ReDim arrPts(uBound(arrPoints))<br />
	For i = 0 To uBound(arrPoints) Step 1<br />
		arrPts(i) = Rhino.PointCoordinates(arrPoints(i))<br />
	Next</p>
<p>	Call Rhino.EnableRedraw(False)<br />
	arrOutput = bezierConstructor(arrPts,intSamples)<br />
	Call Rhino.AddInterpCurve(arrOutput(0))<br />
	Call Rhino.ObjectColor(arrOutput(1),RGB(255,0,0))<br />
	Call Rhino.EnableRedraw(True)</p>
<p>End Sub<br />
Function bezierConstructor(arrPts,intSamples)<br />
	bezierConstructor = Null<br />
	Dim i, j, k, r, s, t<br />
	Dim arrOutput(), arrOutputs(), arrStore, arrTemp, arrLines(),arrSet()<br />
	r = 0<br />
	k=1<br />
	ReDim arrOutput(0),arrOutputs(0)<br />
	arrOutput(0) = arrPts(0)</p>
<p>	For i = 1 To uBound(arrPts) Step 1<br />
		ReDim Preserve arrLines(r),arrOutputs(r)<br />
		arrLines(r) = Rhino.AddLine(arrPts(i-1),arrPts(i))<br />
		arrOutputs(r) = arrLines(r)<br />
		r=r+1<br />
	Next<br />
	t=r<br />
	arrStore = arrLines<br />
	For i = 1 To intSamples-1 Step 1<br />
		r=0<br />
		s=0<br />
		arrTemp = arrStore<br />
		Do<br />
			If r = 1 Then<br />
				ReDim Preserve arrOutput(k)<br />
				arrOutput(k) = curveParameter(arrTemp(0),i*(1/intSamples))<br />
				k=k+1<br />
				Exit Do<br />
			End If<br />
			r=0<br />
			ReDim Preserve arrSet(s)<br />
			arrSet(s) = arrTemp<br />
			ReDim arrLines(0)<br />
			For j = 1 To ubound(arrSet(s)) Step 1<br />
				ReDim Preserve arrLines(r), arrOutputs(t)<br />
				arrLines(r) = Rhino.AddLine(curveParameter(arrSet(s)(j-1),i*(1/intSamples)),curveParameter(arrSet(s)(j),i*(1/intSamples)))<br />
				arrOutputs(t) = arrLines(r)<br />
				t=t+1<br />
				r=r+1<br />
			Next<br />
			arrTemp = arrLines<br />
			s=s+1<br />
		Loop<br />
	Next<br />
	ReDim Preserve arrOutput(k)<br />
	arrOutput(k) = arrPts(uBound(arrPts))<br />
	bezierConstructor = array(arrOutput,arrOutputs)<br />
End Function<br />
Function curveParameter(strCurve,dblParameter)<br />
	curveParameter = Null<br />
	Dim cDom,arrPoint<br />
	cDom = Rhino.CurveDomain(strCurve)<br />
	arrPoint = Rhino.EvaluateCurve(strCurve,cDom(0)+dblParameter*(cDom(1)-cDom(0)))<br />
	curveParameter = arrPoint<br />
End Function</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thewhiteball.wordpress.com/281/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thewhiteball.wordpress.com/281/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thewhiteball.wordpress.com/281/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thewhiteball.wordpress.com/281/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thewhiteball.wordpress.com/281/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thewhiteball.wordpress.com/281/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thewhiteball.wordpress.com/281/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thewhiteball.wordpress.com/281/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thewhiteball.wordpress.com/281/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thewhiteball.wordpress.com/281/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thewhiteball.wordpress.com/281/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thewhiteball.wordpress.com/281/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thewhiteball.wordpress.com/281/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thewhiteball.wordpress.com/281/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=281&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thewhiteball.wordpress.com/2010/03/05/curves-bezier-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5069a043eaef591b91d4b5cf82c83b39?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonbailey</media:title>
		</media:content>

		<media:content url="http://thewhiteball.files.wordpress.com/2010/03/bezier.jpg" medium="image">
			<media:title type="html">bezier</media:title>
		</media:content>
	</item>
		<item>
		<title>import.excel.02</title>
		<link>http://thewhiteball.wordpress.com/2010/02/06/points-import-03/</link>
		<comments>http://thewhiteball.wordpress.com/2010/02/06/points-import-03/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 15:01:31 +0000</pubDate>
		<dc:creator>jonbailey</dc:creator>
				<category><![CDATA[import/export]]></category>
		<category><![CDATA[points]]></category>

		<guid isPermaLink="false">http://thewhiteball.wordpress.com/2010/02/06/points-import-03/</guid>
		<description><![CDATA[Option Explicit ‘excel import to rhinoscript , che-wei wang 4.8.2008 ‘excel cell numbers begin with 1,1 (not 0,0) Call Main() Sub Main() Dim FileName, file, excel FileName = Rhino.OpenFileName(“Select Excel File”,”Excel Files (*.xls)&#124;*.xls&#124;&#124;”) If isNull(FileName) Then Exit Sub Set excel = CreateObject(“Excel.Application”) excel.Visible = True excel.Workbooks.Open(FileName) Set file = excel.ActiveSheet Dim i Dim value(2) Dim [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=279&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Option Explicit</p>
<p>‘excel import to rhinoscript , che-wei wang 4.8.2008<br />
‘excel cell numbers begin with 1,1 (not 0,0)</p>
<p>Call Main()<br />
Sub Main()<br />
 Dim FileName, file, excel<br />
 FileName = Rhino.OpenFileName(“Select Excel File”,”Excel Files (*.xls)|*.xls||”)<br />
 If isNull(FileName) Then Exit Sub</p>
<p> Set excel = CreateObject(“Excel.Application”)<br />
 excel.Visible = True</p>
<p> excel.Workbooks.Open(FileName)<br />
 Set file = excel.ActiveSheet<br />
 Dim i<br />
 Dim value(2)<br />
 Dim arrPoints(99)     ’array is zero based<br />
 For i = 1 To 100<br />
  value(0) = file.Cells(i,1).Value  ’excel file is not zero based<br />
  value(1) = file.Cells(i,2).Value<br />
  value(2) = file.Cells(i,3).Value<br />
  arrPoints(i-1) = rhino.addPoint (value)<br />
 Next</p>
<p> Dim arrPoint1, arrPoint2, arrPoint3<br />
 Dim strPoint1, strPoint2<br />
 For Each strPoint1 In arrPoints<br />
  arrPoint1 = rhino.PointCoordinates(strPoint1)<br />
  For Each strPoint2 In arrPoints<br />
   arrPoint2 = rhino.PointCoordinates(strPoint2)<br />
   arrPoint3 = array(arrPoint1, arrPoint2)<br />
   rhino.AddCurve arrPoint3<br />
  Next<br />
 Next</p>
<p> excel.UserControl = True<br />
End Sub</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thewhiteball.wordpress.com/279/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thewhiteball.wordpress.com/279/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thewhiteball.wordpress.com/279/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thewhiteball.wordpress.com/279/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thewhiteball.wordpress.com/279/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thewhiteball.wordpress.com/279/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thewhiteball.wordpress.com/279/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thewhiteball.wordpress.com/279/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thewhiteball.wordpress.com/279/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thewhiteball.wordpress.com/279/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thewhiteball.wordpress.com/279/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thewhiteball.wordpress.com/279/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thewhiteball.wordpress.com/279/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thewhiteball.wordpress.com/279/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thewhiteball.wordpress.com&amp;blog=7109816&amp;post=279&amp;subd=thewhiteball&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thewhiteball.wordpress.com/2010/02/06/points-import-03/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5069a043eaef591b91d4b5cf82c83b39?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jonbailey</media:title>
		</media:content>
	</item>
	</channel>
</rss>
