RhinoCommon API
ObjectAttributesSetDisplayModeOverride Method (DisplayModeDescription, Guid) |
By default, objects are drawn using the display mode of the viewport that
the object is being drawn in. Setting a specific display mode, instructs
Rhino to always use that display mode, regardless of the viewport's mode.
This version sets a display mode for a specific viewport.
Namespace: Rhino.DocObjects
Assembly: RhinoCommon (in RhinoCommon.dll)
Since: 5.0

public bool SetDisplayModeOverride( DisplayModeDescription mode, Guid rhinoViewportId )
Public Function SetDisplayModeOverride ( mode As DisplayModeDescription, rhinoViewportId As Guid ) As Boolean
Parameters
- mode
- Type: Rhino.DisplayDisplayModeDescription
The display mode. - rhinoViewportId
- Type: SystemGuid
The Rhino viewport ID.
Return Value
Type: Booleantrue on success.

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