Ciao a tutti. Da tempo ho una questione che non riesco a risolvere. Vorrei prendere tutte le geometrie con un determinato layer all’interno dei blocchi e aggiungerle al documento di rhino al di fuori della definizione blocco da dove derivano. Anche se annidati vorrei riuscire a ricavarle. Qualcuno ha un suggerimento?
Ciao Federico
In questo momento purtroppo non ho tempo di fare prove, ma vorrei capire bene cosa serve.
Gli oggetti appartenenti al layer in questione li vuoi togliere dal blocco o solo ‘copiare’ nel documento Rhino senza modificare il blocco ?
Ciao Emilio, gli oggetti li voglio lasciare nel blocco e farne una copia nel documento Rhino.
Ad esempio ho delle spine di legno con un dato layer e queste sono sia polisuperfici “libere” da blocchi che all’interno dei blocchi. Ora selezionato un pezzo vorrei selezionare anche le spine che lo interessano: quelle “libere” da blocchi le seleziono e basta, mentre quelle all’interno dei blocchi le aggiungo al documento, seleziono quelle che interessano il pezzo in questione e cancello le altre. Al momento mi manca proprio il modo di “copiare” gli oggetti dal blocco a fuori nel documento.
Usando rhinoscriptsyntax, per duplicare gli oggetti voluti, copiandoli dal blocco,
io proverei una cosa molto … brutale .
Faccio una copia dell’istanza
La esplodo
Controllo il layer degli oggetti derivati dall’esplosione del blocco …
cancellando tutti quelli con il layer diverso da quello cercato.
Il tutto usando rs.EnableRedraw per cercare di contenere i tempi.
Per una cosa piu’ ‘pulita’, credo si debba usare RhinoCommon …
Che ne dici ?
… Sempre se ho capito il problema …
Aspetta … credo di aver detto una cavolata:
Direi di no.
Si potrebbero usare
rs.BlockInstanceXform e rs.BlockObjects
… Certo e’ tutto da provare.
Ho avuto anch’io più o meno la stessa idea, solo che agivo sui blocchi già esistenti e poi li reinserivo così com’erano. Questo mi causava un problema perchè se lo facevo mentre modifico un blocco (e questo non te l’avevo detto, che dovrebbe fuzionare anche mentre modifico un blocco) mi aggiungeva tutti i blocchi al’interno del blocco modificato. Come dici tu comunque dovrebbe funzionare… Ci provo.
Certo sarebbe bello vedere la versione pulita con Rhino Common, almeno forse ci capirei qualcosina… Ma non c’è una guida per imbranati di Rhino Common?
Ciao, sono arrivato anch’io con rs.BlockObjects ad ottenere l’Id degli oggetti nel blocco e filtrando per layer ad ottenere proprio quelli che mi interessano. Ma come si fa poi ad inserirli nel documento? A fare una sorta di bake alla maniera di grasshopper tanto per capirci.
Mi sa che dicevo stupidate …
Credo si possa fare anche con rhinoscriptsyntax:
con rs.BlockObjects otteniamo gli oggetti originali,
selezioniamo quelli col layer giusto, e di questi facciamo una copia e la spostiamo usando
la trasformazione ottenuta da
rs.BlockInstanceXform.
Qui annaspo violentemente …
Non ho mai modificato blocchi … e in effetti sarei curioso di capire come fa Rhino a modificarlo.
Dovrei fare delle prove per cercare di capirci qualcosa …
Io proverei a fare una copia e a trasformarla … come accennavo sopra…
Non riusciamo a sincronizzare la discussione …
E’ vero
E’ rs.CopyObjects la funzione da usare e poi si trasforma giusto? Non la trovavo…
SI’, pensavo a quella…
Ma in effetti anche rs.TransformObject puo’ fare una copia direttamente …non me lo ricordavo …
Grazie mille Emilio, mi hai sbloccato, ci sentiamo la prossima volta che mi blocco (restando in tema di blocchi )
Ecco un esempio in cui un block manager efficiente avrebbe risolto i problemi senza dover star li a ricorrere a script… non capisco perché McNeel non ci senta sotto questo punto di vista.
Ciao Lucio
Scusa … cosa potrebbe fare un bloc manager in questo caso ?
Dovrebbe avere delle funzioni come il layer manager dove puoi fare selezioni/filtri in base ai layer di appartenenza…
Dovrebbe avere una struttura dove si possano fare le operazioni standard di selezione (anche multipla) di blocchi o sottoblocchi per poterli raggruppare o spostare da una definizione all’altra.
Io mi trovo con file importati via step organizzati in assemblati (sotto forma di blocchi annidati) che devo gestire senza stravolgere il file… non mi trovo assoultamente bene con i pochi strumenti che mi da Rhino (li trovo poco chiari e complessi).
Certo, in questi casi e’ un bel casino …
Ho l’impressione che il concetto di blocco di Rhino non corrisponda bene a quello di altri sistemi da cui capita di importare.
E’ solo un’impressione superficiale, in quanto non conosco questi sistemi.
Ma dal poco che si vede in giro credo che Rhino usi i blocchi per rappresentare l’albero degli oggetti (non so come si chiami in realta’ …) che alcuni CAD utilizzano.
Ripeto, non so cosa si possa fare con questo albero, ma mi sembra che per Rhino i blocchi siano piu’ un modo per risparmiare risorse consentendo di avere a video diversi duplicati della stessa geometria.
… Piuttosto che un modo di organizzare quanto rappresentato nel file.
In effetti con i blocchi di Rhino ci puoi fare poco (almeno per quello che so io), per lavorarci bisogna esplodere.
Potrebbe essere un altro caso in cui l’orgogliosa originalita’ di Rhino … mette qualche bastone tra le ruote di chi ci lavora scambiando dati con i tradizionali CAD meccanici.
E potrebbe anche essere questo il motivo per cui non hanno un grande interesse a sviluppare un block manager, ma ovviamente e’ una mia supposizione.
Forse secondo RMA i blocchi vanno bene cosi’ come sono.
( … Cosa che sembra valere anche per altri aspetti di Rhino, BTW … )
Grazie per la spiegazione
Ciao !
Domanda, vi è una funzione che restituisce il riferimento del blocco che si sta editando?
Ciao Federico.
Parli di Block Edit ?
Nella finestra mostrata c’e’ il nome del blocco …
Anzi, per essere esatti credo sia il nome della definizione di blocco.
Temo di non capire la domanda … sorry …
P.S.
A proposito di definizioni e istanze …
( Scusa se tiro sempre in ballo RhinoCommon … non voglio ‘convertirti’ a tutti i costi a RhinoCommon … )
Dicevo … io i blocchi non li ho praticamente mai usati …
Solo ficcando il naso dentro RhinoCommon (per uno script in cui dovevo usare i blocchi), ho finalmente capito qualcosa di piu’.
Infatti in RC sono nettamente separati definizione di blocco e istanza di blocco
Differenza che usando Rhino normalmente risulta, almeno a quel poco che capisco, implicita e quindi non subito chiara per chi ha poca dimestichezza con i blocchi.
Comunque non sono certo diventato un esperto di blocchi … .
Pero’ l’argomento mi interessa, quindi cerco di intrufolarmi nelle varie discussioni sui blocchi … come questa.
… Per cui mi scuso in anticipo con chi e’ esperto di blocchi per le cavolate che dico …
cosa intendi di preciso con riferimento?