developer:sdksamples:addnurbscircle


Create a NURBS Circle

Developer: C++, .NET
Summary: Demonstrates how to use ON_NurbsCurve to create a circle.

Example

C++

  CRhinoCommand::result CCommandTest::RunCommand(
          const CRhinoCommandContext& context )
  {
    int dimension = 3;
    BOOL bIsRational = TRUE;
    int order = 3;
    int cv_count = 9;
 
    ON_NurbsCurve nc( dimension, bIsRational, order, cv_count );
    nc.SetCV( 0, ON_4dPoint(1.0, 0.0, 0.0, 1.0) );
    nc.SetCV( 1, ON_4dPoint(0.707107, 0.707107, 0.0, 0.707107) );
    nc.SetCV( 2, ON_4dPoint(0.0, 1.0, 0.0, 1.0) );
    nc.SetCV( 3, ON_4dPoint(-0.707107, 0.707107, 0.0, 0.707107) );
    nc.SetCV( 4, ON_4dPoint(-1.0, 0.0, 0.0, 1.0) );
    nc.SetCV( 5, ON_4dPoint(-0.707107, -0.707107, 0.0, 0.707107) );
    nc.SetCV( 6, ON_4dPoint(0.0, -1.0, 0.0, 1.0) );
    nc.SetCV( 7, ON_4dPoint(0.707107, -0.707107, 0.0, 0.707107) );
    nc.SetCV( 8, ON_4dPoint(1.0, 0.0, 0.0, 1.0) );
    nc.SetKnot( 0, 0.0 );
    nc.SetKnot( 1, 0.0 );
    nc.SetKnot( 2, 0.5*ON_PI );
    nc.SetKnot( 3, 0.5*ON_PI );
    nc.SetKnot( 4, ON_PI );
    nc.SetKnot( 5, ON_PI );
    nc.SetKnot( 6, 1.5*ON_PI );
    nc.SetKnot( 7, 1.5*ON_PI );
    nc.SetKnot( 8, 2.0*ON_PI );
    nc.SetKnot( 9, 2.0*ON_PI );
 
    if( nc.IsValid() )
    {
      context.m_doc.AddCurveObject( nc );
      context.m_doc.Redraw();
    }
 
    return CRhinoCommand::success;
  }

VB.NET

Public Overrides Function RunCommand(ByVal context As RMA.Rhino.IRhinoCommandContext)_
  As RMA.Rhino.IRhinoCommand.result
 
  Dim dimension As Integer = 3
  Dim bIsRational As Boolean = True
  Dim order As Integer = 3
  Dim cv_count As Integer = 9
  Dim nc As New OnNurbsCurve(dimension, bIsRational, order, cv_count)
  nc.SetCV(0, New On4dPoint(1.0, 0.0, 0.0, 1.0))
  nc.SetCV(1, New On4dPoint(0.707107, 0.707107, 0.0, 0.707107))
  nc.SetCV(2, New On4dPoint(0.0, 1.0, 0.0, 1.0))
  nc.SetCV(3, New On4dPoint(-0.707107, 0.707107, 0.0, 0.707107))
  nc.SetCV(4, New On4dPoint(-1.0, 0.0, 0.0, 1.0))
  nc.SetCV(5, New On4dPoint(-0.707107, -0.707107, 0.0, 0.707107))
  nc.SetCV(6, New On4dPoint(0.0, -1.0, 0.0, 1.0))
  nc.SetCV(7, New On4dPoint(0.707107, -0.707107, 0.0, 0.707107))
  nc.SetCV(8, New On4dPoint(1.0, 0.0, 0.0, 1.0))
  nc.SetKnot(0, 0.0)
  nc.SetKnot(1, 0.0)
  nc.SetKnot(2, 0.5 * OnUtil.On_PI)
  nc.SetKnot(3, 0.5 * OnUtil.On_PI)
  nc.SetKnot(4, OnUtil.On_PI)
  nc.SetKnot(5, OnUtil.On_PI)
  nc.SetKnot(6, 1.5 * OnUtil.On_PI)
  nc.SetKnot(7, 1.5 * OnUtil.On_PI)
  nc.SetKnot(8, 2.0 * OnUtil.On_PI)
  nc.SetKnot(9, 2.0 * OnUtil.On_PI)
  If (nc.IsValid()) Then
    context.m_doc.AddCurveObject(nc)
    context.m_doc.Redraw()
  End If
  Return IRhinoCommand.result.success
End Function

C#

public override IRhinoCommand.result RunCommand(IRhinoCommandContext context)
{
  int dimension = 3;
  bool bIsRational = true;
  int order = 3;
  int cv_count = 9;
  OnNurbsCurve nc = new OnNurbsCurve(dimension, bIsRational, order, cv_count);
  nc.SetCV(0, new On4dPoint(1.0, 0.0, 0.0, 1.0));
  nc.SetCV(1, new On4dPoint(0.707107, 0.707107, 0.0, 0.707107));
  nc.SetCV(2, new On4dPoint(0.0, 1.0, 0.0, 1.0));
  nc.SetCV(3, new On4dPoint(-0.707107, 0.707107, 0.0, 0.707107));
  nc.SetCV(4, new On4dPoint(-1.0, 0.0, 0.0, 1.0));
  nc.SetCV(5, new On4dPoint(-0.707107, -0.707107, 0.0, 0.707107));
  nc.SetCV(6, new On4dPoint(0.0, -1.0, 0.0, 1.0));
  nc.SetCV(7, new On4dPoint(0.707107, -0.707107, 0.0, 0.707107));
  nc.SetCV(8, new On4dPoint(1.0, 0.0, 0.0, 1.0));
  nc.SetKnot(0, 0.0);
  nc.SetKnot(1, 0.0);
  nc.SetKnot(2, 0.5 * OnUtil.On_PI);
  nc.SetKnot(3, 0.5 * OnUtil.On_PI);
  nc.SetKnot(4, OnUtil.On_PI);
  nc.SetKnot(5, OnUtil.On_PI);
  nc.SetKnot(6, 1.5 * OnUtil.On_PI);
  nc.SetKnot(7, 1.5 * OnUtil.On_PI);
  nc.SetKnot(8, 2.0 * OnUtil.On_PI);
  nc.SetKnot(9, 2.0 * OnUtil.On_PI);
  if( nc.IsValid() )
  {
    context.m_doc.AddCurveObject( nc );
    context.m_doc.Redraw();
  }
  return IRhinoCommand.result.success;
}


developer/sdksamples/addnurbscircle.txt · Last modified: 2010/03/11 12:34 by dale Driven by DokuWiki Recent changes RSS feed

 © 1997-2012 

McNeel North America Europe Latin AmericaAsia