Description

Set the display mode of all detail view (on a layout). Useful to quickly set all detail views to “Hidden” display mode when using VisualArq.

See also

Author and license

Script by MLAV.LAND, licensed under the GNU GPL 3 License.

Code

import rhinoscriptsyntax as rs
import scriptcontext as sc
import Rhino
 
 
def SetDetailDisplayModes():
    modes = Rhino.Display.DisplayModeDescription.GetDisplayModes()
    
    mode = None
    modeNum = 0
    if sc.sticky.has_key('DETAIL_MODE'):
        modeNum = sc.sticky['DETAIL_MODE']
 
    if len(modes) == 1:
        mode = modes[0]
    else:
        mode = modes[modeNum]
        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, modeNum)
        
        if go.Get()==Rhino.Input.GetResult.Option:
            mode = modes[go.Option().CurrentListOptionIndex]
            modeNum = list(modes).index(mode)
            sc.sticky['DETAIL_MODE'] = modeNum
    if not mode: return
    
    view = sc.doc.Views.ActiveView
    
    if isinstance(view, Rhino.Display.RhinoPageView):
        dets = view.GetDetailViews() 
        if not dets: return
        
    for det in dets:
        view.SetActiveDetail(det.Id)
        rs.ViewDisplayMode( mode = mode.EnglishName)
        #det.Viewport.DisplayMode = mode
        pass
    
    view.SetPageAsActive()
    sc.doc.Views.Redraw()
    pass
 
    print("Display mode applied to layout :)")
    
if __name__ == '__main__':SetDetailDisplayModes()