AutoCAD DXF (Drawing eXchange Format) on CAD-andmete salvestamise failivorming, mille eesmärgiks on jooniste andmete vahetamine erinevate CAD-i programmide vahel.
DXF võeti esimest korda kasutusele 1982. aasta detsembris, AutoCAD-i esimesest täisversioonist. Joonestajatel oli vaja avada AutoCAD-i jooniseid kasutades teisi joonestamise programme. DXF sai loodud eesmärgiga esindada täpselt samu graafilisi andmeid Autodeski omandiõigusega DWG-failivorminguga, et neid oleks võimalik jagada erinevate CAD-i programmide vahel.
DXF-failid on populaarsed tööstuses, kus neid kasutatakse CNC pinkide, 3D-printerite, laserlõikuspinkide, vesilõikuspinkide ja paljudele teistele erinevatele arvprogrammjuhtimisega tööpinkidele koodi (näiteks G-koodi) genereerimisel.
Alates AutoCAD-i versioonist "Release 10", mis väljastati 1988. aasta oktoobris, toetab programm nii ASCII kui ka binaarset DXF-failivormingut. Varasematel versioonidel on tugi ainult ASCII DXF-failivormingule. Binaarse DXF-failivorming nõuab salvestamiseks kuni 25% vähem ruumi, faili kirjutamine ja lugemine on tüüpiliselt viis korda kiirem ning ujukomaarvude täpsus on võrdne DWG-failivormingu omaga. ASCII failivorming on inimloetav ja seda on ka teistel programmidel lihtsam lugeda.
Faili struktuur
DXF-failivorming on kogu AutoCAD-i joonistusfailis sisalduva informatsiooni esitus märgistatud andmetena. Märgistatud andmed tähendavad seda, et faili iga andmeelemendi ees on täisarv, mida nimetatakse grupikoodiks. Grupikoodi väärtus näitab, millist tüüpi andmeelement sellele järgneb. See väärtus näitab ka selle objektitüübi andmeelemendi tähendust. Peaaegu kõiki joonise kasutaja määratud andmeid on võimalik esitada DXF-failivormingus.
ASCII DXF-faili on võimalik lugeda suvalise tekstiredaktoriga. Põhiline DXF-faili struktuur koosneb järgmistest sektsioonidest.
- HEADER (päis) – üldine teave AutoCAD-i seadete kohta. Igal parameetril on muutuja nimi ja seotud väärtus. Näiteks võib siin olla muutuja "$ACADVER" mille väärtus oleks "AC1012", kui DXF-fail on salvestatud AutoCAD-i versiooniga "Release 13".
- CLASSES (klassid) – teave rakenduse enda defineeritud klasside kohta, mille instantse kasutatakse sektsioonides BLOCKS, ENTITIES ja OBJECTS.
- TABLES (tabelid) – eri tabelid joonise kohta. Näiteks informatsiooni kasutatud joonte tüüpide, kihtide nimede ja kirjatüüpide kohta.
- BLOCKS (plokid) – väiksemad jooniseid või šabloonid, mida võib olla kasutatud põhijoonises. Näiteks võib see sisaldada joonist mingi keerulisema kujuga august, mida on pärast korduvalt paigutatud põhijoonisele. Plokkide definitsioonidele viidatakse ENTITIES-i tabelis INSERT-käsu abil.
- ENTITIES (üksused) – joonise üksused, näiteks jooned, ringid, INSERT-käsud plokkide kasutamiseks või isegi tekst.
- OBJECTS (objektid) – andmed mittegraafiliste objektide kohta joonises.
- THUMBNAILIMAGE (pisipilt) – DXF-faili eelvaate pilti.
- EOF ehk END OF FILE – tähistab DXF-andmete lõppu.
DXF-failivormingu liidestamine
DXF-vorming teeb lihtsaks failist ainult vajaliku informatsiooni lugemise.
Järgmine näide on Microsoft BASIC-us kirjutatud programm, mis loeb DXF-faili ja leiab sealt jooniselt kõik joon tüüpi üksused (v.a jooned, mis on plokkides). See kirjutab nende joonte otspunktid ekraanile. Programm näitab, kui lihtne on DXF-faili programmiliselt lugeda.
1000 REM 1010 REM Extract lines from DXF file 1020 REM 1030 G1% = 0 1040 LINE INPUT "DXF file name: "; A$ 1050 OPEN "i", 1, A$ + ".dxf" 1060 REM 1070 REM Ignore until section start encountered 1080 REM 1090 GOSUB 2000 1100 IF G% <> 0 THEN 1090 1110 IF S$ <> "SECTION" THEN 1090 1120 GOSUB 2000 1130 REM 1140 REM Skip unless ENTITIES section 1150 REM 1160 IF S$ <> "ENTITIES" THEN 1090 1170 REM 1180 REM Scan until end of section, processing LINEs 1190 REM 1200 GOSUB 2000 1210 IF G% = 0 AND S$ = "ENDSEC" THEN 2200 1220 IF G% = 0 AND S$ = "LINE" THEN GOSUB 1400 : GOTO 1210 1230 GOTO 1200 1400 REM 1410 REM Accumulate LINE entity groups 1420 REM 1430 GOSUB 2000 1440 IF G% = 10 THEN X1 = X : Y1 = Y : Z1 = Z 1450 IF G% = 11 THEN X2 = X : Y2 = Y : Z2 = Z 1460 IF G% = 0 THEN PRINT "Line from (";X1;",";Y1;",";Z1;") to (";X2;",";Y2;",";Z2;")":RETURN 1470 GOTO 1430 2000 REM 2010 REM Read group code and following value 2020 REM For X coordinates, read Y and possibly Z also 2030 REM 2040 IF G1% < 0 THEN G% = -G1% : G1% = 0 ELSE INPUT #1, G% 2050 IF G% < 10 OR G% = 999 THEN LINE INPUT #1, S$ : RETURN 2060 IF G% >= 38 AND G% <= 49 THEN INPUT #1, V : RETURN 2080 IF G% >= 50 AND G% <= 59 THEN INPUT #1, A : RETURN 2090 IF G% >= 60 AND G% <= 69 THEN INPUT #1, P% : RETURN 2100 IF G% >= 70 AND G% <= 79 THEN INPUT #1, F% : RETURN 2110 IF G% >= 210 AND G% <= 219 THEN 2130 2115 IF G% >= 1000 THEN LINE INPUT #1, T$ : RETURN 2120 IF G% >= 20 THEN PRINT "Invalid group code";G% : STOP 2130 INPUT #1, X 2140 INPUT #1, G1% 2150 IF G1% <> (G%+10) THEN PRINT "Invalid Y coord code"; G1% : STOP 2160 INPUT #1, Y 2170 INPUT #1, G1% 2180 IF G1% <> (G%+20) THEN G1% = -G1% ELSE INPUT #1, Z 2190 RETURN 2200 CLOSE 1
Välislingid
- LibreCAD – vabavaraline CAD-programm, millega on võimalik jooniseid teha, muuta ja DXF-failidena salvestada.
- DXF Reference – DXF-failivormingu täpsemad spetsifikatsioonid PDF-i kujul.