DXF

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.

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äljaarvatud jooned, mis on plokkides). See kirjutab nende joonte otspunktid ekraanile. Programm näitab, kui lihtne on DXF-faili programmiliselt lugeda.
1000 REM1010 REM Extract lines from DXF file1020 REM1030 G1% = 01040 LINE INPUT "DXF file name: "; A$1050 OPEN "i", 1, A$ + ".dxf"1060 REM1070 REM Ignore until section start encountered1080 REM1090 GOSUB 20001100 IF G% <> 0 THEN 10901110 IF S$ <> "SECTION" THEN 10901120 GOSUB 20001130 REM1140 REM Skip unless ENTITIES section1150 REM1160 IF S$ <> "ENTITIES" THEN 10901170 REM1180 REM Scan until end of section, processing LINEs1190 REM1200 GOSUB 20001210 IF G% = 0 AND S$ = "ENDSEC" THEN 22001220 IF G% = 0 AND S$ = "LINE" THEN GOSUB 1400 : GOTO 12101230 GOTO 12001400 REM1410 REM Accumulate LINE entity groups1420 REM1430 GOSUB 20001440 IF G% = 10 THEN X1 = X : Y1 = Y : Z1 = Z1450 IF G% = 11 THEN X2 = X : Y2 = Y : Z2 = Z1460 IF G% = 0 THEN PRINT "Line from(";X1;",";Y1;",";Z1;") to (";X2;",";Y2;",";Z2;")":RETURN1470 GOTO 14302000 REM2010 REM Read group code and following value2020 REM For X coordinates, read Y and possibly Z also2030 REM2040 IF G1% < 0 THEN G% = -G1% : G1% = 0 ELSE INPUT #1, G%2050 IF G% < 10 OR G% = 999 THEN LINE INPUT #1, S$ : RETURN2060 IF G% >= 38 AND G% <= 49 THEN INPUT #1, V : RETURN2080 IF G% >= 50 AND G% <= 59 THEN INPUT #1, A : RETURN2090 IF G% >= 60 AND G% <= 69 THEN INPUT #1, P% : RETURN2100 IF G% >= 70 AND G% <= 79 THEN INPUT #1, F% : RETURN2110 IF G% >= 210 AND G% <= 219 THEN 21302115 IF G% >= 1000 THEN LINE INPUT #1, T$ : RETURN2120 IF G% >= 20 THEN PRINT "Invalid group code";G% : STOP2130 INPUT #1, X2140 INPUT #1, G1%2150 IF G1% <> (G%+10) THEN PRINT "Invalid Y coord code";G1% : STOP2160 INPUT #1, Y2170 INPUT #1, G1%2180 IF G1% <> (G%+20) THEN G1% = -G1% ELSE INPUT #1, Z2190 RETURN2200 CLOSE 1