Thursday, March 6, 2008

Rhino Script - Closed Bladder from Curve





Option Explicit
'Script written by Katie Adee & Natasha Harper
'Script version Monday, March 03, 2008 10:25:36 PM

Call Main()
Sub Main()
Dim arrBladder,blad

arrBladder= Rhino.GetObjects("Select curves", 4)

For Each blad In arrBladder
Call Rhino.AddLayer("ConstLines3", 0,255,0)
Call Rhino.CurrentLayer ("ConstLines3")
Dim arrQuad, arrQuadPts, arrCentroid,arrCPt,arrAxis
Dim arrLine, arrPerpVec,arrVec,line, arrNegPerpVec
Dim arrPos, arrPosLine, arrNeg, arrNegLine,Morepts
arrQuad = Rhino.DivideCurve (blad,4)
arrQuadPts = Rhino.AddPoints(arrQuad)
arrCentroid = Rhino.CurveAreaCentroid (blad)
arrCPt = Rhino.AddPoints(arrCentroid)
arrAxis = Rhino.AddLine (arrQuad(0),arrQuad(2))
arrVec= Rhino.VectorAdd (arrQuad(0),arrQuad(2))
arrPosLine = Rhino.AddLine ( arrCentroid(0),arrQuad(1))
arrNegLine = Rhino.AddLine (arrCentroid(0),arrQuad(3))
arrPerpVec = Rhino.RotateObject( arrPosLine, arrCentroid(0),90, arrVec)
arrNegPerpVec = Rhino.RotateObject(arrNegLine,arrCentroid(0),90,arrVec)

arrPos = rhino.DivideCurve (arrPosLine,2)
arrNeg = rhino.DivideCurve (arrNegLine,2)

Dim arrPosPoints,arrNegPoints, dblScaleMid, dblScaleEnd

arrPosPoints = rhino.addPoints( arrPos)
arrNegPoints = Rhino.AddPoints (arrNeg)
Call Rhino.AddLayer("Offsets3", 255,0,255)
Call Rhino.CurrentLayer ("Offsets3")
Dim arrLoft01,arrLoft02,arrLoft04,arrLoft05
Dim arrScale1, arrScale2
Dim arrL01,arrloft

arrScale1 = array(.1,.1,.1)
arrScale2 = array(.75,.75,.75)

arrLoft01= Rhino.CopyObject(blad, arrCentroid(0),arrPos(2))
Call Rhino.ScaleObject (arrLoft01, arrPos(2), arrScale1)
Call Rhino.ObjectLayer (arrLoft01,"offsets3")

arrLoft02= Rhino.CopyObject(blad, arrCentroid(0),arrPos(1))
Call Rhino.ScaleObject (arrLoft02, arrPos(2), arrScale2)
Call Rhino.ObjectLayer (arrLoft02,"offsets3")

arrLoft04= Rhino.CopyObject(blad, arrCentroid(0),arrNeg(1))
Call Rhino.ScaleObject (arrLoft04, arrNeg(2), arrScale2)
Call Rhino.ObjectLayer (arrLoft04,"offsets3")

arrLoft05= Rhino.CopyObject(blad, arrCentroid(0),arrNeg(2))
Call Rhino.ScaleObject (arrLoft05, arrNeg(2), arrScale1)
Call Rhino.ObjectLayer (arrLoft05,"offsets3")
Call Rhino.AddLayer ("BladderClosed", 255,0,100)
Call Rhino.CurrentLayer ("BladderClosed")
arrLoft = array(arrLoft01,arrLoft02,blad,arrLoft04,arrLoft05)

Call rhino.AddLoftSrf (arrLoft)

'Call rhino.SelectObject (arrloft01)
'Call rhino.command ("cap")









Next
End Sub

No comments: