McNeel Wiki
How To: Set a View's Construction Plane
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

日本語

한국어

中文(繁體)

 
.
SummaryDemonstrates how to set a view's construction plane.

C++

  CRhinoCommand::result CCommandTest::RunCommand(
            const CRhinoCommandContext& context )
  {
    CRhinoView* view = ::RhinoApp().ActiveView();
    if( !view )
      return CRhinoCommand::failure;


    CRhinoGetOption go;
    go.SetCommandPrompt( L"Select a construction plane" );
    int back_option   = go.AddCommandOption( RHCMDOPTNAME(L"Back") );
    int bottom_option = go.AddCommandOption( RHCMDOPTNAME(L"Bottom") );
    int front_option  = go.AddCommandOption( RHCMDOPTNAME(L"Front") );
    int left_option   = go.AddCommandOption( RHCMDOPTNAME(L"Left") );
    int right_option  = go.AddCommandOption( RHCMDOPTNAME(L"Right") );
    int top_option    = go.AddCommandOption( RHCMDOPTNAME(L"Top") );


    go.GetOption();
    if( go.CommandResult() != CRhinoCommand::success )
      return go.CommandResult();


    const CRhinoCommandOption* opt = go.Option();
    if( !opt )
      return CRhinoCommand::failure;


    int option_index = opt->m_option_index;
    ON_3dmConstructionPlane cplane = view->Viewport().ConstructionPlane();
    if( option_index == back_option )
      cplane.m_plane.CreateFromPoints( ON_origin, -ON_xaxis ,ON_zaxis );
    else if( option_index == bottom_option )
      cplane.m_plane.CreateFromPoints( ON_origin, -ON_xaxis, ON_yaxis );
    else if( option_index == front_option )
      cplane.m_plane.CreateFromPoints( ON_origin, ON_xaxis, ON_zaxis );
    else if( option_index == left_option )
      cplane.m_plane.CreateFromPoints( ON_origin, -ON_yaxis, ON_zaxis );
    else if( option_index == right_option )
      cplane.m_plane.CreateFromPoints( ON_origin, ON_yaxis, ON_zaxis );
    else if( option_index == top_option )
      cplane.m_plane.CreateFromPoints( ON_origin, ON_xaxis, ON_yaxis );
    else
      return CRhinoCommand::failure;


    view->Viewport().PushConstructionPlane( cplane );
    view->Redraw();
    return CRhinoCommand::success;
  }

VB.NET

  Public Overrides Function RunCommand(ByVal context As IRhinoCommandContext) _
    As IRhinoCommand.result
    Dim view As MRhinoView = RhUtil.RhinoApp.ActiveView
    If (view Is Nothing) Then Return IRhinoCommand.result.failure


    Dim go As New MRhinoGetOption()
    go.SetCommandPrompt("Select a construction plane")
    Dim back_option As Integer = go.AddCommandOption(New MRhinoCommandOptionName("Back"))
    Dim bottom_option As Integer = go.AddCommandOption(New MRhinoCommandOptionName("Bottom"))
    Dim front_option As Integer = go.AddCommandOption(New MRhinoCommandOptionName("Front"))
    Dim left_option As Integer = go.AddCommandOption(New MRhinoCommandOptionName("Left"))
    Dim right_option As Integer = go.AddCommandOption(New MRhinoCommandOptionName("Right"))
    Dim top_option As Integer = go.AddCommandOption(New MRhinoCommandOptionName("Top"))
    go.GetOption()
    If (go.CommandResult() <> IRhinoCommand.result.success) Then Return go.CommandResult()


    Dim opt As IRhinoCommandOption = go.Option()
    If (opt Is Nothing) Then Return IRhinoCommand.result.failure
    Dim option_index As Integer = opt.m_option_index
    Dim cplane As New On3dmConstructionPlane(view.ActiveViewport().ConstructionPlane())


    Dim pos_x As New On3dPoint(1, 0, 0)
    Dim neg_x As New On3dPoint(-1, 0, 0)
    Dim pos_y As New On3dPoint(0, 1, 0)
    Dim neg_y As New On3dPoint(0, -1, 0)
    Dim pos_z As New On3dPoint(0, 0, 1)


    If (option_index = back_option) Then
      cplane.m_plane.CreateFromPoints(OnUtil.On_origin, neg_x, pos_z)
    ElseIf (option_index = bottom_option) Then
      cplane.m_plane.CreateFromPoints(OnUtil.On_origin, neg_x, pos_y)
    ElseIf (option_index = front_option) Then
      cplane.m_plane.CreateFromPoints(OnUtil.On_origin, pos_x, pos_z)
    ElseIf (option_index = left_option) Then
      cplane.m_plane.CreateFromPoints(OnUtil.On_origin, neg_y, pos_z)
    ElseIf (option_index = right_option) Then
      cplane.m_plane.CreateFromPoints(OnUtil.On_origin, pos_y, pos_z)
    ElseIf (option_index = top_option) Then
      cplane.m_plane.CreateFromPoints(OnUtil.On_origin, pos_x, pos_y)
    Else
      Return IRhinoCommand.result.failure
    End If


    view.ActiveViewport().PushConstructionPlane(cplane)
    view.Redraw()
    Return IRhinoCommand.result.success
  End Function

C#

  public override IRhinoCommand.result RunCommand(IRhinoCommandContext context)
  {
    MRhinoView view = RhUtil.RhinoApp().ActiveView();
    if( view == null )
      return IRhinoCommand.result.failure;


    MRhinoGetOption go = new MRhinoGetOption();
    go.SetCommandPrompt( "Select a construction plane" );
    int back_option   = go.AddCommandOption( new MRhinoCommandOptionName("Back") );
    int bottom_option = go.AddCommandOption( new MRhinoCommandOptionName("Bottom") );
    int front_option  = go.AddCommandOption( new MRhinoCommandOptionName("Front") );
    int left_option   = go.AddCommandOption( new MRhinoCommandOptionName("Left") );
    int right_option  = go.AddCommandOption( new MRhinoCommandOptionName("Right") );
    int top_option    = go.AddCommandOption( new MRhinoCommandOptionName("Top") );
    go.GetOption();
    if (go.CommandResult() != IRhinoCommand.result.success)
      return go.CommandResult();


    IRhinoCommandOption opt = go.Option();
    if (opt == null)
      return IRhinoCommand.result.failure;
    int option_index = opt.m_option_index;
    On3dmConstructionPlane cplane =
      new On3dmConstructionPlane(view.ActiveViewport().ConstructionPlane());
    On3dPoint pos_x = new On3dPoint(1, 0, 0);
    On3dPoint neg_x = new On3dPoint(-1, 0, 0);
    On3dPoint pos_y = new On3dPoint(0, 1, 0);
    On3dPoint neg_y = new On3dPoint(0, -1, 0);
    On3dPoint pos_z = new On3dPoint(0, 0, 1);


    if( option_index == back_option )
      cplane.m_plane.CreateFromPoints(OnUtil.On_origin, neg_x, pos_z);
    else if( option_index == bottom_option )
      cplane.m_plane.CreateFromPoints(OnUtil.On_origin, neg_x, pos_y);
    else if( option_index == front_option )
      cplane.m_plane.CreateFromPoints(OnUtil.On_origin, pos_x, pos_z);
    else if( option_index == left_option )
      cplane.m_plane.CreateFromPoints(OnUtil.On_origin, neg_y, pos_z);
    else if( option_index == right_option )
      cplane.m_plane.CreateFromPoints(OnUtil.On_origin, pos_y, pos_z);
    else if( option_index == top_option )
      cplane.m_plane.CreateFromPoints(OnUtil.On_origin, pos_x, pos_y);
    else
      return IRhinoCommand.result.failure;


    view.ActiveViewport().PushConstructionPlane( cplane );
    view.Redraw();
    return IRhinoCommand.result.success;
  }
rename · changes · history · subscriptions · lost and found · references · file upload