Ingrandire lista livelli

Salve,
ho piccolo problema di visualizzazione della lista dei livelli nella barra di controllo che di default appare in basso nello schermo (non so esattamente come si chiama, per intenderci è la barra dove ci sono COORDINATE, LISTA LIVELLI, ORTO, REGISTRA STORIA, USO MEMORIA ecc.).

PREMESSE:

  1. Generalmente lavoriamo su un unico modello in più persone.
  2. Spesso è necessario capire in che livello si trova un oggetto
  3. Per questo scopo è molto utile la barra in fondo (quella che citavo prima) poichè appare il nome del livello dell’oggetto che hai selezionato

PROBLEMA:
Quando il nome del Livello e/o del Sottolivello sono leggermente più lunghi la visualizzazione del nome del livello nella barra è tagliata. In questo modo si perde tutta la comodità, il nome del sottolivello è coperto. Per altro non dipende dalla grandezza dello schermo; io utilizzo un monitor a 24" e i tasti di quella barra impegnano solo per 2/3 la larghezza dello schermo.

DOMANDA:
C’è un modo per ingrandire la porzione destinata alla visualizzazione dei livelli?

Ciao

Vero, ma se ci passo sopra con il cursore del mouse, qui mi mostra il nome completo.

Anche da te funziona cosi’ ?

… Comunque mi sembra utile capire i layer su cui sono i vari oggetti.
Quindi ho provato a fare (anche per mio uso personale) un semplice script.
Casomai interessi a qualcuno, eccolo:

Purtroppo non e’ automatico come il nome che compare nella status bar, bisogna lanciarlo appositamente …

Se si preseleziona, mostra i nomi dei layer al centro degli oggetti.
Se no, si seleziona un oggetto alla volta e si vede il nome del layer dove si clicca.

import rhinoscriptsyntax as rs
import scriptcontext

def main():
  pre = rs.SelectedObjects()
  rs.UnselectAllObjects()
  if pre:
    dots = []
    rs.EnableRedraw( False )
    for gid in pre:
      ly = rs.ObjectLayer( gid )
      bb = rs.BoundingBox( gid )
      ce = ( bb[ 0 ] + bb[ 6 ] ) / 2.0
      col = rs.ObjectColor( gid )
      dot = rs.AddTextDot( ly, ce )
      rs.ObjectColor( dot, col )
      dots.append( dot )
    rs.EnableRedraw( True )
    rs.GetString( 'OK ?' )
    rs.DeleteObjects( dots )
    return
  dot = None
  while True:
    scriptcontext.escape_test()
    tup = rs.GetObjectEx( '?' )
    if dot:
      rs.DeleteObject( dot )
    if not tup:
      break
    gid = tup[ 0 ]
    pik = tup[ 3 ]
    ly = rs.ObjectLayer( gid )
    pla = rs.ViewCameraPlane()
    tar = rs.ViewTarget()
    dd = pla.Origin.DistanceTo( tar )
    dy = pla.YAxis * dd * 0.02
    dot = rs.AddTextDot( ly, pik + dy )
    col = rs.ObjectColor( gid )
    rs.ObjectColor( dot, col )

main()

Enjoy :wink:

EDIT: script aggiornato

Ciao Emilio,
innanzi tutto grazie per la risposta.

Quando metto il cursore sopra alla scritta (tagliata) mi appare il nome del livello corrente, qualsiasi esso sia! Molto strano…
Es. Seleziono un oggetto, mi appare il nome del livello dell’oggetto “Parapetto esterno”, metto il mouse sopra e mi appare il nome del livello corrente, in questo caso “Predefinito”.

Lo script sembra interessante…
Devo chiederti però se puoi indicarmi la procedura per attivarlo, purtroppo non sono ancora molto esperto.
Te ne sarei grato…

Mah, qui mi mostra il layer dell’oggetto (Rhino 6.4 in inglese) …
Non vorrei ci fosse qualcosa da settare … non saprei, mi spiace.

Quanto allo script, non mi stupisce che tu non sappia come usarlo.
Spiegare come usare gli script e’ una cosa che McNeel non ama fare … :smile:

Il comando e’ _RunPythonScript
Se guardi nello help, ti dice poco niente …

C’e’ questo:

… Che pero’ non dice tutto …

Comunque: se esegui il comando _RunPythonScript , lui ti chiede di selezionare un file da eseguire.
E’ un sistema che va bene per provare uno script, ma e’ scomodo per un uso regolare.

Per quello, devi lanciare il comando con il ‘meno’ davanti:
_-RunPytonScript
( Cosa che consente di inserire nel comando lo script o il nome del file )

e lo puoi inserire in un pulsante o farci una macro.
Ci sono due modi di procedere (parliamo ad esempio del pulsante):
Puoi copiare lo script nel pulsante, dopo _-RunPythonScript , inserendolo tra parentesi:
( Le quali parantesi vanno separate con spazi … eh, complicata la vita :wink: )
ad esempio nel pulsante, come comando puoi scrivere:

_-RunPythonScript ( print'Ciao !' )

e quando cilcchi il pulsante, lui scrive “Ciao !” nella command area. :grinning:
Tutto questo si puo’ scrivere su diverse linee, cioe’ andando a capo, ad esempio:

_-RunPythonScript 
(
print '1...'
print '2...'
print '3...'
print'Ciao !'
 )

… con il risultato che immagini. :slight_smile:

Oppure possiamo salvare lo script in un file e richiamare il file nel comando del pulsante, cosi’:

_-RunPythonScript  NOME_FILE 

Dove NOME_FILE puo’ essere o il percorso completo del file, e siamo a posto cosi’.

Oppure puo’ essere solo un nome come prova.py ( E’ meglio usare un’estensione “.py” per gli script in Python )
Pero’ dobbiamo dire a Rhino dove cercare lo script.
E per questo, per quanto ne so, c’e’ un modo assurdamente complicato.
( Speravo che Rhino 6 semplificasse la cosa, ma non sembra … )
Bisogna usare il comando _EditPythonScript , che tra l’altro permette anche lui di eseguire uno script.

Dicevo, per comunicare a Rhino la cartella dove hai salvato lo script,
lanci _EditPythonScript , apparira’ una finestra.
Dal menu’: Tools => Options…
Altra finestra: in alto, tag Files
Dov’e’ scritto “Module Search Paths” , sotto l’elenco dei percorsi, prima icona a sinistra: Add to search paths
Ci clicchi sopra e puoi (finalmente) inserire il percorso dove hai salvato lo script.
Per fortuna Rhino si ricorda questi percorsi, quando lo rilanci e’ tutto a posto. :slight_smile:

Dicevo che _EditPythonScript puo’ anche servire per lanciare uno script. Si fa cosi’:

Menu’: File => Open…
e importi lo script (che poi vedi nel text editor)
Per eseguirlo, in Rhino 5 c’era un comando da menu’, in Rhino 6 e’ sparito. :open_mouth:
Devi premere Ctrl+F5

Se ti sembra che l’uso degli script non sia incoraggiato … siamo in due. :wink:

Ciao

ciao Emilio ,
grazie per lo script , che sto usando e funziona .
Nel mio caso , sarebbe utile che selezionasse il livello che compare nel tag .
E’ possibile modificare il file ?
Se si come?
Grazie , ciao , Andrea

Ciao Andrea

Vorresti selezionare gli oggetti di quel livello ?

Oppure selezionare, cioe’ evidenziare in blu, il livello nell’elenco dei livelli a video ?

Se e’ la seconda, non so proprio come fare.
Non ho mai trovato un modo … :unamused:

ciao Emilio ,

siccome la sfiga non si smentisce mai , vorrei proprio evidenziare in blu , o attivare ,

il livello corrispondente .

grazie comunque ,

ciao , Andrea

Supponevo che fosse cosi’.
E’ una cosa che ho tentato anch’io, invano, di fare in passato.

Secondo me sarebbe utile poter selezionare, deselezionare e ‘leggere’ la selezione dei vari livelli.
Con gli script si potrebbero fare parecchie cose, e sarebbe comodo vedere a colpo d’occhio qual’e’ o quali sono i livelli in questione, nonche’ selezionare col mouse i livelli voluti per una certa operazione.
( Analogamente a quanto facciamo per gli oggetti. )

… Pazienza … :unamused:

Unico modo credo sia tramite i tools del layer manager che ti permettono di evidenziare i layer che contengono gli oggetti selezionati… ma non credo esista nessun modo per bypassare i comandi del layer manager direttamente da riga di comando (o almeno non l’ho trovato…).
Anzi, mi correggo subito:
da Rhino Script si può fare con il comando
Rhino.SelectLayers
Ti evidenzia in blu i layer visualizzati nel layer manager.
Dovrebbe esserci anche in python presumo…

Meno male che c’e’ Lucio ! :grinning:
Grazie !

( Ho visto che c’e’ anche Rhino.SelectedLayers :slight_smile: )

In Python pare non ci sia ancora, ma serve anche quello in VBS …

@Andrea , prova questo:

c5-objlayerAT.py (1,3 KB)

( Grazie alle preziose indicazioni di Lucio )

Ciao !

1 Mi Piace

:grin: dovremmo essere a : Emilio = 100 ; Lucio =1…
Ne ho da recuperare altre 99 per pareggiare i conti! :wink:

Non mi risulta …
Comunque potremmo sempre convertire in birrette …:beer::smile:

Mi pare ci sia la funzione Rhino.toBeers… :joy:
Potrei fare un altro sondaggio… ma salterebbe fuori che dovrebbe sempre pagare @giuseppe … (quel bischero, si dà alla macchia da quando ha intuito il tranello del sondaggio! :face_with_raised_eyebrow: :smile:)

Come la vedete se per un oggetto: cliccandoci sopra e tenendo premuto il bottone mouse venisse fuori come cursor tooltip il layer?

Ciao Giuspa !

Se ho capito bene.
… Mostrare il Selection Menu anche per oggetti singoli (dopo un tempo stabilito).

Buona idea :slight_smile:

Io la vedrei bene che le funzioni del layer manager potessero essere richiamate da comando (cioè facendo il comando con il trattino ti vengono proposti anche i comandi “Tools”).
Ti associ il comando (macro) ad un pulsante FXX e, una volta selezionati gli oggetti, selezioni i relativi layer o fai quello che ti serve.
Tenere premuto il pulsante sull’oggetto va bene come visualizzazione ma è limitante (secondo me).

si esatto. Se su un oggetto anche selezionato clicchi e tieni premuto il colore si evidenzia e si attivano gli osnap per esempio. In quella circostanza potrebbe presentarsi il layer name.

Eh… posso solo sottoscrivere. :grinning:
( Secondo il mio psicopatico parere … TUTTO in Rhino dovrebbe avere il suo bel comando, scriptabile of course )

EDIT:

… e tutte le informazioni / tutti i dati dovrebbero poter essere visualizzati, salvati e riutilizzati …
Va beh, OK, per adesso mi fermo qui . :smile:

1 Mi Piace