Here are some rhinoscripts those will be exercised in Digital Crafting Workshop – HexaPanels @ UPH Architecture.

Rhinoscript exercise #1 :
In this script exercise #1, we try to customize a planar modular system which modulated from a polygon. The customization created from a distance logic between each individual centroid of the module and a curve -as the attractor; which in the next step, the value of the distances will be used as an input to offset curve of a planar module.

Option Explicit
'Script written by <Dani Hermawan - www.formologix.com > <www.formo.co>
'Script version Friday, 15 July 2011 13:32:45

Call Main()
Sub Main()
	Dim arrCrvs01 : arrCrvs01 = Rhino.GetObjects("Select Curves to offset")
	Dim arrPtCent
	Dim crv01
	Dim dblDist
	Dim crvAtt : crvAtt=Rhino.GetObject("Select Curve to evaluate")
	Dim arrEvaPt
	Dim dblParam
	Dim crv02
	Dim arrCrvs02

	'for loop-ing to do repetitive procedure
	For Each crv01 In arrCrvs01
		arrPtCent= Rhino.CurveAreaCentroid(crv01) 'get the centroid of the curve
		'dblParam=Rhino.CurveClosestPoint(crvAtt, arrPtCent(0)) 'get parameter of the closest point on a curve

		Rhino.Print "Curve parameter: " & CStr(dblParam)
		arrEvaPt=Rhino.CurveEvaluate(crvAtt,dblParam,1) 'get coordinate of closest point on a curve

		dblDist=Rhino.Distance(arrEvaPt(0),arrPtCent(0)) 'analyse the distance for distance logic
		dblDist=dblDist/10

		crv02=Rhino.OffsetCurve(crv01,arrPtCent(0),dblDist) 'offseting curve according to distance logic
		arrCrvs02 = Array(crv01, crv02(0))
		If Rhino.IsCurveClosed(crv02(0)) Then
			Rhino.AddLoftSrf arrCrvs02 'create lofted object
		Else
			Rhino.DeleteObjects crv02
			Rhino.AddTextDot "Failed to loft", arrPtCent(0)
		End If

	Next

End Sub

 

Rhinoscript exercise #2:
This second script is a development form the first one. Here, the script demonstrates at how more complex parametric transformations can be developed -3d modular system.

Option Explicit
'Script written by <Dani Hermawan - www.formologix.com > <www.formo.co>
'Script version Friday, 15 July 2011 13:32:45

Call Main()
Sub Main()
	Dim arrCrvs01 : arrCrvs01 = Rhino.GetObjects("Select Curves to offset")
	Dim arrPtCent
	Dim crv01
	Dim dblDist
	Dim crvAtt : crvAtt=Rhino.GetObject("Select Curve to evaluate")
	Dim arrEvaPt
	Dim dblParam
	Dim crv02
	Dim arrCrvs02
	Dim arrCrvs03
	Dim dblMove01 : dblMove01=Rhino.GetReal("First Copy distance",0.3)
	Dim dblMove02 : dblMove02=Rhino.GetReal("Second Copy distance",-0.3)
	Dim crv03
	Dim crv04
	Dim startPt
	Dim startPt01
	Dim arrStartPt
	Dim dblDistCent
	Dim dblParamPoly
	Dim strLine
	Dim strPt

	For Each crv01 In arrCrvs01
		arrPtCent= Rhino.CurveAreaCentroid(crv01)
		dblParam=Rhino.CurveClosestPoint(crvAtt, arrPtCent(0))

		arrEvaPt=Rhino.CurveEvaluate(crvAtt,dblParam,1)

		dblDist=Rhino.Distance(arrEvaPt(0),arrPtCent(0))
		dblDist=dblDist/15

		'dblParamPoly=Rhino.CurveClosestPoint(crv01, arrPtCent(0))
		arrStartPt = CurveEvaluate(crv01,dblParamPoly,1)
		strPt = Rhino.AddPoint(arrStartPt(0))

		dblDistCent=Rhino.Distance(arrStartPt(0),arrPtCent(0))

		If dblDistCent > dblDist Then 

			crv02=Rhino.OffsetCurve(crv01,arrPtCent(0),dblDist)
			startPt=Rhino.CurveStartPoint(crv02(0))
			strLine = Rhino.AddLine(arrPtCent(0),arrEvaPt(0))

			Dim z1 : z1=arrPtCent(0)(2)+dblMove01
			Dim z2 : z2=arrPtCent(0)(2)+dblMove02
			Dim x : x=arrPtCent(0)(0)
			Dim y : y=arrPtCent(0)(1)

			Dim arrEnd01 : arrEnd01= Array(x,y,z1)
			Dim arrEnd02 : arrEnd02= Array(x,y,z2)

			If Rhino.IsCurveClosed(crv02(0)) Then

				crv03=Rhino.CopyObject(crv01,arrPtCent(0),arrEnd01)
				crv04=Rhino.CopyObject(crv01,arrPtCent(0),arrEnd02)

				arrCrvs02 = Array(crv02(0), crv03)
				arrCrvs03 = Array(crv02(0), crv04)

				Rhino.AddLoftSrf arrCrvs02
				Rhino.AddLoftSrf arrCrvs03
			Else
				Rhino.DeleteObjects crv02
			End If

		Else

		End If
		Rhino.DeleteObject strLine
		Rhino.DeleteObject strPt

	Next

End Sub

The rhinoscripts above work with Rhino SR7 or above. A key character has to be modified in order to make the script works. It will be mentioned in the workshop.