Orijinalini görmek için tıklayınız : Archicad de Özel Pencere Yapýmý [Makale]


SerMimar
30-03-2008, 11:51
[Only registered and activated users can see links]


È capitato un po' a tutti, anche se non molto spesso, di aver bisogno di inserire in un progetto una finestra di forma non standard. Nelle librerie attuali, occorre riconoscerlo, se ne trovano in abbondanza, ma inevitabilmente il tipo che serve a noi ... non sarà tra quelle disponibili. Molti utenti ArchiCAD hanno imparato, spinti dalla necessità, a creare oggetti di libreria utilizzando la cosiddetta "modalità grafica", registrando cioè come oggetto una serie di elementi posizionati sul foglio di lavoro, evitando ogni contatto col temuto linguaggio GDL, ma la creazione di una nuova apertura (porta o finestra) introduce alcuni problemi specifici che spesso rendono il risultato della modalità grafica poco soddisfacente. Per migliorare l'oggetto è quasi inevitabile mettere le mani nelle sue "viscere". Il mio obiettivo - forse ambinzioso - è quello di dimostrare che l'operazione può essere portata a buon fine da chiunque, seguendo meccanicamente alcune indicazioni e comportandosi un po' come quei robot da sala operatoria, che operano a distanza guidati dal chirurgo.
Ovviamente partiamo dal principio: abbiamo necessità di posizionare su un muro una finestra romboidale di un metro di larghezza e altrettanto di altezza. Il primo passo da compiere è consultare le librerie (magari utilizzando l'abaco fornito in versione PDF con ArchiCAD) per vedere se ce ne sia già una. Ovviamente non c'è (altrimenti questo articolo sarebbe già finito), vi si trova solo un foro, ma è privo di infisso. Benissimo. Adesso ci pensiamo noi. Come forse saprete, il GDL tratta porte e finestre in modo particolare, ed è necessario disegnarle "in piano" cioè orizzontali. Siamo pronti, ma prima di cominciare devo fare due raccomandazioni preliminari:

1. Posizione
Quando si intende realizzare degli elementi da registrare come oggetti, è opportuno posizionarsi sull'origine. in questo caso l'origine deve trovarsi al centro del davanzale (o della soglia, per le porte).

2. Quota
La quota zero rappresenta il filo esterno del muro su cui verrà posizionata la finestra. Un eventuale davanzale sporgente, per esempio, dovrà "sporgere" verso il basso. Per finestre semplici io consiglio di realizzare l'infisso con la parte inferiore a quota zero. Se necessario, poi, si useranno i controlli specifici per impostare l'eventuale arretramento.

E ora cominciamo !
Facciamo subito l'infisso: prendiamo un solaio, e tracciamo il perimetro esterno della finestra. Realizziamo anche le necessarie forature per i vetri. Diamo a questo solaio lo spessore e la quota appropriati, ed assegniamo anche la penna e i materiali idonei. Sempre con l'uso di solai realizziamo le vetrature e, se necessario, aggiungiamo tutti gli altri particolari (maniglie, cerniere, ecc...). Per questo primo esempio usiamo il materiale "Pino" per la struttura e "Vetro" per i vetri. A questo punto l'infisso è terminato, ma il nostro lavoro, ovviamente, è solo all'inizio.


[Only registered and activated users can see links]


Infatti, come avrà senz'altro scoperto chi abbia già provato ad avventurarsi in un'impresa simile, il foro architettonico realizzato da ArchiCAD è sempre rettangolare, anche se la finestra non lo è. Quindi se registriamo come "finestra" il nostro rombo, otterremo un risultato non accettabile.


[Only registered and activated users can see links]


Allora facciamo le nostre contromosse: aggiungiamo un solaio il cui perimetro sia uguale all'apertura che vogliamo realizzare, dandogli le seguenti caratteristiche:
Spessore: 1.00 m
Quota estradosso: 0.50 m
Penna: 88
Materiale: Erba
In realtà questo elemento non farà parte, alla fine, del nostro oggetto, quindi i settaggi servono in parte per rendere il solaio facilmente individuabile nel listato GDL, e in parte ... per trovarci alcuni parametri quasi pronti.
La situazione, a questo punto, sarà simile a quella visibile nella figura sottostante.

[Only registered and activated users can see links]

Controlliamo tutto nel 3D, facendo anche delle sezioni, se necessario, e quando il risultato appare soddisfacente passiamo alla registrazione: impostiamo una vista assonometrica, tipo "pianta dall'alto", con azimuth a 270° e, tenendo attiva la vista 3D, apriamo il menu "Archivio" per richiamare la voce "Oggetti GDL/Salva Modello 3D come...".


[Only registered and activated users can see links]


Ovviamente scegliamo, come tipo di file, "Una Finestra", e registriamo all'interno della libreria, meglio se nell'apposita cartella "0.0 Oggetti utente". Prima della registrazione vera e propria ci verrà proposto un dialogo con alcune opzioni. Selezioniamo "Rimuovi dal simbolo le linee coincidenti" e "Testo GDL editabile".


[Only registered and activated users can see links]


Possiamo già ora vedere che aspetto ha, dal vivo, la nostra creatura. Ha certamente bisogno di ulteriori cure, ma ha già preso vita. A questo punto la parte facile è finita. Sa per cominciare quella divertente. Dal menu "Archivio", selezioniamo "Oggetti GDL/Apri Oggetto..." e apriamo la finestra appena creata (N.B. Se l'oggetto era selezionato in pianta, verrà aperto automaticamente). Attiviamo la finestra Testo GDL 3D e osserviamone il contenuto: si noterà che ArchiCAD ha fatto il suo dovere ... anzi, anche di più. Non è necessario, ma per una migliore leggibiliità io consiglio di eliminare tutte le righe che cominciano con GLOB_ e quelle che iniziano con due punti esclamativi.


[Only registered and activated users can see links]


Anche le prime righe di commento potrebbero essere eliminate, ma lasciamo almeno data e versione. Il risultato sarà simile a quello raffigurato (il vostro listato, ovviamente, può avere delle differenze nei valori, ma niente di sostanziale). (N.B. Se volete evitare tutti quei lunghi decimali, attivate lo snap alla griglia invisibile, prima di disegnare gli elementi da registrare come oggetto, impostando la spaziatura a 1cm o a 1mm) Cominciamo con il nostro intervento. Per costringere ArchiCAD a fare un foro arbitrario, al posto di quello standard rettangolare, operiamo sul solaio di tamponamento che ci siamo preparati. Sarà facile individuarlo, perchè è preceduto dall'istruzione PEN 88 e nella sua definizione si nota il materiale Erba. L'istruzione usata da ArchiCAD per tradurre in GDL i solai è cPRISM_. Questo comando è fornito dalla dichiarazione dei materiali, seguita dal numero di vertici, poi dallo spessore e infine dalle coordinate x-y dei vertici (seguite tutte da un valore detto mask).
cPRISM_ "Erba", "Erba", "Erba",
5, 1.0,
-0.5, 0.5, 15,
0.0, 1.0, 15,
0.5, 0.5, 15,
0.0, 0.0, 15,
-0.5, 0.5, -1
Noi dovremo trasformare questa istruzione in un'altra, chiamata WALLHOLE, la cui sintassi prevede: il numero di nodi, un codice, e quindi le coordinate x-y dei vertici, ciascuna col suo mask. Procediamo allora cancellando per intero la prima riga, e aggiungendo, all'inizio della successiva, la parola chiave WALLHOLE. Tutto qui. il risultato sarà quindi:
WALLHOLE 5, 1.0,
-0.5, 0.5, 15,
0.0, 1.0, 15,
0.5, 0.5, 15,
0.0, 0.0, 15,
-0.5, 0.5, -1

È importante che Wallhole sia scritto sulla stessa riga in cui c'è il numero di vertici. Volendo potete eliminare anche la riga con l'istruzione PEN 88 ma, anche lasciandola lì, non dovrebbe dare fastidio. Per completare il lavoro, attivate la finestra "Simbolo 2D" e sistemate a piacere la rappresentazione che l'oggetto dovrà avere in pianta.


[Only registered and activated users can see links]


Come minimo occorrerà eliminare la proiezione del solaio "Erba" da 1 metro...
(N.B. Se aggiungete gli hot spot, questi saranno riconosciuti dal cursore, una volta posizionata la finestra in pianta)
La vostra finestra potrebbe avere una posizione diversa, rispetto al filo del muro. dipende dal settaggio corrente delle opzioni do posizionamento. Ènecessario sapere che con WALLHOLE la terza opzione, cioè quella che prevede le mazzette, non funziona.


[Only registered and activated users can see links]


Registrate nuovamente l'oggetto e godetevi qualche vista, ma non vi allontanate ... vi avevo detto che il mio obiettivo era ambizioso ... quello che abbiamo fatto fin qui è stato troppo facile, quindi proviamo ad andare avanti di un ulteriore gradino. Allora andiamo nella finestra principale dell'oggetto e clicchiamo sul pulsante "Parametri", poi su "Nuovo". Nell'area a destra verrà creata una nuova riga, per il parametro appena creato. Nella riga ci sono tre campi editabili e alcuni pulsantini.


[Only registered and activated users can see links]


Andiamo nel primo campo, nella colonna "Variabile", dove il programma propone l'identificativo "C" e cambiamolo in qualcosa di meno generico, ad esempio "mast". Poi nel campo "Nome" digitiamo una descrizione, ad esempio "Materiale struttura". Tenendo cliccato sul pulsante della colonna "Tipo" si accede ad un menu di scelta, dal quale selezioniamo "Materiale". Ora il terzo campo, quello destinato al "Valore" ha la possibilità di essere impostato scegliendo il materiale dal tipico menu dei materiali, da cui scegliamo, per esempio, "Pino". Ripetiamo tutta l'operazione creando un'altra variabile con le seguenti caratteristiche:
Variabile: mave
Tipo: (materiale)
Nome: Materiale vetrate
Valore: 24 (vetro)

Con ciò ci siamo preparati due parametri da poter utilizzare nel testo GDL. Adesso rimettiamoci la mascherina e torniamo in sala operatoria. Dobbiamo eseguire un paio di semplici bypass. Una volta attivata la finestra Testo GDL 3D, individuiamo le tre diciture "Pino" e al loro posto mettiamo la nostra prima variabile. In questa fase è necessario prestare la massima attenzione all'uso delle virgolette: i nomi di materiale usati in modo esplicito (cioè col loro nome, come nel listato creato da ArchiCAD) devono essere racchiusi tra virgolette, mentre le variabili che li rappresentano (come quelle che stiamo inserendo noi) no.
Quindi la riga:
cPRISM_ "Pino", "Pino", "Pino",
dovrà diventare:
cPRISM_ mast, mast, mast,
Attenzione anche alle virgole, non dimenticate l'ultima! Facciamo lo stesso con l'altra variabile, mettendola, ovviamente, al posto di "Vetro". Salviamo per l'ultima volta e complimentiamoci con noi stessi.
Abbiamo realizzato effettivamente una finestra irregolare perfettamente funzionante e anche parzialmente parametrica!
Devo essere sincero fino in fondo, però. L'istruzione VALLHOLE ha un limite importante, anche se è facile aggirarlo: consente di realizzare solo aperture rappresentate da poligoni convessi. Se si ha necessità di realizzare una forma concava, ad esempio a stella, occorre eseguire qualche passo in più, ma è possibile fare anche questo senza conoscere il GDL.
Ma per non mettere troppa carne al fuoco, la procedura da seguire la vedremo nel prossimo tutorial (parte 2).


[Only registered and activated users can see links]



ZioBob

SerMimar
30-03-2008, 11:51
Il precedente tutorial era terminato, all'uscita dalla sala operatoria, con una finestra romboidale, bella, sana, e di robusta costituzione. E con una "voglia" insoddisfatta quella intrigante finestra a stella, che non metteremo mai nei nostri progetti, ma vorremmo tanto avere in libreria, per poter dire "questa l'ho fatta io".
Come vi avevo anticipato, la cosa è abbastanza semplice, una volta imparata la procedura per trasformare un cPRISM_ in un WALLHOLE. Ricorderete che il problema consiste nel fatto che questo comando permette di definire solo poligoni convessi. Se il perimetro del foro ha delle concavità otterremo dei messaggi di errore e il malfunzionamento della finestra.
Ricordiamo (ma lo sanno tutti) come si riconosce un poligono convesso: Appoggiando una retta infinita su ciascun lato (o una serie di tangenti, per i lati curvi) il poligono si deve trovare tutto da una parte. Se è possibile posizionare questa retta su un qualsiasi lato in modo da intersecare una parte del poligono, questo è concavo.
Ma nulla vieta di usare più WALLHOLE in un singolo oggetto. Ricorderete che il nostro punto di partenza, per generare il foro nel muro, era il famoso solaio "Erba" da un metro di spessore. Tutto il processo si risolve dunque nella preventiva scomposizione del solaio (e quindi della sagoma del foro-finestra) in elementi convessi. Ci sono sempre molti modi per arrivare a questo risultato. Un sistema comodo (fin troppo) può essere quello di usare l'opzione "triangola" del comando esterno "geometria poligoni". Se è installato l'apposito Add-on troverete questo comando nel menu Strumenti. Sul solaio saranno tracciate delle linee che lo dividono in triangoli (che non possono essere mai concavi, quindi per noi sono l'ideale). Con il comando "dividi" si può successivamente tagliare il solaio.


[Only registered and activated users can see links]


Nell'immagine soprastante vediamo il risultato della divisione in automatico. Liberissimi di usarla, naturalmente, ma credo che la maggior parte voi, ragionando da "umani" avrebbe pensato a una divisione più semplice, probabilmente come quella di figura 2.
Io, per rendere l'oggetto ancora più semplice e "leggero", opterei per la soluzione di figura 3. Con due soli tagli si ottengono tre poligoni convessi, da trasformare in altrettanti WALLHOLE.
A questo punto non c'è molto da aggiungere. Realizzati i vari componenti con i solai, come abbiamo visto la volta scorsa, basta registrare come Finestra e riaprire lo script GDL 3D.
Questa volta ci saranno tre solai "Erba" e quindi tre istruzioni cPRISM_ da modificare, ma niente di più. Come abbiamo imparato a fare, identifichiamo le linee di programma su cui intervenire, effettuiamo l'operazione eliminando, per ciascuno, la linea


[Only registered and activated users can see links]


cPRISM_ "Erba", "Erba", "Erba",
(compresa la virgola) e inserendo semplicemente il termine WALLHOLE all'inizio della linea seguente.
Troppo poco, per farci un articolo. E allora andiamo avanti. Facciamo un altro esempio: useremo due WALLHOLE per una finestra, ma questa volta non ci serve un foro unico, ma due fori distinti. Riusciremo a crearci un nuovo problema e avremo così l'occasione per trovare nuove soluzioni.


[Only registered and activated users can see links]


Immaginiamo di aver bisogno di una bifora. È il principio, quello che ci interessa, non l'estetica, quindi, per fare una cosa semplice, accontentatevi di due fori trapezoidali. Seguendo tutta la trafila che ormai abbiamo imparato a padroneggiare, in pochi minuti ecco pronta la nostra finestra di libreria, perfettamente funzionante nel 3D. Ma questa volta il problema si presenta da un'altra parte il simbolo 2D è incompleto! Mentre nel 3D il muro viene interrotto solo dai fori definiti con WALLHOLE, in pianta viene sempre interrotta la continuità del muro per l'intera larghezza dell'apertura. L'oggetto è composto da due ante separate, che vengono correttamente rappresentate nel simbolo, ma il pilastrino centrale dovremo aggiungerlo noi. Ci sono due modi: uno facile e uno difficile.
Ovviamente quello da usare è il modo difficile [Only registered and activated users can see links]
Comunque vediamo rapidamente il modo facile, e spieghiamo perché non va bene. Certamente la soluzione più ovvia è quella di aprire la finestra Simbolo 2D e aggiungere un retino uguale a quello del muro, nella giusta posizione e con le giuste dimensioni. Si noterà però una serie di problemi: primo fra tutti che non sappiamo in partenza su che muro andrà la finestra e se deve essere usata su muri diversi (per colore, tipo di campitura, spessore, ecc.) dovremmo realizzare più copie dell'oggetto. In poche parole: non è parametrico. Non si adatta alle circostanze manca di quell'"intelligenza" che è il vero punto di forza degli oggetti GDL.
E allora andiamo nell'altra direzione, quella difficile. Si tratta come avrete immaginato di rientrare in sala operatoria, e intervenire sullo script GDL 2D.
Seguitemi con fiducia, anche se non spiegherò i dettagli. Per ogni passaggio vi dirò semplicemente cos'è e perché è necessario, senza addentrarmi troppo nelle specifiche del linguaggio. La prima cosa da fare scrivere l'istruzione MUL2 seguita dal rapporto fra le variabili A e B e le corrispondenti misure della finestra (larghezza e altezza). La mia bifora era larga un metro e venti e alta uno, quindi:
MUL2 a/1.2, b/1
Questa istruzione fa sì che, anche usando delle misure reali, non delle variabili, queste possano essere adattate, "stirando" lo spazio nel quale si trovano.
La seconda istruzione predispone l'uso di un tipo di linea. Non uno qualunque, ovviamente, ma il tipo di linea impostato per il muro corrente, quello su cui si trova la finestra:
LINE_TYPE WALL_LINETYPE
Quest'altra fa la stessa cosa con il tipo di retino: FILL WALL_FILL
Ed infine questa imposta la penna da utilissare per le linee: PEN WALL_SECT_PEN
Abbiamo finito la fase "preparatoria", ed ora scriveremo l'istruzione che disegna effettivamente il retino. Ma prima descriviamola.
La sintassi, dal manuale del GDL, è la seguente:
POLY2_B n, framefill, fillpen, fillbkgdpen, x1, y1, mask1, ..., xn, yn, maskn
descriviamone brevemente le varie parti:
POLY2_B
questo è il nome del comando n è il numero di vertici del poligono (retino).
Per il nostro rettangolo al posto della "n" metteremo il numero 4. framefill è un codice, prendiamolo così com'è. Nel nostro caso useremo il valore 7, per questo parametro. fillpen la penna da usare per la campitura del retino. Per utilizzare il colore impostato per il muro corrente, useremo una variabile globale:
WALL_FILL_PEN. .fillbkgdpen
la penna dello sfondo del retino. Anche questa può essere letta da una variabile globale:
WALL_FBGD_PEN. x1, y1
coordinate del primo vertice. mask1 un codice di controllo. Usando il valore 1, la linea verrà tracciata, usando 0 il lato sarà omesso.
Il mio pilastrino era largo 20 cm, le coordinate dei 4 angoli del retino, per un muro spesso 30 cm, dovrebbero esser le seguenti:
-0.10, 0.00
-0.10, -0.30
0.10, -0.30
0.10, 0.00
per prima cosa, però dobbiamo renderci indipendenti dallo spessore del muro. Il pilastrino dovrà adattarsi a qualsiasi spessore, e quindi cambiamo il valore 0.30 con la variabile globale WALL_THICKNESS, senza dimenticare di farla precedere dal segno meno.
-0.10, 0.00
-0.10, - WALL_THICKNESS
0.10, - WALL_THICKNESS
0.10, 0.00
potrebbe già andare bene, ma c'è ancora una trappola. Se si definisce un rientro dell'infisso, tutto l'oggetto finestra viene traslato della misura definita nel relativo campo. Tutto, compreso il pilastrino, che andrà a sporgere dalla parte opposta. Dobbiamo quindi sommare alle coordinate Y un valore pari a questo spostamento (che è considerato negativo). Sapendo che tale valore è memorizzato nella variabile globale WIDO_SILL, le coordinate diventano:
-0.10, WIDO_SILL -0.10, WIDO_SILL -WALL_THICKNESS 0.10, WIDO_SILL -WALL_THICKNESS 0.10, WIDO_SILL
ecco quindi che, finalmente, siamo in grado di scrivere la fatidica istruzione:
POLY2_b 5, 7, WALL_FILL_PEN, WALL_FBGD_PEN,
-0.10, WIDO_SILL, 1,
-0.10, WIDO_SILL-WALL_THICKNESS, 1,
0.10, WIDO_SILL-WALL_THICKNESS, 1,
0.10, WIDO_SILL, 1
Manca ora solo un particolare. Se la finestra Testo GDL 2D è vuota, allora ArchiCAD mostra il disegno contenuto nella finetra Simbolo 2D. Se invece contiene del testo, verrà usato solo questo, per generare il disegno di pianta. A meno che non venga richiamato esplicitamente anche il simbolo disegnato. Ed è quello che faremo noi:
FRAGMENT2 all,0
Il parametro "all" comunica di visualizzare tutti i "fragment", ossia i lucidi del disegno 2D. Il successivo valore zero indica che devolo essere usati i colori e tipi linea originale, non quelli correnti.
Ecco quindi tutto lo script:
LINE_TYPE WALL_LINETYPE
FILL WALL_FILL
PEN WALL_SECT_PEN
POLY2_B 4, 7, WALL_FILL_PEN, WALL_FBGD_PEN,
-0.10, WIDO_SILL, 1,
-0.10, WIDO_SILL - WALL_THICKNESS, 1,
0.10, WIDO_SILL - WALL_THICKNESS, 1,
0.10, WIDO_SILL, 1
FRAGMENT2 all,0

ZioBob

Rocorona
27-08-2008, 09:26
Thanks for re-publishing here this my old tutorial.
Remember that you can find the ORIGINAL and ALWAYS UPDATED version, beside much more useful resources, in the TUTORIAL and DOWNLOAD sections, on ArchiRADAR Web site : [Only registered and activated users can see links] ([Only registered and activated users can see links])