Jump to content

Recommended Posts

:hello:

Ciao a tutti, non so se sto scrivendo nel posto giusto, ad ogni modo ho un quesito da porre a chiunque sappia qualcosa più di me.

Da un pò di tempo scrivo delle utilità in maxscript ad uso personale, ma non sempre riesco ad ottenere ciò che voglio (e soprattutto in fretta!).

Il mio ultimo dilemma è:

Posso creare delle variabili all'interno di un "loop" assegnando loro un nome progressivo (ad esempio da 1 a 10)??

Grazie d'anticipo. Tornerò presto a vedere se qualcuno mi avrà saputo rispondere. Ciao a tutti.

Dash

Share this post


Link to post
Share on other sites

Non conosco Maxscript, ma so programmare.... finora non ho mai visto un linguaggio che ti permette di definire in modo dinamico il nome di una variabile come dici te. Al contrario se sai gia che il loop deve avere X cicli e maxscript consente di farlo, crea un Array, o Vettore, di X elementi.

Per capirci la sintassi in linguaggio C per la dichiarazione di un vettore chiamato vect di 30 interi è:

int vect[30];

se poi anche il 30 è un valore dinamico dovresti creare qualcosa con i puntatori ma mi fermo qui visto non so se è il caso di procedere oltre........

:hello:

Share this post


Link to post
Share on other sites

ciao :hello:

come ha giustamente detto theshark un metodo ottimo per gestire dinamicamente più valori sono gli array

mioarray = #() -- crea un array vuoto chiamato mioarray

for i = 1 to 30 do (

 mioarray[i] = i*2

)

ad ogni ciclo verrà aggiunto a mioarray un valore pari a i moltiplicato per 2

prova a lanciare lo script d'esempio e poi guarda il valore di mioarray

uscirà una cosa del genere

#(2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, ...)

per accedere ai singoli valori di mioarray devi usare la sintassi mioarray[posizione]

quindi ad es.

mioarray[5] restituirà il valore 10

PS

la sezione in cui hai aperto il thread è sbagliata, l'ho spostata in quella più attinente ;)

pps

gli array possono contenere non solo valori singoli ma anche altri array, point3, quaternioni, float, integer, stringhe e tutte le tipologie di nodi comprese le geometrie (es. $box01) e chi più ne ha più ne metta ;)


Edited by philix

Share this post


Link to post
Share on other sites

questo esempio genera delle sfere e le aggiunge all'array chiamato listasfere

listasfere = #()

numeromax = 20

for i = 1 to numeromax do (

	ss = sphere radius:i pos:[i^2,0,0] name:("sf" + (i as string)) wirecolor:red

	append listasfere ss -- aggiunge a listasfere la sfera appena creata

)
dopo aver lanciato lo script qui sopra lancia questo qui sotto
fatt = 3 -- fattore ingrandimento

for i = 1 to listasfere.count do (

	listasfere[i].radius = i*fatt

	listasfere[i].pos = [i^2*fatt,0,0]


)

questo script non fa altro che prendere le sfere all'interno della lista e ridimensionarle secondo il fattore di ingrandimento chiamato fatt


Edited by philix

Share this post


Link to post
Share on other sites

:)

Ringrazio tutti per le risposte, per l'ottimo livello tecnico e per la celerità!!

MA.. ammesso che io abbia dichiarato un certo numero di array (anche se mi scoccia farlo quando non so ancora di quante ne avrò bisogno) come posso richiamarli per poterli riempire?

Se ho array1=#() , array2=#() ecc...

Vorrei poterli richiamare all'interno di un loop, per esempio:

for i=1 to 10

(

append "pippo" array(i)[1]

)

spero di essermi spiegato meglio.

io sono tutt'altro che un programmatore!!

Ringrazio nuovamente per la collaborazione.

Ciao a tutti

Share this post


Link to post
Share on other sites

Ciao, ti scrivo ancora da ignorante di MAXScript e confido in una traduzione da parte di philix , visto che ci siamo solo noi qui :P , ma se c'è qualcun altro che sa tradurlo sarà il benvenuto.

In generale (ovvero se non fosse in maxscript) il tuo problema potrebbe essere risolto con un array di puntatori ad altri array ma dal poco codice che ti ha mostrato philix credo che maxscript nn supporta i puntatori, allora domando a philix: Maxscript supporta gli array multi-dimensionali? In tal modo davide potrebbe organizzare i suoi array in una matrice, A[j]. In questo modo l'indice i gli indica quello che lui ora ha array(i) e la j gli indica l'elemento j-esimo dell' array i-esimo.

:hello:


Edited by TheShark

Share this post


Link to post
Share on other sites

:wallbash:

grande, ho scritto per mezz'ora off-line e sono riuscito a perdere il messaggio che vi avevo scritto.

comunque, l'help in linea recita questo:

BigMatrix Values, BigMatrixRowArray Values

The BigMatrix class implements an MxN matrix for situations and calculations where the usual 4x3 Matrix3 class is not adequate. The BigMatrixRowArray class implements an N element vector. Each row in a BigMatrix value is a BigMatrixRowArray value. Only Float values can be stored in the elements of a BigMatrixRowArray.

..quindi niente matrice anche se l'idea era ottima.

Il mio caso pratico mi vorrebbe permettere di riempire in modo efficace lo spazio su CD ogni volta che archivio i miei lavori. Quest'ultimo passaggio di doveva permettere di "riempire" i miei cd(n)=#(lavori1,lavori2,...) in un unico loop. Invece ora sono costretto ad eseguirlo per ogni singolo CD. E forse solo una raffinatezza ma già che c'ero...

Saro felice di inviarvi il codice se lo gradite.

Ciao

Share this post


Link to post
Share on other sites

:Clap03:

Riuscito!

Avevo interpretato male "l'array di array" che in effetti maxscript è in grado di fare.

Mi scuso con i puristi del 3d se questo problema può sembrare non avere nessi con la grafica. In realtà penso che questo sia un ottimo pretesto per imparare a utilizzare i programmi come max in modo approfondito ed efficiente. Cioè partendo da "piccoli" problemi.

Non oso pensare alle difficoltà di operare in 3d con le normali delle superfici....

Ad ogni modo, se vi interessa mandatemi una mail e vi inoltro il risultato.

Ciao a tutti e un sentito grazie.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...