Vai al contenuto
f3de

Nominare E Collassare Oggetti

Recommended Posts

sto imparando maxscript da poco e ho alcune questioni che non riesco a risolvere da solo.

ho una serie di box creati da un loop (un numero variabile regolato da uno spinner) e vorrei collassarli in un unica mesh da usare poi come operatore booleano.

come posso fare? se gli assegno un nome avranno tutti lo stesso e quindi poi non capisco come fare a dargli il comando "attach", quindi pensavo che magari c'è un modo per dargli un nome unico ma numerato.oppure anche avendo tutti lo stesso nome è possibile collassarli tutti in un unico oggetto?

non so se sono riuscito a spiegarmi ma se avete qualche suggerimento.....

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
uniqueName ;)

grazieeee, ora per farli diventare un oggetto unico? ho visto il comando attach ma vuole due nomi precisi di due oggetti, e siccome i miei oggetti non sono in numero fisso come faccio?

)

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Inviata (modificato)

Purtroppo qua al lavoro non ho max e la guida sotto mano, in ogni caso puoi storare i tuoi oggetti in un array e fare degli attach progressivi sugli elementi :)


Modificato da kage_maru

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

ho scoperto che si può anche usare il comando "prefix" per dare un nome unico agli oggetti

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

il comando attach ha due parametri ma non sono nomi, ma nodi della scena(in pratica degli oggetti), dalla guida:

meshop.attach <mesh> <node>

quindi il primo parametro deve essere per forza un nodo di tipo mesh, mentre il secondo un qualsiasi oggetto della scena.

scrivendo $unNomeQualsiasi maxscript considera quello che hai scritto come l'oggetto "unNomeQualsiasi" e quindi non il suo nome.

richiamando gli oggetti usando il $ devi sempre usare un nome fisso, quindi:

a="unNomeQualsiasi"

$a
questo codice ti creerà una stringa di nome 'a' e proverà a richiamare l'oggetto con nome "a" le possibilità sono: - chiami le tue box con un nome che in nessun altro caso può esistere e gli dai un numero incrementale tramite lo uniquename e poi (se ad esempio il nome base fosse"boxChePoiAttacco") usi questo codice:
oggettoCollassato=$boxChePoiAttacco01

oggettoCollassato.name=uniquename"boxCollassate"

convertToMesh oggettoCollassato

sel=$boxChePoiAttacco* as array


for obj in sel do

(	

	attach oggettoCollassato obj

)

il pratica quello che questo codice fa è prendere la box con numerazione 01, gli dà un nome definitivo e la converte in una mesh.

Poi si salva in un vettore tutte le altre box e le attacca tutte alla prima.

se hai domande chiedi pure

ciao!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Inviata (modificato)

grazie, proverò anche come hai scritto tu intanto io me la sono cavata così, magari ci sono passaggi inutili,il tuo codice mi sembra più "snello" però sono proprio alle prime armi


for iS in 1 to giriS.value+1 do --creazione box per boolean
(
newpos = 14.5-(iS-1)*(Sp.height/giriS.value)
buco = box length:0.57 width:0.35 height:10 pos:[raggioS.value,newpos,-5] prefix: "buco"
)


buchi = $buco* as array
ConvertToMesh buchi


for B in 1 to giriS.value do --creazione oggetto unico per boolean
(
meshop.attach buchi[1] buchi[2]
deleteitem buchi 2
)

[/codebox]


Modificato da f3de

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Il tuo codice va bene, si potrebbero fare alcune ottimizzazioni ma se non lo devi usare per centinaia di box alla volta non credo dia dei problemi.

non l'ho detto prima, ma benvenuto nel mondo di maxscript!

comunque se hai bisogno di ottimizzare lo script ti consiglio di leggerti il topic nella reference che si chiama"how to make it faster" è veramente utile e si ottengono delle ottimizzazioni veramente notevoli seguendo quei consigli.

C'è inoltre una guida su scriptspot

e se non li hai già seguiti i video tutorial qui su treddi.

buon scripting

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora

  • Navigazione recente   0 utenti

    Non ci sono utenti registrati da visualizzare in questa pagina.

×