Site Tools


Differences

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

Link to this comparison view

developer:scriptsamples:curvesplitter [2015/09/14] (current)
Line 1: Line 1:
 +====== Splitting Curves into Multiple Segments ======
 +> **Developer:​** [[developer:​rhinoscript|RhinoScript]]
 +> **Summary:​** //​Demonstrates how to split a curve into multiple segments using RhinoScript.//​
 +
 +=====Question=====
 +I know that RhinoScript'​s **SplitCurve** function will split a curve into two pieces. But what if I need to split a curve into more than two pieces?
 +
 +=====Answer=====
 +You can split a curve into multiple pieces by using the **TrimCurve** function. **TrimCurve** will trim a curve by removing portions of the curve outside of a specified interval. All you need to do is first divide the curve into the number of segments you want using **DivideCurve**. Then, loop through each division segment, create intervals from the results of **CurveClosestPoint**,​ and then trim the curve. For example:
 +
 +<code vb>
 + ​Option Explicit
 +
 + Sub CurveSplitter
 +
 +   Const rhCurveObject = 4
 +
 +   Dim sCurve
 +   ​sCurve = Rhino.GetObject("​Select curve to split",​ rhCurveObject)
 +   If IsNull(sCurve) Then Exit Sub
 +
 +   Dim nSegments
 +   ​nSegments = Rhino.GetInteger("​Number of segments",​ 2, 2)
 +   If IsNull(nSegments) Then Exit Sub
 +
 +   Dim aPoints
 +   ​aPoints = Rhino.DivideCurve(sCurve,​ nSegments)
 +   If Not IsArray(aPoints) Then Exit Sub
 +
 +   ​Rhino.EnableRedraw False
 +
 +   Dim i, t0, t1
 +   For i = 0 To UBound(aPoints) - 1
 +     t0 = Rhino.CurveClosestPoint(sCurve,​ aPoints(i))
 +     t1 = Rhino.CurveClosestPoint(sCurve,​ aPoints(i+1))
 +     ​Rhino.TrimCurve sCurve, Array(t0, t1), vbFalse
 +   Next
 +
 +   ​Rhino.DeleteObject sCurve
 +   ​Rhino.EnableRedraw True
 +
 + End Sub
 +
 +</​code>​
 +
 +\\
 +
 +{{tag>​Developer RhinoScript}}
  
developer/scriptsamples/curvesplitter.txt ยท Last modified: 2015/09/14 (external edit)