Site Tools


Sample: Modifying Advanced Display Settings

C#

// The following example code demonstrates how to modify advanced display settings using
// the Rhino SDK. In this example, a display mode's mesh wireframe thickness (in pixels)
// will be modified.
public static Rhino.Commands.Result AdvancedDisplay(Rhino.RhinoDoc doc)
{
  // Use the display attributes manager to build a list of display modes.
  // Note, these are copies of the originals...
  DisplayModeDescription[] display_modes = DisplayModeDescription.GetDisplayModes();
  if( display_modes==null || display_modes.Length<1 )
    return Rhino.Commands.Result.Failure;
 
  // Construct an options picker so the user can pick which
  // display mode they want modified
  Rhino.Input.Custom.GetOption go = new Rhino.Input.Custom.GetOption();
  go.SetCommandPrompt("Display mode to modify mesh thickness");
  List<int> opt_list = new List<int>();
 
  for( int i=0; i<display_modes.Length; i++ )
  {
    string english_name = display_modes[i].EnglishName;
    english_name = english_name.Replace("_", "");
    english_name = english_name.Replace(" ", "");
    english_name = english_name.Replace("-", "");
    english_name = english_name.Replace(",", "");
    english_name = english_name.Replace(".", "");
    int index = go.AddOption(english_name);
    opt_list.Add(index);
  }
 
  // Get the command option
  go.Get();
  if( go.CommandResult() != Rhino.Commands.Result.Success )
    return go.CommandResult();
 
  int selected_index = go.Option().Index;
  DisplayModeDescription selected_description = null;
  for( int i=0; i<opt_list.Count; i++ )
  {
    if( opt_list[i]==selected_index )
    {
      selected_description = display_modes[i];
      break;
    }
  }
 
  // Validate...
  if( selected_description==null )
    return Rhino.Commands.Result.Failure;
 
  // Modify the desired display mode. In this case, we
  // will just set the mesh wireframe thickness to zero.
  selected_description.DisplayAttributes.MeshSpecificAttributes.MeshWireThickness = 0;
  // Use the display attributes manager to update the display mode.
  DisplayModeDescription.UpdateDisplayMode(selected_description);
 
  // Force the document to regenerate.
  doc.Views.Redraw();
  return Rhino.Commands.Result.Success;
}

VB.NET

' The following example demonstrates how to modify advanced display settings using
' RhinoCommon. In this example, a display mode's mesh wireframe thickness (in pixels)
' will be modified.
Public Shared Function AdvancedDisplay(ByVal doc As Rhino.RhinoDoc) As Rhino.Commands.Result
  ' Use the display attributes manager to build a list of display modes.
  ' Note, these are copies of the originals...
  Dim display_modes As DisplayModeDescription() = DisplayModeDescription.GetDisplayModes()
  If display_modes Is Nothing OrElse display_modes.Length < 1 Then
    Return Rhino.Commands.Result.Failure
  End If
 
  ' Construct an options picker so the user can pick which
  ' display mode they want modified
  Dim go As New Rhino.Input.Custom.GetOption()
  go.SetCommandPrompt("Display mode to modify mesh thickness")
  Dim opt_list As New List(Of Integer)()
 
  For i As Integer = 0 To display_modes.Length - 1
    Dim english_name As String = display_modes(i).EnglishName
    english_name = english_name.Replace("_", "")
    english_name = english_name.Replace(" ", "")
    english_name = english_name.Replace("-", "")
    english_name = english_name.Replace(",", "")
    english_name = english_name.Replace(".", "")
    Dim index As Integer = go.AddOption(english_name)
    opt_list.Add(index)
  Next
 
  ' Get the command option
  go.[Get]()
  If go.CommandResult() <> Rhino.Commands.Result.Success Then
    Return go.CommandResult()
  End If
 
  Dim selected_index As Integer = go.[Option]().Index
  Dim selected_description As DisplayModeDescription = Nothing
  For i As Integer = 0 To opt_list.Count - 1
    If opt_list(i) = selected_index Then
      selected_description = display_modes(i)
      Exit For
    End If
  Next
 
  ' Validate...
  If selected_description Is Nothing Then
    Return Rhino.Commands.Result.Failure
  End If
 
  ' Modify the desired display mode. In this case, we
  ' will just set the mesh wireframe thickness to zero.
  selected_description.DisplayAttributes.MeshSpecificAttributes.MeshWireThickness = 0
  ' Use the display attributes manager to update the display mode.
  DisplayModeDescription.UpdateDisplayMode(selected_description)
 
  ' Force the document to regenerate.
  doc.Views.Redraw()
  Return Rhino.Commands.Result.Success
End Function

Python

import Rhino
import scriptcontext
 
# The following example demonstrates how to modify advanced display settings
# using RhinoCommon. In this example, a display mode's mesh wireframe thickness
# (in pixels) will be modified.
def AdvancedDisplay():
    # Use the display attributes manager to build a list of display modes.
    # Note, these are copies of the originals...
    display_modes = Rhino.Display.DisplayModeDescription.GetDisplayModes()
    if not display_modes: return Rhino.Commands.Result.Failure
 
    # Construct an options picker so the user can pick which
    # display mode they want modified
    go = Rhino.Input.Custom.GetOption()
    go.SetCommandPrompt("Display mode to modify mesh thickness")
    opt_list = []
    for i, mode in enumerate(display_modes):
        english_name = mode.EnglishName
        english_name = english_name.translate(None, "_ -,.")
        opt_list.append( go.AddOption(english_name) )
 
    # Get the command option
    go.Get()
    if go.CommandResult()!=Rhino.Commands.Result.Success:
      return go.CommandResult();
 
    selected_index = go.Option().Index
    selected_description = None
    for i,option in enumerate(opt_list):
        if option==selected_index:
            selected_description = display_modes[i]
            break
    # Validate...
    if not selected_description: return Rhino.Commands.Result.Failure
 
    # Modify the desired display mode. In this case, we
    # will just set the mesh wireframe thickness to zero.
    selected_description.DisplayAttributes.MeshSpecificAttributes.MeshWireThickness = 0
    # Use the display attributes manager to update the display mode.
    Rhino.Display.DisplayModeDescription.UpdateDisplayMode(selected_description)
    # Force the document to regenerate.
    scriptcontext.doc.Views.Redraw()
    return Rhino.Commands.Result.Success
 
if __name__=="__main__":
    AdvancedDisplay()
developer/rhinocommonsamples/advanceddisplay.txt ยท Last modified: 2020/08/14 (external edit)