\nCodon

Shingles flow

Posted in examples, tutorials by pierre forissier on March 28, 2011

Script developed to populate free-form surfaces with overlapping irregular panels otherwise known as ‘shingles’. Sculpture project for North Scotland by biomorphis.

Call Main()
Sub Main()
Dim strSurface : strSurface = Rhino.GetObject(“Select original surface”,8)
Dim arrDomU, arrDomV
arrDomU = Rhino.SurfaceDomain(strSurface, 0)
arrDomV = Rhino.SurfaceDomain(strSurface, 1)
Dim strDivU : strDivU = Rhino.GetReal(“Please enter number of divisions in u direction”,200)
Dim strDivV : strDivV = Rhino.GetReal(“Please enter number of divisions in V direction”,20)
Dim n,t,p
Dim dblParameterU,dblParameterUGap
Dim dblParameterV
Dim dblParameterVLap
Dim arrPtU(),arrPtUOffset(),arrPtOverlap(),arrPtUGap()
Dim arrPtUV(),arrPtUVOffset(),arrPtUVOverlap(),arrPtUVGap()
Dim arrCtrPt()
Dim strLoft1,strLoft2
Dim arrObjects
Dim arrVecNorm
Dim arrKnot, arrKnotOffset,arrVectilt,arrKnotOverLap,arrKnotGap,arrKnotOffsetGap
Dim strSrfShingle,strShingleExtrudePath
Dim dblOverLap: dblOverLap = 0.2
Call Rhino.EnableRedraw(False)
For n=0 To strDivV
Dim dblVPercent: dblVPercent = ((arrDomV(1)-arrDomV(0))/strDivV)*0.3*rnd
dblParameterV=arrDomV(0)+((arrDomV(1)-arrDomV(0))/strDivV)*n + dblVPercent
dblParameterVLap=dblParameterV+((arrDomV(1)-arrDomV(0))/strDivV)*dblOverLap
For t=0 To strDivU
Dim dblUPercent : dblUPercent = (arrDomU(1)-arrDomU(0))/strDivU*0.3*rnd
dblParameterU=arrDomU(0)+((arrDomU(1)-arrDomU(0))/strDivU)*t + dblUPercent
dblParameterUGap=dblParameterU-((arrDomU(1)-arrDomU(0))/strDivU)*0.04′>>>>> gap dimension
arrKnot = Rhino.EvaluateSurface(strSurface,Array(dblParameterU,dblParameterV))
arrKnotOverLap = Rhino.EvaluateSurface(strSurface,Array(dblParameterUGap,dblParameterVLap))
arrKnotGap = Rhino.EvaluateSurface(strSurface,Array(dblParameterUGap,dblParameterV))
arrVecNorm = Rhino.SurfaceNormal(strSurface,Array(dblParameterUGap,dblParameterV))
If isarray(arrVecNorm)Then
Dim dblSlateTilt : dblSlateTilt = (10+5*rnd)
arrVectilt = Rhino.VectorScale(arrVecNorm,dblSlateTilt)
arrKnotOffset= Rhino.PointAdd(arrKnot,arrVectilt)
arrKnotOffsetGap= Rhino.PointAdd(arrKnotGap,arrVectilt)
End If
(more…)
Tagged with: , , ,

Weaving frame – Boreal House

Posted in events, examples, tutorials by pierre forissier on March 3, 2011

 

 

The house is a retreat for an artist  in the Scottish Highlands (visit full project on www.biomorphis.com)
The initial roof structure concept was to express the multi-layering of the roof-build-up (enhanced by translucent ETFE membrane). The script allows  the weave tension and inflections to be parametrically malleable.

Weaving Rhinoscript sample:

‘———-knitting V TWIN curves 1ST series—————————————————————–

For q=0 To strDivU Step 2
dblParameterU=arrDomU(0) +((arrDomU(1)-arrDomU(0))/strDivU)*q
For p=0 To strDivV Step 4
dblParameterV=arrDomV(0)+((arrDomV(1)-arrDomV(0))/strDivV)*p
vecNormal=rhino.SurfaceNormal(strSurface,Array(dblParameterU,dblParameterV))
newVecNormal = vecnormal
newVecNormal(2)= dblIntense
arrCtrPt1(q)(p)= Rhino.PointSubtract(arrCtrPt1(q)(p),newVecNormal)
arrCtrPt2(q)(p)= Rhino.PointSubtract(arrCtrPt2(q)(p),newVecNormal)
Next
For p=1 To strDivV Step 4
arrCtrPt1(q)(p)(2)= (arrCtrPt1(q)(p)(2))
arrCtrPt2(q)(p)(2)= (arrCtrPt2(q)(p)(2))
Next
For p=2 To strDivV Step 4
dblParameterV=arrDomV(0)+((arrDomV(1)-arrDomV(0))/strDivV)*p
vecNormal=rhino.SurfaceNormal(strSurface,Array(dblParameterU,dblParameterV))
arrCtrPt1(q)(p)= Rhino.PointAdd(arrCtrPt1(q)(p),newVecNormal)
arrCtrPt2(q)(p)= Rhino.PointAdd(arrCtrPt2(q)(p),newVecNormal)
Next
For p=3 To strDivV Step 4
arrCtrPt1(q)(p)(2)= (arrCtrPt1(q)(p)(2))
arrCtrPt2(q)(p)(2)= (arrCtrPt2(q)(p)(2))
Next
For p=4 To strDivV Step 4
dblParameterV=arrDomV(0)+((arrDomV(1)-arrDomV(0))/strDivV)*p
vecNormal=rhino.SurfaceNormal(strSurface,Array(dblParameterU,dblParameterV))
arrCtrPt1(q)(p)= Rhino.PointSubtract(arrCtrPt1(q)(p),newVecNormal)
arrCtrPt2(q)(p)= Rhino.PointSubtract(arrCtrPt2(q)(p),newVecNormal)
Next
ReDim Preserve arrVCurves1(q)
arrVCurves1(q)= Rhino.AddCurve(arrCtrPt1(q),2)
ReDim Preserve arrVCurves2(q)
arrVCurves2(q)= Rhino.AddCurve(arrCtrPt2(q),2)
Call rhino.AddLoftSrf(array(arrVCurves1(q),arrVCurves2(q)))
Next

download full script here

Follow

Get every new post delivered to your Inbox.

Join 25 other followers