Vecchiomcomando di rhino2.0

Ciao a tutti, pongo una domanda magari banale ma provo ugualmente, in rhino 2 (che ancora ricordo con affetto) usavo molto nella modellazione il comando ombreggiatura degli elementi selezionati per controllarli velocemente e di frequente, dalla v3 in poi questo comando è stato leggermente modificato ma da subito non mi è più piaciuto al punto di non usarlo proprio…
La differenza è che adesso se seleziono un oggetto e attivo il comando scompaiono tutti gli altri oggetti e lo shading avviene con gli elementi selezionati (per intenderci con le linee gialle) che mi disturbano nella visualizzazione… prima se selezionavo il comando gli oggetti attivi venivano ombreggiati ma restavano visibili come wireframe tutte le altre entitá, inoltre quando cliccavo in un area vuota il comando si disattivava… mi trovavo decisamente meglio… qualcuno sase sia possibile ripristinarne il funzionamento? Grazie

Ciao Marco

… se vuoi provare con questo …

import rhinoscriptsyntax as rs

def main():
  gids = rs.GetObjects( 'Objects to shade ?', preselect = True )
  if not gids:
    return
  rs.UnselectAllObjects()
  rs.SelectObjects( gids )
  rs.Command( '_SetObjectDisplayMode _M _S' )
  rs.UnselectAllObjects()
  rs.GetPoint( 'Pick to exit' )
  rs.UnselectAllObjects()
  rs.SelectObjects( gids )
  rs.Command( '_SetObjectDisplayMode _M _U' )
  rs.UnselectAllObjects()

main()

Ciao

A parte lo script che ti ha inviato Emilio, volevo capire con che tipo di settaggio stai lavorando visto che qui mi pare di che funzioni come ci si aspetterebbe:

Attivo lo shade solamente per gli oggetti selezionati

Nelle impostazioni dello Shade posso decidere se vedere il wireframe in versione Xray dell’oggetto selezionato oppure no

Quando seleziono gli oggetti questi assumono la modalità shade (rimanendo colorati di giallo ovviamente) e quando li deseleziono ritornano in wireframe mentre il resto degli oggetti rimane visibile in wireframe.

ciao a tutti, scusate ho fatto un pò di confusione, il vecchio comando ombreggiava gli oggetti selezionati senza visualizzare gli altri oggetti attorno (neanche come wireframe) ma senza tenere la selezione attiva (gialla per intenderci) e appena si cliccava fuori campo la visualizzazione tornava a quella wireframe normale…

Quindi era un “shade & show only selected objects” giusto?
Sinceramente come tipo di visualizzazione standard non me lo ricordo…
Magari si riesce ad ottenere un metodo di visualizzazione simile… devo provare…

grazie Emilio per la tempestività di risposta e per lo script
faccio confusione perchè ormai sono davvero diversi anni che non ho più installato la v2 e quindi non ricordo con esattezza, so che era il comando di default per ombreggiare la selezione attiva ed era molto più congeniale di quanto diventato dalla 3 in poi, almeno per le mie abitudini
infatti da quando sono passato alla 5 definitivamente il comando in questione non l’ho mai adoperato perchè non mi ci trovavo…
nella due era come un utility per controllare al volo l’andamento delle suerfici ci ciò che si voleva anche in una scena affollata e appena si cliccava fuori campo ripristinavi la visualizzazione in wirefame
se risalgo alla vecchia versione 2 la reinstallo giusto per ricordarmi più esattamente di cosa si trattava
comunque grazie a tutti

Figurati :slight_smile:
Per me sono passati parecchi anni da quando usavo la magica 2.0 … e non mi ricordo di questo comando ( gia’ allora perdevo pezzi per strada … :smile: )
Mi ricordo solo di Shade (se non vado errato), ma mi sembra che ombreggiasse tutto quanto, credo fosse l’unica ombreggiatura disponibile allora, non c’era modo di lavorare con ombreggiatura permanente … ma potrei fare parecchia confusione, ormai ho la memoria piuttosto random …

Ciao

OT:
scrivo dal pc di casa e non riuscendo a ricordare la vecchia password per il forum (o una cosa del genere) ho dovuto cambiarla …
Ma ci ho messo un po’ a capire che secondo loro una password di 10 caratteri e’ troppo ‘weak’, naturalmente non ti dicono cosa c’e’ che non va, solo che e’ ‘weak’ e ti ordinano di usarne un’altra …
Eh, certe cose andavano meglio ai tempi di Rhino 2 …

confermo, ho avuto modo di riprovare il comando della 2
lo shading della selezione attiva agisce nascondendo tutto il resto e senza attivare il wireframe degli elementi selezionati (non diventano gialli) così da permetterti di visionare senza disturbi e ruotare la vista… appena si clicca fuori campo la visualizzazione ritorna come prima (va beh con il tasto dx ripeto il comando adesso e swiccia in off il comando di prima e quindi è uguale…)
la differenza sta nel non vedere altro intorno e soprattutto nel non avere gialli selezionati i wireframe degli elemnti rendendo poco scrutabile le superfici…

Credo che questa macro da mettere in un bottone su tasto SX del mouse

!_select _pause
_invert
_hide
_shade

e questa su tasto DX
!_show

Facciano cio’ volevi …se ho capito bene…(spero :sunglasses:)

Ciao Mario, purtroppo no, con la sequenza che indichi si nascondono gli oggetti che poi facendo riapparire ricompaiono ma con anche tutte le entitá che erano state nascoste precedentemente…

Ma giá che ci sono senza uscire troppo dalla domanda di partenza, c’è uno script che permette di non far dare un rigore a partita è un espulsione a favore della Juventus? Magari anche solo negli ultimi minuti di partita? :disappointed:

Se e’ questo il problema, prova cosi’, se vuoi:

import rhinoscriptsyntax as rs

def main():
  gids = rs.GetObjects( 'Objects to shade ?', preselect = True )
  if not gids:
    return
  rs.UnselectAllObjects()
  rs.EnableRedraw( False )
  rs.SelectObjects( gids )
  rs.Command( '_SetObjectDisplayMode _M _S' )
  rs.Command( '_Invert' )
  hidden = rs.SelectedObjects()
  rs.UnselectAllObjects()
  rs.HideObjects( hidden )
  rs.EnableRedraw( True )
  rs.GetPoint( 'Pick to exit' )
  rs.UnselectAllObjects()
  rs.SelectObjects( gids )
  rs.Command( '_SetObjectDisplayMode _M _U' )
  rs.UnselectAllObjects()
  rs.ShowObjects( hidden )

main()

ho modificato lo script, ma non so se funziona, qui a casa non ho Rhino … :smiley:

Ciao

ciao emilio,
per inserire il tuo script in un comando della toolbar editando ad esempio il comando shade selected, non si può copiare semplicemente il testo… come dovrei fare?
grazie

Ciao Marco

qui c’e’ qualcosa:


… ma mi sembra che manchi quello che serve a te, cioe’ come inserire il testo dello script nel pulsante, se si vuole fare in questo modo ( chissa’ perche’ … come al solito hanno paura di spiegare )

Dovrebbe funzionare cosi’, sempre usando il comando RunPythonScript
Nel pulsante scrivi:

-RunPythonScript (

QUI INSERISCI LO SCRIPT

)

Cioe’ scrivi RunPythonScript e poi il testo dello script tra parentesi tonde.
Se non ricordo male e’ meglio inserire almeno uno spazio prima e dopo le parentesi …
Rhino woodoo … :smile:

Ciao

Ok! Domani provo a farlo, grazie!

ciao emilio, lo script funziona bene, solo un piccolo accorgimento, se son presenti degli oggetti lockettati questi non spariscono dalla scena nell’utilizzo del comando e rendono la visualizzazione degli oggetti selezionati non libera da ostacoli…
ma già così va molto bene, grazie!

… E cosi’ ? … :slight_smile:

import rhinoscriptsyntax as rs
import Rhino
import scriptcontext

def LockedObjects():
    settings = Rhino.DocObjects.ObjectEnumeratorSettings()
    settings.NormalObjects = False
    settings.LockedObjects = True
    settings.HiddenObjects = False
    settings.IncludeLights = False
    settings.IncludeGrips = False
    settings.ReferenceObjects = False
    items = scriptcontext.doc.Objects.GetObjectList(settings)
    return [item.Id for item in items]

def main():
  gids = rs.GetObjects( 'Objects to shade ?', preselect = True )
  if not gids:
    return
  rs.UnselectAllObjects()
  rs.EnableRedraw( False )
  rs.SelectObjects( gids )
  rs.Command( '_SetObjectDisplayMode _M _S' )
  rs.Command( '_Invert' )
  hidden = rs.SelectedObjects()
  locked = set( LockedObjects() ) & set( rs.VisibleObjects() )
  rs.UnlockObjects( locked )
  rs.UnselectAllObjects()
  rs.HideObjects( hidden )
  rs.HideObjects( locked )
  rs.EnableRedraw( True )
  rs.GetPoint( 'Pick to exit' )
  rs.UnselectAllObjects()
  rs.SelectObjects( gids )
  rs.Command( '_SetObjectDisplayMode _M _U' )
  rs.UnselectAllObjects()
  rs.ShowObjects( hidden )
  rs.ShowObjects( locked )
  rs.LockObjects( locked )

main()

PS
Per gli scriptomani: (per curiosita’) …

Io nella documentazione vedo
rhinoscripsyntax.LockedObjects()
… ma in realta’ la funzione non esiste … ma qui ho un Rhino vecchiotto.
Nelle ultime release rs.LockedObjects() c’e’ ?
Grazie

ho provato ma mi ferma il comando con un errore…
riporto la finestra di errore e quella in cui ho copiato lo script nel comando (tasto dx)
ciao

Ma … in effetti l’indentazione non era il massimo … anche se da file funzionava.
Forse inserendolo nel pulsante non gli piace …

Provo a correggere:

import rhinoscriptsyntax as rs
import Rhino
import scriptcontext

def LockedObjects():
  settings = Rhino.DocObjects.ObjectEnumeratorSettings()
  settings.NormalObjects = False
  settings.LockedObjects = True
  settings.HiddenObjects = False
  settings.IncludeLights = False
  settings.IncludeGrips = False
  settings.ReferenceObjects = False
  items = scriptcontext.doc.Objects.GetObjectList(settings)
  return [item.Id for item in items]

def main():
  gids = rs.GetObjects( 'Objects to shade ?', preselect = True )
  if not gids:
    return
  rs.UnselectAllObjects()
  rs.EnableRedraw( False )
  rs.SelectObjects( gids )
  rs.Command( '_SetObjectDisplayMode _M _S' )
  rs.Command( '_Invert' )
  hidden = rs.SelectedObjects()
  locked = set( LockedObjects() ) & set( rs.VisibleObjects() )
  rs.UnlockObjects( locked )
  rs.UnselectAllObjects()
  rs.HideObjects( hidden )
  rs.HideObjects( locked )
  rs.EnableRedraw( True )
  rs.GetPoint( 'Pick to exit' )
  rs.UnselectAllObjects()
  rs.SelectObjects( gids )
  rs.Command( '_SetObjectDisplayMode _M _U' )
  rs.UnselectAllObjects()
  rs.ShowObjects( hidden )
  rs.ShowObjects( locked )
  rs.LockObjects( locked )

main()

oh yeah!
funzia!
grazie Emiio