1. Uvod
2. English introduction
phigs.js phigs.jarAlso a new file is added:
dxf.jsThis file includes commands and variables for DXF terminal and needs to be copied on the same directory as phigs.js. Include it in your program with:
<SCRIPT language=javascript src=dxf.js> </script>If you want results to be seen only in DXF terminal you don't define applet anymore (<APPLET code=phigs.class ....).
ConnID = new dxf(width, height, dxf_version);Arguments width and height are defining resolution in number of pixels. Dxf_version is defined as a number. It depend on which version of DXF file will be generated. The default values are:
width = 500 height = 500 dxf_version = 12Chosing dxf_version 14 of higher you get a new type of polyline generated in DXF file (LWPOLYLINE-2D instead of POLYLINE - 3D), which is used in AutoCAD version 14 or higher.
ConnID = new dxf();It is also possible to generate 2 or more DXF file simply with opening a new workstation. Example:
popen_ws(2, new dxf(), 12); // open Workstation No.2 (ws_ID = 2)When DXF code is generated in a window it is needed to be saved as text file with DXF extension.
3. Kaj je DXF format
0 SECTION 2 ENTITIES - začetek vnosa elementov 0 POLYLINE - risi črtovje 8 - določitev ravnine 0 - številka ravnine 62 - določitev barve 3 - indeks barve 10 0 20 30 0 VERTEX - vozlišče 10 - določi x 12.5 - x = 12.5 20 - določi y 33.4 - y = 33.4 30 - določi z 0.0 - z = 0 VERTEX 10 42.32 20 10.0 30 0.0 0 TEXT - tekst 8 - ravnina 0 7 4 10 - x koordinata pozicije teksta 250 20 - y koordinata pozicije teksta 250 30 - z koordinata pozicije teksta 0 40 - določi višino znakov 10.0 - visina znaka je 10.0 1 izpis - tekst ki se izpise 62 - barva teksta 3 0 ENDSEC - SECTION end 0 EOF - konec datotekeTo je zelo preprost primer DXF datoteke, ki izriše črtoVJE (ukaz POLYLINE) in izpiše besedo (ukaz TEXT).
0 LWPOLYLINE - riši Light Weight Polyline (2D) 8 - določi risalno ravnino na kateri do črta 0 - številka ravnine 62 - barva 7 90 - določi število vozlišč 2 - število vozlišč je 2 10 12.5 - x koordinata prvega vozlišča 20 33.4 - y koordinata prvega vozlišča 10 42.32 - x koordinata drugega vozlišča 20 10.0 - y koordinata drugega vozliščaKot je razvidno iz primera je LWPOLYLINE bolj elegantna resitev, ker je zapis krajš. Ni potrebno namreč vedno znova označevati novega vozlišča temveč se samo izpisuje x in y komponente, prej pa je treba navesti število vozlišč. Seveda pa nekaj prostora tudi prihrani odsotnost z koordinate, odpadejo pa tudi ukazi za zaključek črtovja (ENDSEQ).
4. Nadgradnja Phigsa
dxf_window_number++; var w = window.open("", dxf_window_number, "width=300,height=650,status=no," + "location=no,toolbar=no,menubar=yes,"+ "scrollbars=yes,resizable=yes"); this.display = w.document.open("text/plain"); // opens display for writingS spremenljivko dxf_window_number določimo ime okna. Ta podatek pri odpiranju okna sicer ne bi bil pomemben, a sem ga uvedel, ker se mora ob ponovnem odpiranju spremeniti (dxf_window_number++). S tem sem omogočil odpiranje večih oken hkrati(če bi bilo ime okna ob ponovnem odpiranju enako bi program ponovno uporabil že odprto okno)oziroma delo z več DXF delovnimi področji. (Primer 3).
function pclose_ws(ws_id) { phigs.close(); }S to spremembo, pa se je phigs v grafičnem okolju obnašal tako, da je sicer narisal vse elemente, vendar jih je tudi takoj pobrisal z ekrana. Z na novo implementirano verzijo datoteke phigs.jar pa je bil ta problem rešen.
this.close = function () { this.display.writeln("0\nENDSEC\n0\nEOF"); this.display.close(); }Zgoraj navedena funkcija pa se ne nahaja v Phigs.js, temveč v dodatni Java Script datoteki dxf.js, ki vsebuje funkcije za izbrani temrminal. Definicija naloge je sicer zahtevala, da se spremeni samo phigs.js, ostalo pa naj bi ostalo minimalno spremenjeno (koda programa, ki uporablja phigs ...). Toda z upoštevanjem tega je bilo nemogoče uporabljati DXF terminal, brez da bi se odprlo phigsovo grafično okno za izris rezultatov (applet). Torej za izpolnitev tega pogoja, je bilo potrebno izločiti vrstico, ki določi applet:
<APPLET CODE=phigs.class archive=phigs.jar name=Phigs width=500 height=500> </APPLET>Z ogledom zgornje vrstice sem hitro ugotovil, da z izločitvijo le-te izgubim pomembna podatka: width in height (višina in širina delovnega področja). To pa se uporablja tudi za določitev in zapis koordinat v rezultatsko okno. Zato je nastala datoteka dxf.js. Ki jo z naslednjo vrstico vključimo v program:
<script language=javascript src=dxf.js> </script>S tem, ko je vključena nova datoteka, je potrebno program, ki uporablja phigs nekoliko spremeniti. V kolikor uporabnik želi uporabnik uporabljati samo DXF terminal (brez grafike), je potrebno izločiti vrstico, ki določi applet. Delovno področje pa v tem primeru definiramo:
ConnID = new dxf(širina, višina, Acad_Version); popen_ws = (ws_id , ConnID , WorkstnType);To pa je tudi vse, kar mora uporabnik spremeniti v svojem programu. Kot delovno področje se torej prikaže okno. Ko phigs konča pisanje vanj, ga preprosto shranimo kot "Save As" pod imenom s končnico DXF. Datoteko je možno zagnati v AutoCad-u in drugih grafičnih programih.
phigs.js in phigs.jarZ uporabo starih verzij se DXF koda ne bo v celoti izpisala v okno.
5. Primeri
6. Zaključek