McNeel Wiki
How To: Create a Plane Surface
edit · print · help · all topics
Main Pages

AccuRender

Bongo

Brazil r/s

Developer

Flamingo

Penguin

Rhino Blogs

Rhino

Rhino Labs

Search

Languages

Česky

Deutsch

English

Español

Français

Italiano

Polish

日本語

한국어

中文(繁體)

 
.
DeveloperC++, .NET
SummaryDemonstrates how to create a plane surface using the Rhino SDK.

The following sample code demonstrates how to create a plane surface.

C++

 CRhinoCommand::result CCommandTest::RunCommand( const CRhinoCommandContext& context )
 {
   CArgsRhinoGetPlane args;
   args.SetFirstPointPromptCorners( L"First corner of plane" );
   args.SetSecondPointPromptCorners( L"Other corner or length" );
   args.SetFirstPointPrompt3Point( L"Start of edge" );
   args.SetSecondPointPrompt3Point( L"End of edge" );
   args.SetThirdPointPrompt3Point( L"Width. Press Enter to use length" );
   args.SetFirstPointPromptVertical( L"Start of edge" );
   args.SetSecondPointPromptVertical( L"End of edge" );
   args.SetThirdPointPromptVertical( L"Height. Press Enter to use width" );
   args.SetFirstPointPromptCenter( L"Center of plane" );
   args.SetSecondPointPromptCenter( L"Other corner or length" );
   args.SetAllow3Point();
   args.SetAllowCenter();
   args.SetAllowVertical();
   args.SetAllowRounded( false );
   args.SetAllowDeformable( false );


   ON_3dPoint corners[4];
   CRhinoCommand::result rc = RhinoGetRectangle( args, corners );


   if( rc == CRhinoCommand::success)
   {
     ON_3dPoint& p0 = corners[0];
     ON_3dPoint& p1 = corners[1];
     ON_3dPoint& p3 = corners[3];


     ON_Interval domain0, domain1;
     domain0.Set( 0.0, p0.DistanceTo(p1) );
     domain1.Set( 0.0, p0.DistanceTo(p3) );


     ON_Plane plane( p0, p1, p3 );


     ON_PlaneSurface ps( plane );
     ps.SetExtents( 0, domain0, true );
     ps.SetExtents( 1, domain1, true );
     ps.SetDomain( 0, domain0.Min(), domain0.Max() );
     ps.SetDomain( 1, domain1.Min(), domain1.Max() );


     context.m_doc.AddSurfaceObject( ps );
     context.m_doc.Redraw();
   }
  return CRhinoCommand::success;
 }

VB.NET (Rhino 4)

  Public Overrides Function RunCommand(ByVal context As IRhinoCommandContext)_
    As RMA.Rhino.IRhinoCommand.result


    Dim args As New MArgsRhinoGetPlane()
    args.SetFirstPointPromptCorners("First corner of plane")
    args.SetSecondPointPromptCorners("Other corner or length")
    args.SetFirstPointPrompt3Point("Start of edge")
    args.SetSecondPointPrompt3Point("End of edge")
    args.SetThirdPointPrompt3Point("Width. Press Enter to use length")
    args.SetFirstPointPromptVertical("Start of edge")
    args.SetSecondPointPromptVertical("End of edge")
    args.SetThirdPointPromptVertical("Height. Press Enter to use width")
    args.SetFirstPointPromptCenter("Center of plane")
    args.SetSecondPointPromptCenter("Other corner or length")
    args.SetAllow3Point()
    args.SetAllowCenter()
    args.SetAllowVertical()
    args.SetAllowRounded(False)
    args.SetAllowDeformable(False)


    Dim corners As On3dPoint() = Nothing
    Dim rc As IRhinoCommand.result = RhUtil.RhinoGetRectangle(args, corners)


    If (rc = IRhinoCommand.result.success And corners IsNot Nothing) Then
      Dim p0 As On3dPoint = corners(0)
      Dim p1 As On3dPoint = corners(1)
      Dim p3 As On3dPoint = corners(3)


      Dim domain0 As New OnInterval(0, p0.DistanceTo(p1))
      Dim domain1 As New OnInterval(0, p0.DistanceTo(p3))
      Dim plane As New OnPlane(p0, p1, p3)


      Dim ps As New OnPlaneSurface(plane)
      ps.SetExtents(0, domain0, True)
      ps.SetExtents(1, domain1, True)
      ps.SetDomain(0, domain0.Min(), domain0.Max())
      ps.SetDomain(1, domain1.Min(), domain1.Max())
      context.m_doc.AddSurfaceObject(ps)
      context.m_doc.Redraw()
    End If
    Return rc
  End Function

C# (Rhino 4)

  public override IRhinoCommand.result RunCommand(IRhinoCommandContext context)
  {
    MArgsRhinoGetPlane args=new MArgsRhinoGetPlane();
    args.SetFirstPointPromptCorners("First corner of plane");
    args.SetSecondPointPromptCorners("Other corner or length");
    args.SetFirstPointPrompt3Point("Start of edge");
    args.SetSecondPointPrompt3Point("End of edge");
    args.SetThirdPointPrompt3Point("Width. Press Enter to use length");
    args.SetFirstPointPromptVertical("Start of edge");
    args.SetSecondPointPromptVertical("End of edge");
    args.SetThirdPointPromptVertical("Height. Press Enter to use width");
    args.SetFirstPointPromptCenter("Center of plane");
    args.SetSecondPointPromptCenter("Other corner or length");
    args.SetAllow3Point();
    args.SetAllowCenter();
    args.SetAllowVertical();
    args.SetAllowRounded(false);
    args.SetAllowDeformable(false);


    On3dPoint[] corners= new On3dPoint[4];
    IRhinoCommand.result rc = RhUtil.RhinoGetRectangle(ref args, out corners);
    if( rc == IRhinoCommand.result.success)
    {
      On3dPoint p0 = corners[0];
      On3dPoint p1 = corners[1];
      On3dPoint p3 = corners[3];


      OnInterval domain0, domain1;
      domain0=new OnInterval ( 0.0, p0.DistanceTo(p1) );
      domain1=new OnInterval ( 0.0, p0.DistanceTo(p3) );


      OnPlane plane= new OnPlane( p0, p1, p3 );
      OnPlaneSurface ps= new OnPlaneSurface ( plane );
      ps.SetExtents( 0, domain0, true );
      ps.SetExtents( 1, domain1, true );
      ps.SetDomain( 0, domain0.Min(), domain0.Max() );
      ps.SetDomain( 1, domain1.Min(), domain1.Max() );


      context.m_doc.AddSurfaceObject( ps );
      context.m_doc.Redraw();
    }
    return IRhinoCommand.result.success;
  }
rename · changes · history · subscriptions · lost and found · references · file upload