'Bridge explorations '=======MAKECURVES FUNCTION======================================= 'This function creates eleven curves from points as paramaters 'the location of points can be manipulated for creating different 'bridge results '================================================================= Function makeCurves() 'curves will be created using 4, 6 or 11 points and a base with two points Dim crvOnePt1, crvOnePt2, crvOnePt3, crvOnePt4 'Define the variables for each point of curve one Dim crvTwoPt1, crvTwoPt2, crvTwoPt3, crvTwoPt4 'Define the variables for each point of curve two Dim crvFivePt1,crvFivePt2,crvFivePt3,crvFivePt4 Dim crvThreePt1,crvThreePt2,crvThreePt3,crvThreePt4,crvThreePt5,crvThreePt6,crvThreePt7,crvThreePt8,crvThreePt9,crvThreePt10,crvThreePt11 Dim crvFourPt1,crvFourPt2,crvFourPt3,crvFourPt4,crvFourPt5,crvFourPt6,crvFourPt7,crvFourPt8,crvFourPt9,crvFourPt10,crvFourPt11 Dim crvArcaPt1,crvArcaPt2,crvArcaPt3,crvArcaPt4,crvArcaPt5,crvArcaPt6 Dim crvArcbPt1,crvArcbPt2,crvArcbPt3,crvArcbPt4,crvArcbPt5,crvArcbPt6 Dim crvArccPt1,crvArccPt2,crvArccPt3,crvArccPt4,crvArccPt5,crvArccPt6 Dim crvArcdPt1,crvArcdPt2,crvArcdPt3,crvArcdPt4,crvArcdPt5,crvArcdPt6 Dim crvBaseaPt1,crvBaseaPt2,crvBaseaPt3,crvBaseaPt4,crvBaseaPt5,crvBaseaPt6,crvBaseaPt7,crvBaseaPt8,crvBaseaPt9,crvBaseaPt10,crvBaseaPt11 Dim crvBasebPt1,crvBasebPt2,crvBasebPt3,crvBasebPt4,crvBasebPt5,crvBasebPt6,crvBasebPt7,crvBasebPt8,crvBasebPt9,crvBasebPt10,crvBasebPt11 Dim crvOne, crvTwo, crvFive, crvThree, crvFour, crvArca, crvArcb, crvArcc, crvArcd, crvBasea, crvBaseb 'Define variables for curves Dim crvFiveEndPoint ReDim newPoint(2) Dim path 'Create array of points crvOnePt1 = Array(0.0, 0.0, 10.0) 'create three floats that are the (X,Y,Z) values of the point crvOnePt2 = Array(4.0, 0.0, 10.0) crvOnePt3 = Array(8.0, 0.0, 10.0) crvOnePt4 = Array(12.0, 0.0, 10.0) crvTwoPt1 = Array(0.0, 50, 10.0) 'create three floats that are the (X,Y,Z) values of the point crvTwoPt2 = Array(4.0, 50, 15.0) crvTwoPt3 = Array(8.0, 50, 15.0) crvTwoPt4 = Array(12.0, 50, 10.0) crvFivePt1 = Array(0.0, -50, 10.0) 'create three floats that are the (X,Y,Z) values of the point crvFivePt2 = Array(4.0, -50, 15.0) crvFivePt3 = Array(8.0, -50, 15.0) crvFivePt4 = Array(12.0, -50, 10.0) crvThreePt1 = Array(0.0, -50.0, 10.0) 'create three floats that are the (X,Y,Z) values of the point crvThreePt2 = Array(0.0, -40.0, 12.0) crvThreePt3 = Array(3.0, -30.0, 10.0) crvThreePt4 = Array(0.0, -20.0, 10.0) crvThreePt5 = Array(0.0, -10.0, 12.0) crvThreePt6 = Array(0.0, 0.0, 10.0) crvThreePt7 = Array(0.0, 10.0, 12.0) crvThreePt8 = Array(0.0, 20.0, 10.0) crvThreePt9 = Array(3.0, 30.0, 10.0) crvThreePt10 = Array(0.0, 40.0, 12.0) crvThreePt11 = Array(0.0, 50.0, 10.0) crvFourPt1 = Array(12.0, -50.0, 10.0) 'create three floats that are the (X,Y,Z) values of the point crvFourPt2 = Array(12.0, -40.0, 12.0) crvFourPt3 = Array(9.0, -30.0, 10.0) crvFourPt4 = Array(12.0, -20.0, 10.0) crvFourPt5 = Array(12.0, -10.0, 12.0) crvFourPt6 = Array(12.0, 0.0, 10.0) crvFourPt7 = Array(12.0, 10.0, 12.0) crvFourPt8 = Array(12.0, 20.0, 10.0) crvFourPt9 = Array(9.0, 30.0, 10.0) crvFourPt10 = Array(12.0, 40.0, 12.0) crvFourPt11 = Array(12.0, 50.0, 10.0) 'create two curves using six points to arc 1 crvArcaPt1 = Array(0.0, -50, 10.0) 'create three floats that are the (X,Y,Z) values of the point crvArcaPt2 = Array(-2.0, -45.0, 20.0) crvArcaPt3 = Array(-6.0, -30.0, 35.0) crvArcaPt4 = Array(-4.0, 30.0, 25.0) crvArcaPt5 = Array(-2.0, 40.0, 20.0) crvArcaPt6 = Array(0.0, 50.0, 10.0) crvArcbPt1 = Array(12.0, -50, 10.0) 'create three floats that are the (X,Y,Z) values of the point crvArcbPt2 = Array(14.0, -40.0, 20.0) crvArcbPt3 = Array(18.0, -30.0, 35.0) crvArcbPt4 = Array(16.0, 30.0, 25.0) crvArcbPt5 = Array(14.0, 40.0, 20.0) crvArcbPt6 = Array(12.0, 50.0, 10.0) 'create two curves using six points to arc2 crvArccPt1 = Array(4.0, -50, 15.0) 'create three floats that are the (X,Y,Z) values of the point crvArccPt2 = Array(2.0, -40.0, 20.0) crvArccPt3 = Array(0.0, -30.0, 35.0) crvArccPt4 = Array(0.0, 30.0, 30.0) crvArccPt5 = Array(2.0, 40.0, 25.0) crvArccPt6 = Array(4.0, 50.0, 15.0) crvArcdPt1 = Array(8.0, -50, 15.0) 'create three floats that are the (X,Y,Z) values of the point crvArcdPt2 = Array(10.0, -40.0, 25.0) crvArcdPt3 = Array(12.0, -30.0, 35.0) crvArcdPt4 = Array(12.0, 30.0, 30.0) crvArcdPt5 = Array(10.0, 40.0, 25.0) crvArcdPt6 = Array(8.0, 50.0, 15.0) ''create two curves using eleven poinst to a principal base crvBaseaPt1 = Array(2.0, -50.0, 5.0) 'create two floats that are the (X,Y,Z) values of the point crvBaseaPt2 = Array(0.0, -40.0, 7.0) crvBaseaPt3 = Array(2.0, -30.0, 5.0) crvBaseaPt4 = Array(0.0, -20.0, 7.0) crvBaseaPt5 = Array(2.0, -10.0, 5.0) crvBaseaPt6 = Array(0.0, 0.0, 3.0) crvBaseaPt7 = Array(2.0, 10.0, 5.0) crvBaseaPt8 = Array(0.0, 20.0, 7.0) crvBaseaPt9 = Array(2.0, 30.0, 5.0) crvBaseaPt10 = Array(0.0, 40.0, 7.0) crvBaseaPt11 = Array(2.0, 50.0, 5.0) crvBasebPt1 = Array(10.0, -50.0, 5.0) 'create two floats that are the (X,Y,Z) values of the point crvBasebPt2 = Array(12.0, -40.0, 7.0) crvBasebPt3 = Array(10.0, -30.0, 5.0) crvBasebPt4 = Array(12.0, -20.0, 7.0) crvBasebPt5 = Array(10.0, -10.0, 5.0) crvBasebPt6 = Array(12.0, 0.0, 3.0) crvBasebPt7 = Array(10.0, 10.0, 5.0) crvBasebPt8 = Array(12.0, 20.0, 7.0) crvBasebPt9 = Array(10.0, 30.0, 5.0) crvBasebPt10 = Array(12.0, 40.0, 7.0) crvBasebPt11 = Array(10.0, 50.0, 5.0) crvOne = Rhino.AddInterpCurve(Array(crvOnePt1, crvOnePt2, crvOnePt3, crvOnePt4)) 'Create first curve with array of points crvTwo = Rhino.AddInterpCurve(Array(crvTwoPt1, crvTwoPt2, crvTwoPt3, crvTwoPt4)) 'Create second curve with array of points crvFive = Rhino.AddInterpCurve(Array(crvFivePt1, crvFivePt2, crvFivePt3, crvFivePt4)) 'Create first curve with array of points crvThree = Rhino.AddInterpCurve(Array(crvThreePt1, crvThreePt2, crvThreePt3, crvThreePt4, crvThreePt5, crvThreePt6, crvThreePt7, crvThreePt8, crvThreePt9, crvThreePt10, crvThreePt11)) 'Create second curve with array of points crvFour = Rhino.AddInterpCurve(Array(crvFourPt1, crvFourPt2, crvFourPt3, crvFourPt4, crvFourPt5, crvFourPt6, crvFourPt7, crvFourPt8, crvFourPt9, crvFourPt10, crvFourPt11)) 'Create second curve with array of points crvArca =Rhino.AddInterpcurve(Array(crvArcaPt1, crvArcaPt2, crvArcaPt3, crvArcaPt4, crvArcaPt5, crvArcaPt6)) crvArcb =Rhino.AddInterpcurve(Array(crvArcbPt1, crvArcbPt2, crvArcbPt3, crvArcbPt4, crvArcbPt5, crvArcbPt6)) crvArcc =Rhino.AddInterpcurve(Array(crvArccPt1, crvArccPt2, crvArccPt3, crvArccPt4, crvArccPt5, crvArccPt6)) crvArcd =Rhino.AddInterpcurve(Array(crvArcdPt1, crvArcdPt2, crvArcdPt3, crvArcdPt4, crvArcdPt5, crvArcdPt6)) crvBasea =Rhino.AddInterpcurve(Array(crvBaseaPt1, crvBaseaPt2, crvBaseaPt3, crvBaseaPt4, crvBaseaPt5, crvBaseaPt6, crvBaseaPt7, crvBaseaPt8, crvBaseaPt9, crvBaseaPt10, crvBaseaPt11)) crvBaseb =Rhino.AddInterpcurve(Array(crvBasebPt1, crvBasebPt2, crvBasebPt3, crvBasebPt4, crvBasebPt5, crvBasebPt6, crvBasebPt7, crvBasebPt8, crvBasebPt9, crvBasebPt10, crvBasebPt11)) 'Use the built curves to build bridge 'Call makeBridge(crvOne, crvTwo) 'Call makeBridge(crvThree, crvFour) 'makebridge from surfaces and extrude each one Dim curveArray ReDim srfArray(6) curveArray = Array(crvOne, crvTwo, crvThree, crvFour) srfArray(0) = Rhino.AddEdgeSrf (curveArray) curveArray = Array(crvOne, crvThree, crvFour, crvFive) srfArray(1) = Rhino.AddEdgeSrf (curveArray) curveArray = Array(crvBasea, crvThree) srfArray(2) = Rhino.AddEdgeSrf (curveArray) curveArray = Array(crvBaseb, crvFour) srfArray(3) = Rhino.AddEdgeSrf (curveArray) curveArray = Array(crvArca, crvArcc) srfArray(4) = Rhino.AddEdgeSrf (curveArray) curveArray = Array(crvArcb, crvArcd) srfArray(5) = Rhino.AddEdgeSrf (curveArray) curveArray = Array(crvBasea, crvBaseb) srfArray(6) = Rhino.AddEdgeSrf (curveArray) 'Secunce to create Pipes using 'Call makePipes(crvThree) 'Call makePipes(crvFour) 'Call makePipes(crvArcc) 'Call makePipes(crvArcd) crvFiveEndPoint = Rhino.CurveEndPoint(crvFive) For i = 0 To UBound(srfArray) Rhino.SelectObject(srfArray(i)) Rhino.UnSelectObject(srfArray(i)) If i = 0 Then newPoint(0) = crvFiveEndPoint(0) newPoint(1) = crvFiveEndPoint(1) newPoint(2) = crvFiveEndPoint(2)-1 path = Rhino.AddLine (crvFiveEndPoint,newPoint) Rhino.ExtrudeSurface srfArray(i),path Rhino.DeleteObject (path) ElseIf i = 1 Then newPoint(0) = crvFiveEndPoint(0) newPoint(1) = crvFiveEndPoint(1) newPoint(2) = crvFiveEndPoint(2)-1 path = Rhino.AddLine (crvFiveEndPoint,newPoint) Rhino.ExtrudeSurface srfArray(i),path Rhino.DeleteObject (path) ElseIf i = 2 Then newPoint(0) = crvFiveEndPoint(0)-1 newPoint(1) = crvFiveEndPoint(1) newPoint(2) = crvFiveEndPoint(2) path = Rhino.AddLine (crvFiveEndPoint,newPoint) Rhino.ExtrudeSurface srfArray(i),path Rhino.DeleteObject (path) ElseIf i = 3 Then newPoint(0) = crvFiveEndPoint(0)+1 newPoint(1) = crvFiveEndPoint(1) newPoint(2) = crvFiveEndPoint(2) path = Rhino.AddLine (crvFiveEndPoint,newPoint) Rhino.ExtrudeSurface srfArray(i),path Rhino.DeleteObject (path) ElseIf i = 4 Then newPoint(0) = crvFiveEndPoint(0) newPoint(1) = crvFiveEndPoint(1) newPoint(2) = crvFiveEndPoint(2)-1 path = Rhino.AddLine (crvFiveEndPoint,newPoint) Rhino.ExtrudeSurface srfArray(i),path Rhino.DeleteObject (path) ElseIf i = 5 Then newPoint(0) = crvFiveEndPoint(0) newPoint(1) = crvFiveEndPoint(1) newPoint(2) = crvFiveEndPoint(2)-1 path = Rhino.AddLine (crvFiveEndPoint,newPoint) Rhino.ExtrudeSurface srfArray(i),path Rhino.DeleteObject (path) ElseIf i = 6 Then newPoint(0) = crvFiveEndPoint(0) newPoint(1) = crvFiveEndPoint(1) newPoint(2) = crvFiveEndPoint(2)+0.5 path = Rhino.AddLine (crvFiveEndPoint,newPoint) Rhino.ExtrudeSurface srfArray(i),path Rhino.DeleteObject (path) Else End If Next 'secuence to call the pipes Call makePipes(crvThree) Call makePipes(crvFour) Call makePipes(crvArcc) Call makePipes(crvArcd) End Function '=======MAKEBRIDGE FUNCTION======================================= 'This function uses the two curves from above function to build 'your bridge '================================================================= Function makeBridge(c1, c2) End Function makeCurves 'Develop of the pipe Function makePipes(crvt) Dim somenumber : somenumber = 1 Dim diameter diameter = somenumber Rhino.SelectObject(crvt) Rhino.command "_Pipe Thick=no Cap=round "& diameter & " " & diameter &" Enter Enter" Rhino.UnselectObject(crvt) End Function 'SHADE MODE Rhino.Command "_ShadedViewport" 'ROTATE view for simple animation 'USE OF FOR LOOP For count = 0 To 15 Rhino.Command "_RotateView left" 'Rhino.Sleep count/1 Next Rhino.command "_SelSrf" Rhino.command "_Hide" Rhino.command "_Selcrv" Rhino.command "_Hide" Rhino.command "_SelPt" Rhino.command "_SelAll" Rhino.command "_Mesh" Rhino.command "_Group" Rhino.command "_Export"