Program mora imeti grafični uporabniški vmesnik. Jezik: JavaScript,
ker ga znajo izvajati Netscape Navigator in Internet Exporer, kar daje
programu splošno uporabnost
Če smo izbrali palico pomeni koordinata x3 kot prirezanja pri oglišču 1 (x1,y1) in y3 kot prirezanja pri oglišču 2 (x2,y2). Kot merimo v stopinjah, kot je prikazano na sliki:
Če hočemo imeti neprirezno palico v polja x3 in y3 vpisemo 90
Sedaj moramo izbrati samo še profil. Izberemo lahko enega izmed profilov za okvir okna ali enga izmed profilov za okensko krilo.
Izbrali smo vse potrebne parametre za izris okna (obliko, velikost in vrsto profila). Z vnesenimi podatki izpišemo DXF datoteko tako, da pritisenemo gumb y napisom DXF na dnu strani. Program odpre novo okno v katrem je izpisana datoteka. Datoteko shranim na poljubno mseto z ukazom File / Save As...
Datoteko DXF lahko sedaj uvotimo v skoraj vsak 3D modelirnik.
Profil dodamo tako da v izvorno kodo programa dodamo točke novega profila.
Profil definiramo v funkciji izbor.V blok switch dodamo polje
x in z koordinat.
case "kvadtat":
z = new InitArray(0,4,4,0,0);
x = new InitArray(0,0,3,3,0);
break;
V uporabniski vmesnik moramo dodati ime profila. V blok <select> dodamo novo vrstico:
<SELECT NAME="profili" ONCHANGE="izbor(this.form.profili)">
<OPTION SELECTED> <B>Izberi profil </B>
<OPTION VALUE="GR1000">GR1000 - Osnovni profil okvira
62x98
<OPTION VALUE="GR1001">GR1001 - Osnovni profil okvira
62x76
<OPTION VALUE="GR1002">GR1002 - Osnovni profil okvira
62x80
<OPTION VALUE="GF1020">GF1020 - Osnovni profil krila 74x80
<OPTION VALUE="GF1022">GF1022 - Osnovni profil krila 74x102
<OPTION VALUE="Oznaka profila"> opis profila
</SELECT>
Oznaka profila mora biti enaka imenu slike profila brez koncnice
.gif
Skenirana slika .gif mora biti v istem direktoriju
kot program okno.htm
for (var i= 0 ; i < x.length ; i++)
{
xp[i] = x[i] * Math.cos(rot)*sx + x1;
yp[i] = x[i] * Math.sin(rot)*sx + y1;
}
transformiran profil kopiramo tako, da ga shranimo v drugo spremenljivko
( iz x v xp in y v yp)
V formatu DXF poznamo element za površino 3DFACE, ki ga definirajo štiri
točke(x,y,z). Točke si sledijo v proti urnem
smislu in tako definirajo normalo iz površine.
DXF označbe 10,20,30 podajajo točko 0; 11,21,31 točko 1 .
1,2,3 na prvem mestu pomeni x,y,z.
Ustrezno usmerjenost normale dosežemo tako, da 3DFACE definiramo z:
oglišče.točka točka je sestavljena iz x[i],y[i],z[i]
1.1 1.2 2.2 2.1
1.2 1.3 2.3 2.2
1.3 1.4 2.4 2.3
:
:
2.1 2.2 3.2 3.1
2.2 2.3 3.3 3.2
function face(t1x,t1y,t2x,t2y,t3x,t3y,t4x,t4y,i)
{
rez.write("3DFACE\n8\n0\n")
rez.write("10\n")
rez.write(t1x + "\n")
rez.write("20\n")
rez.write(t1y + "\n")
rez.write("30\n")
rez.write(z[i] + "\n")
rez.write("11\n")
rez.write(t2x + "\n")
rez.write("21\n")
rez.write(t2y + "\n")
rez.write("31\n")
rez.write(z[i+1] + "\n")
rez.write("12\n")
rez.write(t3x + "\n")
rez.write("22\n")
rez.write(t3y + "\n")
rez.write("32\n")
rez.write(z[i+1] + "\n")
rez.write("13\n")
rez.write(t4x + "\n")
rez.write("23\n")
rez.write(t4y + "\n")
rez.write("33\n")
rez.write(z[i] + "\n")
rez.write("0\n")
}
for (var i= 0 ; i< x.length-1 ; i++)
{
face(xp1[i],yp1[i],xp1[i+1],yp1[i+1],xp2[i+1],yp2[i+1],xp2[i],yp2[i],i)
if (og>1)
{
face(xp2[i],yp2[i],xp2[i+1],yp2[i+1],xp3[i+1],yp3[i+1],xp3[i],yp3[i],i)
face(xp3[i],yp3[i],xp3[i+1],yp3[i+1],xp4[i+1],yp4[i+1],xp4[i],yp4[i],i)
}
if (og>3)
face(xp4[i],yp4[i],xp4[i+1],yp4[i+1],xp1[i+1],yp1[i+1],xp1[i],yp1[i],i)
}
spremenljivka og podaja obliko okna in s tem število stranic.
Štirikotnik