Domanda sulla gestione dei layer

ciao a tutti, pongo una domanda che spero possa essere utile anche ad altri utenti

per riorganizzare il file totale verso la fine di un lavoro mi trovo a volte in questa situazione:
_ho suddiviso diversi oggetti in layer nominati per tipo di materiale
_decido (anche per utilità in fase di rendering) di generare ulteriori layer per visualizzare solo certe zone dell’intero progetto/assieme
_esigenza di spostare gli oggetti di pertinenza di una zona di progetto nel relativo layer zona appena generato ma come sottolayer mantenendone quindi la suddivisione precedentemente fatta per materiali
_replicare questa operazione per tutte le zone layer che ci possono essere

spero di essermi spiegato

attualmente l’unico modo che ho trovato è quello di aprire un file nuovo vuoto di rhino in parallelo e copiare una zona alla volta dal file di lavoro a quello nuovo e qui spostare tutto quello che man mano copio (le varie zone) in nuovi layer così di fatto ottenendo ad esempio un layer “sopra” con i suoi sotto layer (acciaio, plastica, cristallo, gomma, ecc.), un layer “sotto” con i suoi sotto layer (acciaio, plastica, cristallo, gomma, ecc.) e così via…

chiedo se esiste un modo più veloce per poter fare la stessa cosa senza ricorrere ad una copia di rhino aperta con file vuoto perchè a volte l’operazione di copia incolla riguarda file pesanti e quindi il tutto diventa un pò lento…

grazie

già che ho aperto il topic chiedo anche se sia possibile associare ad una combinazione di tasti l’attivazione/disattivazione del project

Come hai già messo in atto, la via più logica per modificare la visibilità di “assemblati” di un progetto è quella dell’organizzazione per layer e sottolayer (la cosa deve essere messa in pratica da subito per evitare lavori aggiuntivi…).
Ci vorrebbe una gestione degli oggetti per “visibilità”… una cosa tipo il Layer States o Named Positions ma che funzioni per visibilità degli oggetti.
Una cosa che, secondo me, si avvicina molto, è la creazione di un detail in un layout in cui utilizzare il comando HideInDetail e HideLayersInDetail però non so quanto ti possa aiutare in caso di rendering…
Potrebbe nashere un wish per un VisibilityManager…
Una cosa che ho chiesto molto tempo fa era che il Detail del Layout potesse contemplare un comando ShowInDetail che lavorasse al contrario dell’HideinDetail, nel senso che se devo fare una tavola di un singolo oggetto, non ha senso che lo selezioni, faccia un invert selection e poi hide… anche perchè, nel caso vada avanti a disegnare, i nuovi oggetti non verrebbero aggiunti al detail incasinandolo.

Devi associare al tasto (o combinazione di tasti) il comando
’_ProjectOSnap _Toggle
In questo modo attivi/disattivi il Project al Pdc

ciao Lucio,
più semplicemente mi farebbe comodo così come nella gestione layer hanno già aggiunto il comando copia in layer (che davvero anche con mole elevata di entità è istantaneo (diversamente da copia e incolla e sposta che facevo anticamente…) un comando copia oggetti in questo layer mantenendo i sottolayer nel layer di destinazione

il comando “Duplicate Layer and OBjects” fa’ esattamente questo.(tasto Dx del mouse sul nome del layer da duplicare)

caspita, per un momento ho sperato che fosse vero!..
purtroppo non fa esattamente quello di cui ho bisogno… copia si oggetti e layer ma tutti gli oggetti e i layer selezionati… io mi trovo nella situazione in cui seleziono alcuni oggetti appartenenti a layer differenti e vorrei con un comando spostarli (ma solo gli oggetti selezionati) in una copia di layer posizionati sotto un nuovo layer…

per il comando project ci sono dritte?

Azz… nun avevo capito na mazza allora !! :weary:

Ti ho mandato una risposta sul project… vedi sopra…

perfetto! grazie mille Lucio!

Ciao Marco

In effetti mi capita di voler separare un gruppo di oggetti dagli altri senza perdere la suddivisione in layer …

Dopo lungo rimuginare e alcune false partenze … ho ottenuto questo script
( anche se le idee sono ancora abbastanza confuse )

c5-setlayer.py (5,6 KB)

Scritto per uso personale, quindi con interfaccia utente scomoda per molti …
Lo scopo e’ di spostare (oppure copiare) degli oggetti dalla loro attuale posizione nell’albero dei layer in una diversa posizione.
Nello spostamento pero’ gli oggetti conservano la loro suddivisione in layer, cioe’ conservano il loro layer-path originale, o parte di esso.
Per fare cio’ dobbiamo individuare il layer alla base del ‘sotto-albero’ di layer da spostare, nonche’ il layer che rappresenta il nuovo layer-base sotto a cui andranno messi i layer degli oggetti spostati.

Nello script questi layer di riferimento o layer-base (che se non erro tu chiami layer zona) sono chiamati
‘From’ root layer e ‘To’ root layer
Ci sono dei casi, come quello che hai spiegato nel tuo messaggio, in cui non esiste un layer-base di partenza.
Se e’ cosi’ invece di selezionare il layer-base si clicca l’opzione NoParent
Idem per il layer-base di destinazione: se non esiste, dai NoParent.

Altra cosa. Non ho trovato un modo decente per selezionare i layer-base (O comunque per selezionare un layer da script in generale)
Per cui ho ripiegato sul fatto di rendere attivo (Current) il layer da selezionare.
In pratica quando lo script chiede di selezionare il layer, si rende attivo questo layer e poi si da’ Enter
( Oppure, come detto prima, si clicca l’opzione NoParent )

Gli oggetti da spostare vanno selezionati all’inizio … in modo tradizionale … almeno questi :wink:

in questo caso selezioin gli oggetti della zona ‘sopra’, poi come layer From gli dai NoParent e come layer To selezioni il layer ‘sopra’ (cioe’ lo rendi attivo e dai Enter)
Poi rilanci lo script e ripeti la stessa procedura per il layer ‘sotto’

Come sempre: Da usare a proprio rischio e pericolo

Ciao

Grande Emilio! Mi hai fatto un bel regalo di compleanno, proprio oggi!

Lunedì lo provo subito, ho visto che l’estensione è .py c’entra qualcosa Python? Per usarlo/installarlo devo procedere in che modo? Può essere editato o copiato nell’editing di un nuovo tasto?

Ancora grazie per l’aiuto!

Per usare gli script in Python, vedi qui Giuseppe:

Poi si puo’ anche dirgli
-runpythonscript NOMEFILE.py

pero’ devi aggiungere la cartella dove salvi lo script ai percorsi di ricerca di Python
Da EditPythonScript → menu Tools → Options e aggiungi il percorso sotto Files

OK, pero’ … (non dico a te Marco, ce l’ho con RMA )
Possibile che ogni volta dobbiamo dirle noi ‘ste cose ?
Ho appena cercato sul Wiki … Niente !
E’ cosi’ diffcile a Seattle mettere giu’ due informazioni in croce in modo che chi deve usare uno script sappia cosa fare ?
Non so … mi sembra il festival della confusione !

Per non parlare dei poveretti che voglono iniziare a scriptare.
Ho letto risposte sul forum USA … che voi umani non riuscireste mai a immaginare …
Certo non risposte dai mcneelies, ma da utilizzatori che si improvvisano esperti di Python per opera dello Spirito Santo …
OK, ognuno puo’ scrivere sul Forum, ma visto che Python e’ uno strumento che RMA ci mette a disposozione (Evviva per questo !) … Magari un minimo di controllo sulle castronerie che i poveri principianti si sentono propinare come verita’ assolute … Invece di appoggiare quella cavolata del RhinoPythonPrimer o come si chiama … altro ottimo strumento per confondere definitivamente le idee a chi non e’ esperto …

Purtroppo personalmente non sono esperto di Python (o di altro, ma non c’entra …) e non sono in grado di scriverla io una introduzione decente …
Serebbe bello se qualcuo in grado di farlo trovasse il tempo …

Thanks !

Scusa … dimenticavo.
Auguri !!! :smiley:

ciao Emilio,
grazie innanzitutto per l’aiuto, ho provato giusto 5 minuti fa il tuo script e quasi ci siamo…
ti allego un file di esempio con sole linee come oggetti giusto per provare se le modifiche funzionano correttamente o menoUntitled.3dm (66,5 KB)

usando lo script devo far si che il gruppo di linee che ho sulla parte dx della finestra (ho fatto giusto una copia ruotata delle linee presenti sulla parte sx della fiestra) finiscano spostate in copie di layer nel sottoalbero layer che ho chiamato prua…

ho seguito le tue indicazioni credo correttamente e alla fine ottengo si lo spostamento nel sottoalbero voluto ma purtroppo mi crea tanti layer quanti sono gli oggetti che ho selezionato e senza attribuirgli lo stesso nome del layer di provenienza…
in pratica se le curve che seleziono del layer acciaio sono due o più il risultato alla fine dell’operazione dovrebbe essere quella di avere un nuovo layer acciaio sotto l’albero del layer di destinazione contenente gli oggetti provenienti dal medesimo layer di origine (quindi le due o più curve sempre in un unico layer e con lo stesso nome)

se riesci a modificarlo con questo accorgimento è perfetto!
grazie intanto per l’aiuto
ciao

Ciao Marco

Ho provato con il file che alleghi e … ovviamente qui sembra funzionare. :smile:

Ecco quello che ottengo io se voglio spostare gli oggetti a dx sotto il layer prua

layers-2.3dm (70,1 KB)

Andiamo per gradi … il debugging va fatto con calma … :wink:

Prima cosa. E’ quello che vuoi ottenere ? Il file che allego va bene ?

Aspetta …

Dando un’occhiata allo script ho trovato degli errori
In effetti non capisco come potesse funzionare prima … mah.
Allego la versione con gli errori corretti (almeno quelli che ho visto …)
Forse questo va meglio …

c5-setlayer.py (5,7 KB)

Tantissimi auguri!

grazie Sergio :slight_smile: e son 40 tondi tondi :wink:
anche se mio figlio me ne da 20 hehehe
(ps per lui 20 è tantissimo… la relatività spiegata dai bambini è disarmante)

niente Emilio,
mi continua e eseguire il comando in modo non corretto…
il tuo file allegato è quello che vorrei ottenere ma quando lo applico il risultato è quello del file che ti allego
Untitled2.3dm (68,2 KB)

ho impostato il percorso di caricamento degli script di python come da te descritto e editato il tasto destro del bottone change layer copiando la stringa che mi hai indicato (ovviamente sostituendo il nome del file py…