RhinoCommon API
GetBaseClassAddOptionList Method (LocalizeStringPair, IEnumerableLocalizeStringPair, Int32) |
Adds a command line list option.
Namespace: Rhino.Input.Custom
Assembly: RhinoCommon (in RhinoCommon.dll)
Since: 5.0

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: Int32option index value (>0) or 0 if option cannot be added.

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()
