Solidi multicolore

i materiali li vedresti solo in modalità rendering, può essere un motivo per il colore nello shade

ciao Federico
questo però riguarda i colori dei layer

Ciao Giorgio,
forse la mia spigazione è stata frettolosa; volevo dire che disegnerò il mobile con le ante di un colore, i cassetti di un altro e la scocca di un altro colore ancora. Questo utilizando la modalita di visualizzazione ombreggiata o semitrasparente, così a colpo d’occhio distinguo le parti del mobile. Poi assegno a tutto lo stesso materiale e passo alla modalità renderizzata così ho una visione più reale e meno"arlecchino" di quello che verrà realizzato. Facendo così ho la possibilità di vedere il mio mobile in modo realistico (renderizzata) o distinto per parti (ombreggiata e semitrasparente). Ma se colore e materiale diventano la stessa cosa non si potrebbe ottenere il medesimo risultato.

Ciao Federico.
Si’, credo di capire: il colore lo usi in fase di costruzione e il materiale e’ per il rendering.
Il ragionamento fila. :smiley:

Appurato che servono 2 aspetti diversi, diciamo cosi’, per gli oggetti … mi resta un dubbio ‘da scriptomane’ … :wink:
Perche’ avere due valori di tipo diverso per lo stesso scopo: definire l’aspetto dell’oggetto ?
Perche’ dover costruire due volte le procedure per gestire l’aspetto degli oggetti … E finire inevitabilmente , ad esempio, con situazioni come questa, in cui puoi cambiare il materiale ma non il colore ?
E poi il fatto che il materiale lo vedi sono in Rendered e invece in Wireframe o Shaded vedi solo il colore … non so … da utilizzatore non ha molto senso …

OK che servano 2 modalita’ nell’aspetto degli oggetti … ma poi perche’ solo 2 ?
Mi parrebbe piu’ logico avere una proprieta’ dell’oggetto, chiamata ad esempio ‘aspetto’ e poter attribuire agli oggetti 1 o piu’ valori diveri per l’aspetto. Per replicare la situazione attuale potremmo avere 2 aspetti chiamati Colore e Materiale (o anche solo uno), ma potrebbero servirne altri, tu aggiungi all’oggetto i diversi aspetti che ti servono e in ogni momento setti l’aspetto dell’oggetto come ti pare, che si sia in Wireframe, Shaded, Rendered o altro …

Credo che la separazione tra colori e materiali avesse senso quando per un rendering aspettavi mezza giornata, ma ora che la visualizzazione in tempo reale e’ sempre piu’ sofisticata … mi sembra solo piu’ un impiccio che complica la vita (del caddista) :smile:

Grazie, ragazzi, ciao !

Riporto in vita l’argomento dopo 9 anni perchè mi sembra non sia cambiato niente da allora.

Io sono abituato a lavorare con oggetti che hanno lo stesso colore del livello, per la praticità di riconoscerli a colpo d’occhio, sulla lista dei livelli. Questi colori sono anche codificati in modo che il cam riconosca subito di cosa si tratta (Figura, chiusura, scarichi, etc)
Però gli operatori cam si lamentano sempre che il file non è chiuso, o almeno unito come polisuperfice.

Per questo motivo, se si potesse creare un “solido” con facce di colori diversi sarebbe il massimo.
La cosa migliore sarebbe addirittura poter tenere tutti gli attributi della superficie originale (livelli, colori, etc…).

Non mi sembra una eresia e nemmeno una cosa difficile da realizzare.

Mi rimetto nelle mani degli esperti.

1 Mi Piace

Si può fare da un pezzo… Sub selezioni la faccia e gli assegni il colore.
Per togliere il colore assegnato puoi usare il comando RemovePerFaceColors

Edit: cioè, per spiegarmi meglio (avevo risposto dal cell e non riesco a scrivere molto da li) quando subselezioni degli oggetti che fanno parte di un insieme (gruppo, polisuperficie) puoi assegnargli i colori come se fossero elementi a parte.
Non so cosa succeda durante l’esportazione… comunque, se lavori tutto dentro Rhino, dovresti ottenere proprio quello che ti serve.

Rileggendo meglio il tuo messaggio:

L’unica cosa che puoi modificare è il tipo di visualizzazione ma il lievello sarà sempre quello per tutte le facce della stessa polisuperficie.
Quando fai il RemovePerFaceColor automaticamente ti torna tutto dello stesso colore.

1 Mi Piace

Più di 20 anni che uso Rhino e non sapevo che si potesse selezionare una sola faccia di una polisuperfice :slight_smile: . A mia discolpa devo dire che fino ad un anno fa non le usavo quasi mai.

Il vero problema è che se ho un file con 1000 superfici (e sono anche poche per i file che faccio) di colori diversi, quando li unisco diventano tutte dello stesso colore e dovrei riselezionarle una per una per cambiargli il colore… :sob:

Non mi sembra una cosa difficilissima aggiungere una funzione tipo “keep objects color” al comando Join

Non so se sto facendo cose strane… ma qui mi mantiene il colore… forse devo fare in modo che la faccia venga modificata… provo.
C’è un qualcosa che funziona a metà: se prendo una faccia singola, gli assegno un colore diverso da quello del layer e poi vado ad unirla ad un’altra faccia allora il colore mi viene uniformato.
Se in una polisuperficie assegno un colore ad alcune superfici queste mantengono il colore anche se vengono esplose e unite ad altre superfici.
Probabilmente l’override del colore superficie viene assegnato solo nel caso sia appartenente ad una polisuperficie mentre nel caso di una superfiice normale il colore viene assegnato in maniera classica senza “forzature”.

Mi sa che si può fare tramite script… cioè fare uno script che trova il colore assegnato alle facce e glielo passa come override.

Ho notato anche io questa cosa su R7… :frowning:
Inoltre su R8 anche se cambio il colore di una faccia sul solido, in shading rimane del colore originale… se però esplodo il solido, allora magicamente si vede del colore assegnato.

… Forse usando questi:

https://developer.rhino3d.com/api/rhinocommon/rhino.docobjects.objectattributes/objectcolor

https://developer.rhino3d.com/api/rhinocommon/rhino.geometry.brepface/perfacecolor

Ma credo che poi serva un Replace della geometria …

https://developer.rhino3d.com/api/rhinocommon/rhino.docobjects.tables.objecttable/replace

… perche’, stranamente, questo colore e’ salvato nella geometria e non negli attributi. :thinking:

1 Mi Piace

Infatti cercando anche nel discourse americano ho trovato thread di parecchi anni fa dove si parlava della necessità di un comando che potesse assegnare il perface color senza dover entrare nelle proprietà.
C’è un comando testperfacecolor che fa questo ma solo per superfici appartenenti a polisuperfici… per superfici singole non si riesce a fissare il colore.
Nella discussione McNeel sosteneva che fosse difficile dare una logica su come si dovesse comportare la superficie durante il join, se ereditare le proprietà della superficie a cui si va ad attaccare o se deve mantenere le proprietà modificate…
Per me la cosa sembra banale: se un utente richiama il PerFaceColor su qualcosa vuol dire che sa dell’esistenza dell’opzione e delle eventuali implicazioni future (ritrovarsi con oggetti che hanno colore diverso rispetto a quelli collegati) quindi l’impostazione va mantenuta e sarà cura dell’utente utilizzare il RemovePerFaceColor per ripristinare le proprietà a quelle di default (inoltre, come succede per le quote, nel pannello delle opzioni si può colorare di azzurro l’etichetta colore della polisuperficie selezionata per poter segnalare che alcune facce hanno colorazioni differenti).

1 Mi Piace

Andiamo troppo sul “tecnico” per le mie conoscenze… :frowning:

Anche a me sembra logico…

@emilio @lucio_zadra
Ho trovato un ragazzo che ha creato lo script quasi perfetto…
Praticamente fissa il colore delle superfici in modo che non venga cambiato quando si fa il Join.
Quando ho un’attimo gli implemento la funzione Join in modo da fare tutto con un solo clic…
Ho fatto un test con i ragazzi del cam e sono felicissimi…

2 Mi Piace

Bon dai, puoi passare in attrezzeria e urlargli “DAI CHE é VENERDIIII…!” (il resto già lo sanno… :wink: )

:+1:

Ora il problema è che non ci capisco un cavolo di Python… me la cavo un pò con gli script di Rhino, ma Python mi sembra molto diverso

Se Emilio non entra a gamba tesa, provo a mettertelo a posto io.
Ma vedo che è già all’opera… quindi mi sa che sta già elaborando…
Io intanto devo finire un lavoro per delle campionature urgenti.

Intanto … quale superficie si attacca e quale si va ad attaccare ? :smile:

Poi ‘sta pretesa di prevedere il modo canonico di utilizzare un comando e’ comica …
Sono discorsi che ti aspetti da chi non usa il CAD e non sa niente di CAD.

Tu fai il comando per modificare le cose, anche copiando da un oggetto campione nel caso, e in fretta: dalla command area, e poi chi usa Rhino si fara’ la sua bella macro se ne ha bisogno.

Certo.
Settare il colore ByLayer o ByObject e’ la stessa cosa.
E non parliamo dei blocchi … :smile:

No, stavo scrivendo sulle strane teorie dei comandi ‘confusing’ … :smile:

Ma se mi dite cosa serve precisamente, ci provo, anche se non posso provare script per Rhino 7.
… I test toccheranno a voi … :wink:

Lo script funziona già bene al 95%…
Ho visto che crea problemi con le estrusioni (una volta esplose sono a posto) e con le polisuperfici (che non lascia selezionare)
Quindi sarebbe da modificare lasciando la possibilità di selezionare superfici e polisuperfici, facendogli esplodere tutto, prima di fissare i colori.
E per farlo fatto e finito aggiungere il Join alla fine.