Description

Paramètre le mode d’affichage de tous les details (sur tous les layouts). Utile pour rapidement paramétrer tous les details de tous les layouts sur “Hidden”, le mode d’affichage de VisualArq.

Voir aussi le script SetDetailDisplayMode.

Le script suivant fonctionne sur :

  • Rhino pour Windows ;
  • Rhino pour macOS ;
  • Le mode d’affichage “Hidden” est spécifique à VisualArq, il requiert donc l’installation du plugin VisualArq.

Script par MLAV.LAND, sous licence GNU GPL 3.

Code

import rhinoscriptsyntax as rs
import scriptcontext as sc
import Rhino
 
def SetDetailDisplayModesForAllLayouts():
    modes = Rhino.Display.DisplayModeDescription.GetDisplayModes()
 
    mode = None
    modeNum = 0
    if 'DETAIL_MODE' in sc.sticky:
        modeNum = sc.sticky['DETAIL_MODE']
 
    if len(modes) > 1:
        go = Rhino.Input.Custom.GetOption()
        go.SetCommandPrompt("Select display mode")
        str_modes = [m.EnglishName.replace(" ", "").replace("-", "") for m in modes]
        go.AddOptionList("DisplayMode", str_modes, modeNum)
        
        if go.Get() == Rhino.Input.GetResult.Option:
            modeNum = go.Option().CurrentListOptionIndex
            mode = modes[modeNum]
            sc.sticky['DETAIL_MODE'] = modeNum
    else:
        mode = modes[0] if modes else None
 
    if not mode:
        return
 
    # Disable screen redraw to prevent 'flashing'
    sc.doc.Views.RedrawEnabled = False
    
    try:
        for pageView in sc.doc.Views.GetPageViews():
            pageView.SetPageAsActive()
            dets = pageView.GetDetailViews()
            if not dets: continue
 
            for det in dets:
                pageView.SetActiveDetail(det.Id)
                det.Viewport.DisplayMode = mode
                det.CommitViewportChanges()
                pageView.SetPageAsActive()
    finally:
        # Re-enable screen redraw and refresh all views
        sc.doc.Views.RedrawEnabled = True
        sc.doc.Views.Redraw()
 
if __name__ == '__main__':
    SetDetailDisplayModesForAllLayouts()