Modelli semplificati per costruire profili di porte sui muri: Arco_pentagono_porta.gsm, Arco_esagono_porta.gsm Modelli ripresi da: Arco a Ferro di Cavallo 12.gsm Le porte sono oggetti GDL. Qualsiasi oggetto GDL può essere richiamato come porta o finestra, tuttavia verrà creato un foro (per le porte) di dimensioni a*b e verrà inserito l'oggetto con il PO portato sulla verticale. NOTA: Nel richiamare l'oggetto GDL come porta vengono scambiate le y con le z, da sinistrorso a destrorso. Oppure si può partire da una finestra esistente (che il programma riconoscerà subito come tale), sostituendo i nuovi poligoni a quelli esistenti, aggiungendo e variandoi parametri dimensionali. Dopo aver duplicato la porta, si parte dal 2D,verificando la forma con gs_arc_2D=1, nelle variabili: Rappresentazione 3D ... Materiali .... ac_details Ridimens. Apert. AC ... gs_ui_current_page Pagina IU corrente ... openingArchHeight Altezza Arco gs_shoulder_height Altezza Spalla ... gs_arc_2D Arco in 2D ---------------------------------------------------------------------- Parametri interni al muro, il cui valore viene assunto nel momento in cui si applica la porta a un muro (altrimenti, nell'oggetto GDL, valgono 0) C_=sezione muro : C_=WALL_THICKNESS (sono equivalenti) R_=distanza tra il piano stipiti e l'asse del muro cilidrico Se il muro è rettilineo: R_=0 NOTA: Il muro curvo ha un'angolo massimo di 180°, altrimenti non sarebbe chiaro qual è la parte convessa, quando si operano i tagli con un piano orientato. Il muro a cerchio intero è formato da due muri a 180°: pertanto sulle giunzioni verrà inserita solo mezza porta. ---------------------------------------------------------------------- ---------------------------------------------------------------------- Per creare fori servono i comandi: ---------------------------------------------------------------------- wallhole n, st, xi,yi,si st: 1=materiale muro,2=materiale wallhole si=1+2+4+8+64 1:spigolo verticale anteriore a partire dal nodo i 2:spigolo orizzontale 3:spigolo verticale posteriore 8:visibilità  poligoni laterali, senza questo valore può dare errore:"lati insufficienti nella generatrice" 64:spigolo orizzontale lisciato (funziona male o non funziona) in sintesi: si=1+4+8=13 per nascondere spigolo ortogonale (sup.curva) si=1+2+4+8=15 per mostrare spigolo ortogonale ---------------------------------------------------------------------- wallniche n, m, st, vx,vy,vz, pt, xi,yi,si "a prisma" m=1 "a piramide" m=2 "a cuneo" m=3 !status generale st=1+2+8+16+32+64+128 !1=usa materiale muro (nei poligoni generati dal taglio) !2=usa materiale wallniche !8,16=tipo di taglio: 0=finito !16=semi-infinito !8+16=24=infinito !32=intersezione invece di differenza(può essere usata solo con CUTFORM) !64=nasconde edges bottom !128=nasconde edges top vx,vy,vz:direzione di taglio per m=1 definisce l'inclinazione del prisma: (vx,vy,vz) può essere sostituito dal versore (ix,iy,iz): md=sqr(vx^2+vy^2+vz^2) al=asn(vy/md) az=acs(vx/(vx^2+vy^2))*sgn(vz) ix=cos(az)*cos(al),iy=sin(al),iz=sin(az)*cos(al) !versore azimut az=90 direzione di taglio,valori diversi ruotano il vettore parallelamente a PO (la coordinata relativa 1 corrisponde alla direzione x del muro medesimo, la coordinata relativa 2 corrisponde alla direzione oggettiva verticale z, la coordinata relativa 3 corrisponde alla direzione y ortogonale al muro) alzo al=0, valori diversi inclinano il vettore sul PO (per az=90,al=0 il versore diventa normale al muro: 0,0,1 ) per m=2 il vettore spiccato dal centro di a*b definisce la posizione del vertice piramide: vx=md*cos(az)*cos(al),vy=md*sin(al),vz=md*sin(az)*cos(al) per m=3 definisce la posizione del filo del cuneo (parallelo a y, verticale del muro): vx=md*cos(az)*cos(al),vy=0,vz=md*sin(az)*cos(al) pt=profondità taglio Definisce la distanza lungo x,y,z del piano di taglio dall'origine cartesiana locale. Se il taglio è infinito,valori +8+16, pt non ha effetto. Se il taglio è finito (valori +8+16 mancanti), viene tagliata la parte z<0 e z>d, dove d=pt*sin(az)*cos(al)=pt*vz/sqr(vx^2+vy^2+vz^2) !status nodi=1+2+4+8+16+64 !1:visibilità  edge alto fronte !2:visibilità  edge ortogonale muro !4:visibilità  edge alto retro !8:visibilità  edge lato fronte !16:visibilità  edge lato retro !64:visibilità  relativa edge ortogonale muro (fa andare in tilt il rendering) in sintesi: si=1+4+8+16=29 per nascondere spigolo ortogonale (sup.curva) si=1+2+4+8+16=31 per mostrare spigolo ortogonale Nel caso di muri curvi, con opzione +16 in st attiva, lo semispazio tagliato deve essere sempre dalla banda convessa (altrimenti il foro della porta può creare altri fori entro il muro, come si verifica sostituendo nel vettore -R_ al posto di R_ in wallniche nelle porte preconfezionate: il cuneo si inverte e il taglio può interessare altre porzioni di muro). --------------------------------- Caso porte convergenti al centro su muri curvi: metodo "a cuneo": m=3 Per muri curvi, utilizzando wallniche, con vx=0,vy0=,vz=sgn(r_), si verifica che: Il taglio semi-infinito +16 viene sempre operato verso l'esterno del cilindro: Risulta: r_>0 quando la porta è inserita sul lato convesso. Sul lato convesso, quindi, con componente vz positiva, il cuneo si chiude. Il piano di riferimento (fisso) si trova sulla parte convessa (larga a): infatti togliendo da st i valori +8+16 (taglio finito), riducendo i valori di pt il secondo piano di taglio si muove verso la parte convessa, con valori più alti si sposta verso il centro (allungando il foro). Con taglio finito non è possibile rimuovere la parte corrispondente alla sporgenza muro, davanti alla soglia, salvo arretrare tutto il cuneo di taglio (ma poi la larghezza soglia si riduce). Per questo va usato il taglio seminfinito +16 (rimuove tutta la parte anteriore, rispetto il piano di riferimento sulla soglia larga 2*a) Per porta sul lato convesso, la distanza minima da calcolare, per la profondità di taglio pt, deve corrispondere alla profondità della soglia s, di poco inferiore a c_: r2=sqr(a^2/4+r_^2) !raggio > muro s=c_*r_/r2 !spessore soglia Profondità di taglio minima pt=s (Con distanze inferiori il piano di taglio si sposta dal centro alla periferia , esempio: pt=s-d sposta dal centro il piano di taglio del valore d, operando una nicchia di profondità s-d, aperta sul lato convesso) La porta si allarga verso il centro e l'apertura massima è 2*a2, a2=a+a*s/r_ Se la porta è posta sul piano stipiti (distanza r_ dal centro) ed ha spessore sp, a causa della strombatura, la parte interna li sarà ridotta rispetto 2*a: li=2*a*(r_-sp)/r_ Il raggio maggiore del muro vale: r2=sqr(r_^2+a^2/4) Il raggio minore del muro vale: r1=r2-c_ Il muro sporge oltre la porta di sporg_2=-r_r2 Risulta: r_<0 quando la porta è inserita sul lato concavo. Sul lato concavo, quindi, con componente vz negativa, il cuneo si apre. r1=sqr(a^2/4+r_^2) !raggio < muro r2=sqr(a^2/4+r_^2)+c_ !raggio > muro Profondità soglia: s:c_=abs(r_)/r1=cateto/ipotenusa s=c_*abs(r_)/r1 Profondità di taglio pt=0: il piano di taglio si trova sulla soglia anteriore, quindi elimina tutto il muro (che rientra). Inserendo valori negativi per profondità taglio, il piano mobile di taglio si allontana dal centro: parte del muro non verrà tagliato. (esempio: pt=-d sposta dal centro il piano di taglio del valore d, operando una nicchia di profondità s-d, aperta sul lato convesso). La porta fuoriesce dal muro concavo di: sporg_1=r1-abs(r_) !rientranza muro rispetto piano stipiti Il muro sulla parte convessa sporge rispetto gli stipiti di: sporg_2=r2-s-abs(r_) In questo caso la porta non può essere posta sul piano stipiti, ma va arretrata del valore sporg_1 Il semiangolo del cuneo vale sempre: an=atn( .5*a/abs(r_) ) La profondità soglia vale sempre: s=c_*cos(atn) s=c_*abs(r_)/=sqr(a^2/4+r_^2) Se la porta si allarga superiormente oltre la larghezza soglia=a, le parti eccedenti non verranno tagliate in modo corretto lungo la banda concava, generando sui lati parti non tagliate dalla soglia al centro: occorre spostare allora il piano mobile di taglio verso il centro, aggiungendo un opportuno valore (che dipende anche dal raggio). Se pt=abs(r_) allora il piano di taglio eliminerà comunque i residui. NOTA:in 2D il valore r_ cambia di segno rispetto il 3D CUTFORM n, metodo, st, rx, ry, rz, pt, xi, yi, si Nota: i valori di stato generali dei fori non possono essere rappresentati da combinazioni alfa-numeriche: usare una sola variabile o soltanto numeri. es: pt=WALL_THICKNESS*pr/100 (da anteporre a wallniche, non da sostituire a pt) es: if jj=0 then st=1+16 else st=2+16 ---------------------------------------------------------------------- ---------------------------------------------------------------------- esistono fori preconfezionati: "architrave inclinata" !11 "a triangolo" !8 "losanga" !15 "ottagonale" !6 "arco tutto sesto" !1 "semiarco" !7 "archiacuto" !13 "ellisse" !2 "semicerchio verticale" !10 "composto" !14 !0=foro rettangolare a*b Per ottenere i fori, il numero n del codice va inserito in 3D o in testo master: call "GS Door Opening Functions", parameters all iWindowShape = n, openingArchHeight = h, bParalellInCurvedWalls = bt h definisce l'altezza dell'arco: h