ArchiRADAR Forum

ArchiRADAR Forum => GDL => Topic aperto da: Xela - 30 Novembre 2008, 12:53

Titolo: Parete in mattoni... poco classica!
Inserito da: Xela - 30 Novembre 2008, 12:53
ciao ragazzi...

premetto che non sono granché sul GDL ma non mi confondo a provare!  :)

dovrei fare la parete come in foto... ne ho già realizzato una parte che può essere ripetuta....

ora... la domanda è: esiste un modo di inserire un parametro che faccia ripetere l'oggetto che ho fatto, in modo da creare l'intera parete?

spero di essere stato chiaro.  :?

grazie in anticipo,

alex.
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: gtres - 30 Novembre 2008, 23:11
Certo che si può fare ....
uno dei modi più semplici potrebbe essere il seguente:
Premetto faccio una distinzione di "MAIUSCOLE" e "minuscole" di modo che tu e tutti riconoscano i comandi di ripetizione "VERTICALI" e "orizzontali"
Inoltre presuppongo che un minimo di conoscenza tu ne abbia, e ometto qualche passaggio.

Finestra di dialogo PARAMETRI
inserisci (crea) il parametro D come ripetizione in verticale
inserisci (crea) il parametro E come ripetizione in orizzontale

Finestra di dialogo TESTO GDL 3D


FOR Z=1 TO D                    ! D rappresenta il numero di volte ripetuto in verticale ( asse Z)
      for x=1 to E                  ! E rappresenta il numero di volte ripetuto in orizzontale (asse X)
      gosub 100
      addx 1.05           !sostituisci il valore della lunghezza della tua composizione di mattoni
      next x
      del E
ADDZ 1.05                !sostituisci il valore dell'altezza della tua composizione di mattoni
NEXT Z

END
100:
brick 1,1,1,                !inserisci la descrizione GDL 3D del tuo oggetto

Return
!FINE


POI OVVIAMENTE SALVA L'OGGETTO CREATO ......
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 01 Dicembre 2008, 00:09
grazie gtres...

domani ci provo.
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 01 Dicembre 2008, 17:25
umh.... mi sa che mi sono infilato in qualcosa fuori dalla mia portata (per ora)...

Citazione
Inoltre presuppongo che un minimo di conoscenza tu ne abbia, e ometto qualche passaggio.

... mi sa che dovresti dirmeli...  :wink:

ecco quello che succede quando modifico i parametri... in pratica mi crea un parallelepipedo distante dal mio oggetto!  :?

non ho ben chiaro che descrizione si debba mettere dopo brick...
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: ZioBob - 01 Dicembre 2008, 18:19
non ho ben chiaro che descrizione si debba mettere dopo brick...
ci andrebbe l'intera descrizione 3D del tuo modulo. Puoi copiare e incollare l'intero contenuto del Testo GDL 3D del tuo oggetto.

Inoltre, per non ritrovarti con i bordi "dentellati", ti suggerisco di creare un modulo rettangolare.
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 01 Dicembre 2008, 18:47
copiando tutto il testo mi da questo errore... :cry:

Citazione
Inoltre, per non ritrovarti con i bordi "dentellati", ti suggerisco di creare un modulo rettangolare.

ma se  come addx do un valore  inferiore in modo che si accavallano?
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: ZioBob - 01 Dicembre 2008, 18:58
l'errore è dato dal comando BRICK che è rimasto davanti a MULX. Devi cancellarlo-

I moduli possono anche accavallarsi, ma come risolvi il bordo esterno? ti sporgeranno i dentelli laterali sul margine del muro.
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 01 Dicembre 2008, 19:19
 :D ... stiamo migliorando...

ma non capisco perché mi si ripetono lungo l'asse y in questo modo... (in effetti non capisco il significato della stringa suggeritami da gtres):roll:

Citazione
I moduli possono anche accavallarsi, ma come risolvi il bordo esterno? ti sporgeranno i dentelli laterali sul margine del muro.

come si vede dalla foto i bordi hanno una "texture" diversa, quindi devo sempre farli a parte... cmq intanto vorrei farlo funzionare... poi vediamo cos'è meglio!   :wink:

Titolo: Re: Parete in mattoni... poco classica!
Inserito da: ZioBob - 02 Dicembre 2008, 07:49
Citazione
non capisco perché mi si ripetono lungo l'asse y in questo modo... (in effetti non capisco il significato della stringa suggeritami da gtres)
Quale sarebbe la stringa che non capisci?

per controllare, quando uno script non funziona, occorre semplificare...
prova a fare una sola ripetizione invece di due. Prima solo X, poi solo Z, per vedere dov'è il problema.

FOR x=1 TO E            ! ripeti E volte le istruzioni seguenti fino a "NEXT"
      GOSUB 100          ! vai a costruire il modulo
      ADDx 1.05           ! spostati lungo l'asse x del valore indicato
NEXT x                       ! Torna ad eseguire tutto il ciclo,
DEL E                         ! Annulla gli spostamenti
END                           ! Termina l'esecuzione

100:                          ! routine che costruisce il modulo
                                  ! [qui vanno le tue istruzioni]
RETURN                    ! Termine dell routine, torna da dove sei venuto
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: gtres - 02 Dicembre 2008, 09:08
@Xela scusa ma ieri sono stato fuori
@ZioBob, grazie , scusate se non ho potuto contribuire..
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 02 Dicembre 2008, 13:01
grazie ragazzi per il vostro interessamento...

mi sta facendo impazzire... :cantakeit:

ora capisco cosa significano i vari pezzi... ma non capisco perché qualsiasi valore di ADDX metto mi fa sempre una ripetizione "uguale" (cioè ad una stessa distanza che dice lui) tra l'altro lungo l'asse y!!! (come nell'immagine postata ieri)

P.S. ora provo il comando con un blocco semplice!
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: ZioBob - 02 Dicembre 2008, 13:47
fai ancora qualche prova, poi magari posta l'oggetto, che ci diamo un'occhiata.
mi fa sempre una ripetizione "uguale" (cioè ad una stessa distanza che dice lui) tra l'altro lungo l'asse y!!!
anzi, in direzione -y  (MENO ipsilon)
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 02 Dicembre 2008, 13:56
ho provato un po'...

poi mi sono detto...  :wondering:
se si ripete in questo modo ci deve essere qualche comando (nel file auto-generato da AC) che sposta l'origine degli assi e la lascia lì....

così ho aumentato il valore di DEL dell'ultimo solido generato (a tentativi) e tadà...  :D

P.S. pomeriggio aggiungo la ripetizione verticale! :)
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: gtres - 02 Dicembre 2008, 16:03
... dai dai...... tiralo su stò muro che poi lo sfondiamo  :D  :notlistening:  :ok:
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 02 Dicembre 2008, 16:06
grandi ragazzi...  :bigrin: ... se penso che fino a ieri non ne capivo quasi niente...

ho fatto... all'inizio non capivo perchè non riuscissi a portare l'origine a X=0...(prima immagine)... :wondering:
poi provando ho sostituito
Citazione
FOR Z=1 TO D                    ! D rappresenta il numero di volte ripetuto in verticale ( asse Z)
      for x=1 to E                  ! E rappresenta il numero di volte ripetuto in orizzontale (asse X)
      gosub 100
      addx 1.05           !sostituisci il valore della lunghezza della tua composizione di mattoni
      next x
      DEL E
ADDZ 1.05                !sostituisci il valore dell'altezza della tua composizione di mattoni
NEXT Z

con DEL E * E (in pratica E^2)... et voilà!! :D

non ho ancora capito perchè però!!  :wondering:
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 02 Dicembre 2008, 16:38
umh....  :angry:

non capisco perchè appeno metto "ripetizione orizzontale=5" (da 5 in su) mi da questo errore.
in effetti è da 5 in su ma solo se la ripetizione verticale è da 3 in su... mi sa che non mi sono spiegato tanto bene!!

la linea 718 è proprio quella che dicevo di aver modificato

DEL E^2
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: gtres - 02 Dicembre 2008, 17:04
con DEL E * E (in pratica E^2)... et voilà!! :D
non ho ancora capito perchè però!!  :wondering:

non vorrei che sia solo un caso .... matematico, prova a cambiare il numero di ripetizioni sia in verticael che in orizzontale ..... altrimenti posta l'oggetto che ci diamo un'occhiata
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: doclace - 02 Dicembre 2008, 17:24
Bello questo topic, ho provato a sviluppare il tuo oggettino... il codice non è pulitissimo ma se ti accontenti vedrai che fa al caso tuo ;)
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: ZioBob - 02 Dicembre 2008, 17:32
non capisco perchè appeno metto "ripetizione orizzontale=5" (da 5 in su) mi da questo errore.
in effetti è da 5 in su ma solo se la ripetizione verticale è da 3 in su... mi sa che non mi sono spiegato tanto bene!!

la linea 718 è proprio quella che dicevo di aver modificato

DEL E^2
Il tuo oggetto, come appariva chiaro dall'inizio, non lascia pulito lo "stack" delle trasformazioni. Ovvero, non c'è il giusto numero di DEL che annulla i vari comandi MUL, ADD e ROT.
Il messaggio di errore che ricevi dice che stai cercando di eseguire un DEL di troppo, riportandoti "oltre" la situazione di partenza.
Probabilmente accade quando esegui la subroutine 100: più di 5x3=15 volte... ? mah

Potresti provare a mettere DEL TOP invece di DEL E*E

Titolo: Re: Parete in mattoni... poco classica!
Inserito da: gtres - 02 Dicembre 2008, 17:53
Bello questo topic, ... il codice ......
Vorrai dire BELLO il GDL  ......  :ok:
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 02 Dicembre 2008, 18:06
wow quante informazioni...  :bighug:

ora provo con i consigli dello zio... cmq ho scaricato anche il file di doclace per confrontarlo!!  :D

vi posto il mio così lo vedete direttamente... però se risolvete il problema fatemi capire dov'è l'errore!!  :wink:
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: ZioBob - 02 Dicembre 2008, 18:40
molto rapidamente...

1. Hai lasciato anche tutte le istruzioni originali all'inizio dello script. Dovevi cancellarle e lasciarle SOLO all'interno della subroutine (fra il "100:" e il "RETURN")

2. il tuo oggetto lascia in sospeso tre trasformazioni. E' troppo lungo e non ho il tempo di verificare dove avvenga... aggiungi semplicemente un "DEL 3" prima di "RETURN"

3. rimetti l'originale "DEL E" alla riga che avevi modificato.

Dovrebbe funzionare alla grande! :D
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 02 Dicembre 2008, 20:36
 :bighug:  :bighug:  :bighug:

MITICO!

non ho parole...funziona alla grande!  :bigrin:
zio sei eccezionale... molte, molte, molte grazie a tutti!!!



1. Hai lasciato anche tutte le istruzioni originali all'inizio dello script. Dovevi cancellarle e lasciarle SOLO all'interno della subroutine (fra il "100:" e il "RETURN")

Errore da principiante.  :oops:

P.S. il tuo manuale è stato molto utile! a tratti anche divertente.  :)
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: doclace - 02 Dicembre 2008, 21:02
Se non ci fosse stato lo ZIO-manuale in PDF col c...appero che avrei fatto alcun oggetto GDL. E' bello vedere che ogni tanto qualcuno ci prova! ;)
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 02 Dicembre 2008, 23:21
ciao daniele...

guardando il tuo oggetto (intendo  guardando il testo 3D)... mi è venuta voglia di fare d +...  :D

tra l'altro ho notato che c'erano alcuni errori sul blocco originale... quindi sto provando a farlo tutto da GDL...  :?

... ciò significa che vi romperò le scatole ancora!!  :bigrin:
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 03 Dicembre 2008, 15:06
... ve l'avevo detto che vi scocciavo ancora!!  :D

Allora... ho fatto tutto dal GDL... se è giusto dovrebbe essere tutto parametrico in funzione delle  dimensioni dei mattoni!!
Inoltre ho rifinito il lato posteriore (così come è in realtà)

(premetto che va già bene così e che siete stati gentilissimi... però volendolo migliorare...)  :wink:
... ora vi chiedo:
- come si inserisce l'immagine di anteprima?
- come si fa ripetere il blocco anche in pianta?
- e... (more difficult) ... si può far ripetere il blocco base in funzione delle dimensioni totali e non del numero di ripetizioni? (o tutte e 2 ?)

vi posto l'oggetto... se lo volete... e nel caso mi dite se qualcosa si poteva fare meglio!!  :)
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: luciano - 03 Dicembre 2008, 15:45

- come si inserisce l'immagine di anteprima?
Fai il rendering poi lo incolli
 
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 03 Dicembre 2008, 16:53
... scusami ma lo incollo dove? in quale finestra?
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: luciano - 03 Dicembre 2008, 17:14
devi incollare quì
vedi allegato
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: doclace - 03 Dicembre 2008, 17:23
L'importante è cliccare sempre tutti i bottoni :)
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: doclace - 03 Dicembre 2008, 18:01
Nel frattempo ho corretto qualche calcolo sbagliato di troppo nella parte MASTER.. vi mando l'oggetto nuovo corretto :)
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: ZioBob - 03 Dicembre 2008, 21:06
Il modo più semplice per ottenere un 2D corrispondente al 3D è
PROJECT2 3, 270, 2
anche se non è il più efficiente.

Altrimenti occorre creare anche anche il simbolo con istruzioni parametriche e, generalmente, il comando LINE2
Le ripetizioni si effettuano allo stesso modo, ma ovviamente si sviluppano solo sul piano, con
ADD2  x, y
nel tuo caso la x è la lunghezza del modulo, mentre la y è 0.

Se vuoi impostare la dimensione del muro, nei parametri, invece del numero di ripetizioni, occorre semplicemente inserire un'istruzione che calcola, in quella dimensione, quanti moduli ci entrano... e poi proseguire nel solito modo...
es.
il modulo è lungo 35cm, vuoi usarlo per fare un muro lungo 2 metri (usiamo il parametro a, per questo valore).
nello script metti:
E = a/0.35
e... otterrai un muro lungo 1,75m ... cioè una misura approssimata... per forza! il modulo non è un sottomultiplo esatto, e la funzione FOR... usa solo numeri interi (cioè mette solo "moduli" interi).
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 03 Dicembre 2008, 23:27
grazie zio... domani ci provo!

per l'immagine ho già risolto "cliccando un po' di bottoni"  :laughing:
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 05 Dicembre 2008, 15:36
arieccomi...

ci ho messo un po' di tempo... non perchè sia stato difficile ma perchè non ho provato... :wink:

ho risolto con il 2d pametrico...  :D ... grazie zio!! (vi posto l'oggetto)

però non ho ben capito come si fa il terzo punto... ho fatto in questo modo (vedi immagine), ma mi da errorre... otete aiutarmi?  :praying:
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: claudio-aster - 05 Dicembre 2008, 15:46
c'è una virgola di troppo e un punto in meno

Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 05 Dicembre 2008, 15:52
ops...  :whistling:

avevo dimenticato che si deve usare il punto e non la virgola...

grazie... :ok:
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: doclace - 05 Dicembre 2008, 15:53
Giusto, il separatore per le misure con decimali nei listati GDL è sempre il punto.
Mi togli una curiosità Xela? come mai in basso a destra nella tua immagine c'è un ADD2 con misure in pollici??  :shock: :shock:
Che unità di misura usi in Archicad?
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 05 Dicembre 2008, 17:47
Mi togli una curiosità Xela? come mai in basso a destra nella tua immagine c'è un ADD2 con misure in pollici??  :shock: :shock:
Che unità di misura usi in Archicad?

 :D... non credo siano pollici... forse sono gli angoli... dico così perchè il listato 2d gliel'ho fatto creare automaticamente ad Archicad!  :whistling: ... (io cmq lavoro in metri)

Tornando alla ripetizione usando la misura globale.... ho modificato il testo 3d inserendo i due parametri D e E... e funzionerebbe anche se non fosse per il DEL lungo x, a cui non riesco a dargli un valore... funzione solo se x è minore-uguale di 3 m!!  :cry:... (o 6 se utilizzo 1.25*A)
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: ZioBob - 05 Dicembre 2008, 17:52
Ok, è solo un problema di arrotondamenti.
Come ti avevo detto, il ciclo FOR...NEXT può essere eseguito solo un numero INTERO di volte, mentre D ed E, essendo il risultato di una divisione, assumono quasi sempre valori decimali. E anche quando usi queste variabili con DEL (per cancellare un certo numero di trasformazioni) il programma presume che si tratti di numeri interi. Non può certo cancellare due trasformazioni e mezza...! :D

Quindi, le due formule iniziali, andrebbero cambiate in questo modo:
D = INT(a/0.78)
E = INT(zzyzx/0.26)


Mi dirai : "Potevi dirlo subito!" ... Sì, potevo... ma sono dell'idea che bisogna sbatterci un pochino, per apprezzare i successi, ma, soprattutto, che sia necessario apprendere poche cose per volta, e assimilarle bene. La funzione INT() tronca la parte decimale di un numero, rendendolo intero.
Se vuoi che l'arrotondamento sia all'intero più prossimo, invece che per difetto, puoi usare:
D =  INT(a/0.78 + 0.5)
E = INT(zzyzx/0.26 +0.5)


Enjoy
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 05 Dicembre 2008, 18:47
 :party:  :party:  :party:

perfetto... :clap: ...sempre preciso e puntuale!!!  :D

Mi dirai : "Potevi dirlo subito!" ... Sì, potevo... ma sono dell'idea che bisogna sbatterci un pochino, per apprezzare i successi, ma, soprattutto, che sia necessario apprendere poche cose per volta, e assimilarle bene.

hai ragione... provando ero arrivato a scrivere DEL 1.25*A... però oltre a funzionare solo per un range di valori non mi sembrava corretto!!...
avevo anche capito che in DEL si dovevano inserire valori interi... però non sapevo come!!  :wink:

Se vuoi che l'arrotondamento sia all'intero più prossimo, invece che per difetto, puoi usare:
D =  INT(a/0.78 + 0.5)
E = INT(zzyzx/0.26 +0.5)


che cambia?... gli assi locali rimangono tornano cmq al loro posto e sul modello non ho notato differenze... :wondering:
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: ZioBob - 05 Dicembre 2008, 18:54
vale per il ciclo FOR... NEXT
Voglio dire che, se dal calcolo risulta che avresti bisogno di 5,8 moduli, per arrivare alla lunghezza del tuo muro:
- nel primo caso te ne mette INT(5.8 ) = 5 (arrotondamento per difetto)
- nel secondo caso te ne mette INT(5.8 + 0.5) = 6 (arrotondamento all'intero più vicino)

Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 05 Dicembre 2008, 19:47
ah ok...  :ok:

non mi sono accorto del cambiamento perchè in quel momento avevo inserito le misure 20x20... :wink:

per me questo oggetto va bene così...  :D

ci risentiremo per qualcos'altro!!!  :peace:
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: lucio vero - 05 Dicembre 2008, 19:53
... ciao alessandro .... adesso però ... ripostalo corretto ... x tutti gli amici del forum ...  :ok:
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: Xela - 06 Dicembre 2008, 11:27
 :bigrin:

Ecco quà...

1 - parete con ripetizioni in funzione del numero di blocchi;
2 - parete con ripetizioni in funzione delle dimensioni globali.

buon lavoro a tutti!!
Titolo: Re: Parete in mattoni... poco classica!
Inserito da: lucio vero - 06 Dicembre 2008, 12:04
 :clap: :clap: :clap: :clap: :clap: :clap: