ArchiRADAR Forum
ArchiRADAR Forum =>
GDL => Topic aperto da: luca0 - 18 Luglio 2013, 12:54
-
Salve a tutti
è da un po che guardo e riguardo il linguaggio gdl, mi è anche capitato di modificarlo delle volte, magari materiali qualch valore ma senza capirci nulla solamente provando e sbagliando.
ora che ho un po di tempo volevo dedicarlo a questo linguaggio di programmazione in modo da capire almeno cosa ho davanti quando apro un oggetto e magari chissà un giorno anche di crearne dei miei.
ho scaricato il manuale e facendo la prima esercitazione mi sono trovato davanti ad un dubbio...
io ho esperienza con bash scripting con il quale riesco( anzi riuscivo) a fare abbastanza bene (ho creato script per la gestione bancaria, script di sistema e compagnia) qualcosa di python e qualsina ina ina di C che dopo un po causa tempo ho abbandonato.
il dubbio che mi è venuto riguarda il pensiero di partenza...generalmente io sono abituato a pensare che ogni elemento ha variabili a se che possono creare altre variabili ma che rimangono ben distinte qua invece se non sbaglio le variabili sono sempre le stesse(a, b, zzyzx nel caso del primo esmepio block) e gli altri elementi si modificanoin base ad esse.
vorrei capire è giusto assegnare ad ogni elemento una variabile a se o è controproducente e sintatticamente scorretto??
ad esempio se io facessi cosi per fare 2 blocchi:
BLOCK a, b, zzyzx
BLOCK a2, b2, zzyzx2
sarebbe corretto se poi andassi a creare le nuove variabili nel pannello paramentri??
anche perche se in un futuro volessi fare in modo che un blocco abbia una dimensione e l altro un'altra potrei modificarli senza problemi.
altrimenti mi troverei a dover calcolare quanto in proporzione all altro si deve modificare o sbaglio??
grazie mille per la delucidazione
P.S.
spero di essermi riuscito a spiegare esaustivamente.
-
Non è assolutamente necessario usare le variabili standard. Puoi crearne quante vuoi e usarle liberamente.
A e B sono sempre presenti di default, fin dalla nascita del GDL, e hanno lo scopo di mettere a disposizione una coppia di valori standardizzati per le dimensioni generali dell'oggetto. I campi relativi infatti li trovi a portata di mano (di mouse) nella palette informazioni e, nella finestra di settaggio, proprio accanto all'anteprima dell'oggetto.
E' un modo veloce per dire "quanto è grande" quell'elemento. Mentre tutti gli altri valori li devi impostare nella lista dei parametri.
E' sempre chi programma a scegliere come usare i parametri. se un oggetto singolo ha due "corpi" (due BLOCK), devi essere tu a decidere se usare le variabili A e B per uno di essi, per entrambi, o per nessuno...
Idem per ZZYZX, nata molti anni dopo, per definire la dimensione Z.
Nota anche che se usi le variabili A, B, zzyzx, e un hotspot si trova proprio in quella posizione (nella coordinata A,B in pianta, o nella coordinata A, B, ZZYZX nel 3D) l'oggetto sarà stretchabile senza necessità di aggiungere specifiche istruzioni GDL.
-
perfetto grazie mille!!
quindi a b zzxzy sono le variabili principali per la visuaizzazione della misura totale di un oggetto nella paletta informazioni il resto se voglio far si che si possa modificare uno o piu elementi all interno dell oggetto devo aggiungere variabili a mio piacimento, che siano relative o no alle variabili di cui sopra sta a me decidere.
se ho ben capito come è strutturato il linguaggio (almeno per ora), di variabili d ambiente abbiamo i vari elementi le rotazioni gli spostamenti etc..
-
scusate ho un altrta domandina che approfitto per chiedere qua visto che ho gia aperto una discussione.
Riguarda i cicli FOR
generralmente la sintassi è questa:
FOR variabile = valore_iniziale TO valore_finale
NEXT variabile
END
ma non c è modo di dare un solo valore finale invece di mettere un valore iniziale e un valore finale ??
dalla GDL reference non mi pare di veder niente a riguardo quindi gli devo sempre dire da dove partire??
[/code]
-
Ciao, sto seguendo la tua discussione. Come mai non vorresti settare il valore iniziale? Se ti manca proprio la variabile o non la vuoi settare, la risposta più semplice è... partire da 1, poi puoi aggiungere il valore STEP per modificare il tipo di sequenza:
FOR variabile = 1 TO valore_finale STEP passi_avanzamento
NEXT variabile
END
Vado un po'a memoria, spero di non ricevere troppe bacchettate da ZioBob :bigrin:
-
Altrimenti invece di usare FOR ... NEXT usi gli altri metodi
! 1st FOR i = 1 TO 5 STEP 1 BRICK 0.5, 0.5, 0.1 ADDZ 0.3 NEXT i
! 2nd i = 1 DO BRICK 0.5, 0.5, 0.1 ADDZ 0.3 i = i + 1 WHILE i <= 5
! 3rd i = 1 WHILE i <= 5 DO BRICK 0.5, 0.5, 0.1 ADDZ 0.3 i = i + 1 ENDWHILE
! 4th i = 1 REPEAT BRICK 0.5, 0.5, 0.1 ADDZ 0.3 i = i + 1 UNTIL i > 5
-
perche io pensavo se devo fare in modo che un ciclo si ripeta n volte è piu logico (per me ovviamente) che dica:
finche il valoreiniziale non raggiunge il valore finale esegui questo,
invece che dire :
per ogni valore compreso tra valore iniziale e valore finale esegui questo
o sbaglio a ragionare??
Grazie mille
-
??!! non capisco.... il GDL è un linguaggio vecchio e stupido, ma sta roba magari se ti accontenti di scriverla con i comandi che mette a disposizione la fa... chiaro che oltre che stupido si esprime con comandi espressi in inglisc... forse non ho capito bene
The following four sequences of GDL commands are equivalent:
! 1st
FOR i = 1 TO 5 STEP 1
BRICK 0.5, 0.5, 0.1
ADDZ 0.3
NEXT i
***********************
! 2nd
i = 1 ! Premesso che...
DO ! Fai
BRICK 0.5, 0.5, 0.1 ! questo
ADDZ 0.3 ! e quest'altro
i = i + 1 ! e quest'altro ancora
WHILE i <= 5 ! finché il valore iniziale non raggiunge il valore finale
**********************
! 3rd
i = 1 ! Premesso che...
WHILE i <= 5 DO ! finché il valore iniziale non raggiunge il valore finale Fai
BRICK 0.5, 0.5, 0.1 ! questo
ADDZ 0.3 ! e quest'altro
i = i + 1 ! e quest'altro ancora
ENDWHILE ! e poi basta
**********************
! 4th
i = 1 ! Premesso che...
REPEAT ! Fai continuamente
BRICK 0.5, 0.5, 0.1 ! questo
ADDZ 0.3 ! e quest'altro
i = i + 1 ! e quest'altro ancora
UNTIL i > 5 ! finché il valore iniziale non raggiunge il valore finale
-
Mi sembra che il ciclo DO... WHILE... (esempio n.2) faccia proprio quello che chiedi :D
In effetti io non credo di averlo mai usato, mi trovo meglio con FOR... NEXT... dai tempi del C64 ;)
-
??!! non capisco.... il GDL è un linguaggio vecchio e stupido, ma sta roba magari se ti accontenti di scriverla con i comandi che mette a disposizione la fa... chiaro che oltre che stupido si esprime con comandi espressi in inglisc... forse non ho capito bene
perdonami è solo un mio modo di ragionare che fin'ora ho utilizzato, è solo una trasposizione mentale in italiano di quello che avevo intenzione di fare e volevo capire se stessi ragionando giusto o no, evidentemente no e devo cambiare tipo di ragionamento.
grazie mille per la tua precisazione
Mi sembra che il ciclo DO... WHILE... (esempio n.2) faccia proprio quello che chiedi (http://www.archiradar.it/smf/Smileys/phpbb/icon_biggrin.gif)
In effetti io non credo di averlo mai usato, mi trovo meglio con FOR... NEXT... dai tempi del C64
Si è proprio cosi :D
io da quando ho iniziato a fare bash scripting mi sono trovato molto piu a mio agio utilizando cicli di while in caso avessi a che fare con un contatore altrimenti utilizzavo i cicli di for.
Gestioni diverse del lavoro immagino ;)