Site Tools


Differences

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

Link to this comparison view

developer:rhinocommonsamples:addnurbscircle [2015/09/14] (current)
Line 1: Line 1:
 +===== Sample: Add NURBS Circle =====
 +
 +===== C# =====
 +<code c#>
 +public static Rhino.Commands.Result AddNurbsCircle(Rhino.RhinoDoc doc)
 +{
 +  // The easy way to get a NURBS curve from a circle is with
 +  // the following two lines of code.
 +  //
 +  // Rhino.Geometry.Circle c = new Rhino.Geometry.Circle(20);​
 +  // Rhino.Geometry.NurbsCurve nc = c.ToNurbsCurve();​
 +  //
 +  // This sample demonstrates creating a NURBS curve from scratch.
 +  const int dimension = 3;
 +  const bool isRational = true;
 +  const int order = 3;
 +  const int cv_count = 9;
 +  Rhino.Geometry.NurbsCurve nc = new Rhino.Geometry.NurbsCurve(dimension,​ isRational, order, cv_count);
 +  nc.Points.SetPoint(0,​ 1.0, 0.0, 0.0, 1.0);
 +  nc.Points.SetPoint(1,​ 0.707107, 0.707107, 0.0, 0.707107);
 +  nc.Points.SetPoint(2,​ 0.0, 1.0, 0.0, 1.0);
 +  nc.Points.SetPoint(3,​ -0.707107, 0.707107, 0.0, 0.707107);
 +  nc.Points.SetPoint(4,​ -1.0, 0.0, 0.0, 1.0);
 +  nc.Points.SetPoint(5,​ -0.707107, -0.707107, 0.0, 0.707107);
 +  nc.Points.SetPoint(6,​ 0.0, -1.0, 0.0, 1.0);
 +  nc.Points.SetPoint(7,​ 0.707107, -0.707107, 0.0, 0.707107);
 +  nc.Points.SetPoint(8,​ 1.0, 0.0, 0.0, 1.0);
 +  nc.Knots[0] = 0.0;
 +  nc.Knots[1] = 0.0;
 +  nc.Knots[2] = 0.5 * Math.PI;
 +  nc.Knots[3] = 0.5 * Math.PI;
 +  nc.Knots[4] = Math.PI;
 +  nc.Knots[5] = Math.PI;
 +  nc.Knots[6] = 1.5 * Math.PI;
 +  nc.Knots[7] = 1.5 * Math.PI;
 +  nc.Knots[8] = 2.0 * Math.PI;
 +  nc.Knots[9] = 2.0 * Math.PI;
 +  if (nc.IsValid)
 +  {
 +    doc.Objects.AddCurve(nc);​
 +    doc.Views.Redraw();​
 +    return Rhino.Commands.Result.Success;​
 +  }
 +  return Rhino.Commands.Result.Failure;​
 +}
 +</​code>​
 +===== VB.NET =====
 +<code vb>
 +Public Shared Function AddNurbsCircle(ByVal doc As Rhino.RhinoDoc) As Rhino.Commands.Result
 +  ' The easy way to get a NURBS curve from a circle is with
 +  ' the following two lines of code.
 +  '
 +  ' Dim c As New Rhino.Geometry.Circle(20)
 +  ' Dim nc As Rhino.Geometry.NurbsCurve = c.ToNurbsCurve()
 +  '
 +  ' This sample demonstrates creating a NURBS curve from scratch.
 +  Const dimension As Integer = 3
 +  Const isRational As Boolean = True
 +  Const order As Integer = 3
 +  Const cv_count As Integer = 9
 +  Dim nc As New Rhino.Geometry.NurbsCurve(dimension,​ isRational, order, cv_count)
 +  nc.Points.SetPoint(0,​ 1.0, 0.0, 0.0, 1.0)
 +  nc.Points.SetPoint(1,​ 0.707107, 0.707107, 0.0, 0.707107)
 +  nc.Points.SetPoint(2,​ 0.0, 1.0, 0.0, 1.0)
 +  nc.Points.SetPoint(3,​ -0.707107, 0.707107, 0.0, 0.707107)
 +  nc.Points.SetPoint(4,​ -1.0, 0.0, 0.0, 1.0)
 +  nc.Points.SetPoint(5,​ -0.707107, -0.707107, 0.0, 0.707107)
 +  nc.Points.SetPoint(6,​ 0.0, -1.0, 0.0, 1.0)
 +  nc.Points.SetPoint(7,​ 0.707107, -0.707107, 0.0, 0.707107)
 +  nc.Points.SetPoint(8,​ 1.0, 0.0, 0.0, 1.0)
 +  nc.Knots(0) = 0.0
 +  nc.Knots(1) = 0.0
 +  nc.Knots(2) = 0.5 * Math.PI
 +  nc.Knots(3) = 0.5 * Math.PI
 +  nc.Knots(4) = Math.PI
 +  nc.Knots(5) = Math.PI
 +  nc.Knots(6) = 1.5 * Math.PI
 +  nc.Knots(7) = 1.5 * Math.PI
 +  nc.Knots(8) = 2.0 * Math.PI
 +  nc.Knots(9) = 2.0 * Math.PI
 +  If nc.IsValid Then
 +    doc.Objects.AddCurve(nc)
 +    doc.Views.Redraw()
 +    Return Rhino.Commands.Result.Success
 +  End If
 +  Return Rhino.Commands.Result.Failure
 +End Function
 +</​code>​
 +
 +{{tag>​Developer rhinocommon}}
  
developer/rhinocommonsamples/addnurbscircle.txt ยท Last modified: 2015/09/14 (external edit)