GetBaseClass.AddOptionList Method (LocalizeStringPair, IEnumerable(LocalizeStringPair), Int32)

GetBaseClassAddOptionList Method (LocalizeStringPair, IEnumerableLocalizeStringPair, Int32)

Adds a command line list option.

Namespace:  Rhino.Input.Custom
Assembly:  RhinoCommon (in RhinoCommon.dll)
Since: 5.0
Syntax
public int AddOptionList(
	LocalizeStringPair optionName,
	IEnumerable<LocalizeStringPair> listValues,
	int listCurrentIndex
)
Public Function AddOptionList ( 
	optionName As LocalizeStringPair,
	listValues As IEnumerable(Of LocalizeStringPair),
	listCurrentIndex As Integer
) As Integer

Parameters

optionName
Type: Rhino.UILocalizeStringPair
Must only consist of letters and numbers (no characters list periods, spaces, or dashes)
listValues
Type: System.Collections.GenericIEnumerableLocalizeStringPair
The string values.
listCurrentIndex
Type: SystemInt32
Zero based index of current option.

Return Value

Type: Int32
option index value (>0) or 0 if option cannot be added.
Examples
using System;
using Rhino;
using Rhino.Commands;
using Rhino.DocObjects;

partial class Examples
{
  public static Rhino.Commands.Result ObjectDisplayMode(Rhino.RhinoDoc doc)
  {
    const ObjectType filter = ObjectType.Mesh | ObjectType.Brep;
    ObjRef objref;
    Result rc = Rhino.Input.RhinoGet.GetOneObject("Select mesh or surface", true, filter, out objref);
    if (rc != Rhino.Commands.Result.Success)
      return rc;
    Guid viewportId = doc.Views.ActiveView.ActiveViewportID;

    ObjectAttributes attr = objref.Object().Attributes;
    if (attr.HasDisplayModeOverride(viewportId))
    {
      RhinoApp.WriteLine("Removing display mode override from object");
      attr.RemoveDisplayModeOverride(viewportId);
    }
    else
    {
      Rhino.Display.DisplayModeDescription[] modes = Rhino.Display.DisplayModeDescription.GetDisplayModes();
      Rhino.Display.DisplayModeDescription mode = null;
      if (modes.Length == 1)
        mode = modes[0];
      else
      {
        Rhino.Input.Custom.GetOption go = new Rhino.Input.Custom.GetOption();
        go.SetCommandPrompt("Select display mode");
        string[] str_modes = new string[modes.Length];
        for (int i = 0; i < modes.Length; i++)
          str_modes[i] = modes[i].EnglishName.Replace(" ", "").Replace("-", "");
        go.AddOptionList("DisplayMode", str_modes, 0);
        if (go.Get() == Rhino.Input.GetResult.Option)
          mode = modes[go.Option().CurrentListOptionIndex];
      }
      if (mode == null)
        return Rhino.Commands.Result.Cancel;
      attr.SetDisplayModeOverride(mode, viewportId);
    }
    doc.Objects.ModifyAttributes(objref, attr, false);
    doc.Views.Redraw();
    return Rhino.Commands.Result.Success;
  }
}
Imports Rhino
Imports Rhino.DocObjects

Partial Class Examples
  Public Shared Function ObjectDisplayMode(ByVal doc As Rhino.RhinoDoc) As Rhino.Commands.Result
    Dim rc As Rhino.Commands.Result
    Const filter As ObjectType = ObjectType.Mesh Or ObjectType.Brep
    Dim objref As ObjRef = Nothing
    rc = Rhino.Input.RhinoGet.GetOneObject("Select mesh or surface", True, filter, objref)
    If rc <> Rhino.Commands.Result.Success Then
      Return rc
    End If
    Dim viewportId As Guid = doc.Views.ActiveView.ActiveViewportID

    Dim attr As ObjectAttributes = objref.[Object]().Attributes
    If attr.HasDisplayModeOverride(viewportId) Then
      RhinoApp.WriteLine("Removing display mode override from object")
      attr.RemoveDisplayModeOverride(viewportId)
    Else
      Dim modes As Rhino.Display.DisplayModeDescription() = Rhino.Display.DisplayModeDescription.GetDisplayModes()
      Dim mode As Rhino.Display.DisplayModeDescription = Nothing
      If modes.Length = 1 Then
        mode = modes(0)
      Else
        Dim go As New Rhino.Input.Custom.GetOption()
        go.SetCommandPrompt("Select display mode")
        Dim str_modes As String() = New String(modes.Length - 1) {}
        For i As Integer = 0 To modes.Length - 1
          str_modes(i) = modes(i).EnglishName.Replace(" ", "").Replace("-", "")
        Next
        go.AddOptionList("DisplayMode", str_modes, 0)
        If go.[Get]() = Rhino.Input.GetResult.[Option] Then
          mode = modes(go.[Option]().CurrentListOptionIndex)
        End If
      End If
      If mode Is Nothing Then
        Return Rhino.Commands.Result.Cancel
      End If
      attr.SetDisplayModeOverride(mode, viewportId)
    End If
    doc.Objects.ModifyAttributes(objref, attr, False)
    doc.Views.Redraw()
    Return Rhino.Commands.Result.Success
  End Function
End Class
Python
import Rhino
import scriptcontext

def ObjectDisplayMode():
    filter = Rhino.DocObjects.ObjectType.Brep | Rhino.DocObjects.ObjectType.Mesh
    rc, objref = Rhino.Input.RhinoGet.GetOneObject("Select mesh or surface", True, filter)
    if rc != Rhino.Commands.Result.Success: return rc;
    viewportId = scriptcontext.doc.Views.ActiveView.ActiveViewportID

    attr = objref.Object().Attributes
    if attr.HasDisplayModeOverride(viewportId):
        print "Removing display mode override from object"
        attr.RemoveDisplayModeOverride(viewportId)
    else:
        modes = Rhino.Display.DisplayModeDescription.GetDisplayModes()
        mode = None
        if len(modes) == 1:
            mode = modes[0]
        else:
            go = Rhino.Input.Custom.GetOption()
            go.SetCommandPrompt("Select display mode")
            str_modes = []
            for m in modes:
                s = m.EnglishName.replace(" ","").replace("-","")
                str_modes.append(s)
            go.AddOptionList("DisplayMode", str_modes, 0)
            if go.Get()==Rhino.Input.GetResult.Option:
                mode = modes[go.Option().CurrentListOptionIndex]
        if not mode: return Rhino.Commands.Result.Cancel
        attr.SetDisplayModeOverride(mode, viewportId)
    scriptcontext.doc.Objects.ModifyAttributes(objref, attr, False)
    scriptcontext.doc.Views.Redraw()


if __name__=="__main__":
    ObjectDisplayMode()
See Also