Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

developer:scriptsamples:squarepipe [2015/09/14] (current)
Line 1: Line 1:
 +======Create Square Pipes with RhinoScript======
 +> **Developer:​** //​[[developer:​rhinoscript|RhinoScript]]//​
 +> **Summary:​** //​Demonstrates how to create square pipes using RhinoScript.//​
 +
 +=====Example=====
 +
 +<code vb>
 +Option Explicit
 +
 +Sub SquarePipe
 +
 + ' Declare local variables
 + Dim arrCrvs, strCrv, dblLength
 + Dim arrStart, dblParam, arrPlane
 + Dim x0, x1, y0, y1, arrX, arrY
 + Dim arrPoints(4),​ strSqr
 +
 + ' Pick the input, or path, curves
 + arrCrvs = Rhino.GetObjects("​Select curves",​ 4)
 + If IsNull(strCrv) Then Exit Sub
 +
 + ' Specify the lengths of the sides of the square ​   ​
 + dblLength = Rhino.GetReal("​Length of sides",​ 1.0, 0.0)
 + If Not IsNumeric(dblLength) Or dblLength <= 0 Then Exit Sub
 +
 + Call Rhino.EnableRedraw(False)
 +
 + For Each strCrv In arrCrvs
 +
 + ' Determine the curve'​s starting point    ​
 + arrStart = Rhino.CurveStartPoint(strCrv)
 +
 + ' Determine the parameter at the starting point  ​
 + dblParam = Rhino.CurveClosestPoint(strCrv,​ arrStart)
 +   ​
 + ' Detemine the curve'​s perpendicular plane at its starting point.
 + ' We can use this plane to cook up the coordinates of the square.
 + arrPlane = Rhino.CurvePerpFrame(strCrv,​ dblParam)
 +
 + ' Scale the vectors based on the user input
 + arrX = Rhino.VectorScale(arrPlane(1),​ dblLength * 0.5)
 + arrY = Rhino.VectorScale(arrPlane(2),​ dblLength * 0.5)
 +
 + ' Cook up some temporary points
 + x0 = Rhino.PointAdd(arrStart,​ arrX)
 + x1 = Rhino.PointAdd(arrStart,​ Rhino.VectorReverse(arrX))
 + y0 = Rhino.PointAdd(arrStart,​ arrY)
 + y1 = Rhino.PointAdd(arrStart,​ Rhino.VectorReverse(arrY))
 +
 + ' Define the points of the square  ​
 + arrPoints(0) = Rhino.PointAdd(x0,​ Rhino.VectorReverse(arrY))
 + arrPoints(1) = Rhino.PointAdd(y1,​ Rhino.VectorReverse(arrX))
 + arrPoints(2) = Rhino.PointAdd(x1,​ arrY)
 + arrPoints(3) = Rhino.PointAdd(y0,​ arrX)
 + arrPoints(4) = arrPoints(0)
 +   ​
 + ' Create the square
 + strSqr = Rhino.AddPolyline(arrPoints)
 +
 + ' Extrude the polyline along the input curve
 + Call Rhino.ExtrudeCurve(strSqr,​ strCrv)
 +
 + ' Delete polyline
 + Call Rhino.DeleteObject(strSqr)
 +
 + Next
 +
 + Call Rhino.EnableRedraw(True)
 +
 +End Sub
 +</​code>​
 +
 +\\
 +
 +{{tag>​Developer RhinoScript}}
  
developer/scriptsamples/squarepipe.txt ยท Last modified: 2015/09/14 (external edit)