Розглянемо процедури на мові програмування Turbo Pascal, які цілком можна використати для формування dxf - файлу. В даному прикладі f0 – файл, який слід визначити з розширенням dxf і відкрити для запису. Файл dxf у найпростішому випадку починається з секції примітивів (процедура w1). Далі, в залежності від задачі, що вирішується, багатократно (у циклі) або єдиний раз викликаються процедури w2 (LINE – лінія), w3 (CIRCLE – коло), w4 (TEXT – текст) у певній послідовності. У разі необхідності використання інших графічних примітивів (дуга, прямокутник, і т.д.) слід самостійно, по аналогії, дописати відповідні процедури.
procedure w1; { Початок секції примітивів }
begin
writeln(f0,0);
writeln(f0,'SECTION');
writeln(f0,2);
writeln(f0,'ENTITIES');
end;
procedure w2; { Накреслення лінії }
begin
writeln(f0,0);
writeln(f0,'LINE');
writeln(f0,8);
writeln(f0,sim1);
writeln(f0,62);
writeln(f0,CV);
writeln(f0,6);
writeln(f0,sim2);
writeln(f0,10);
writeln(f0,ix);
writeln(f0,20);
writeln(f0,iy);
writeln(f0,11);
writeln(f0,ix1);
writeln(f0,21);
writeln(f0,iy1);
end;
procedure w3; { Накреслення кола }
begin
writeln(f0,0);
writeln(f0,'CIRCLE');
writeln(f0,8);
writeln(f0, sim1);
writeln(f0,62);
writeln(f0,CV);
writeln(f0,6);
writeln(f0,sim2);
writeln(f0,10);
writeln(f0,ix);
writeln(f0,20);
writeln(f0,iy);
writeln(f0,40);
writeln(f0,irad);
end;
procedure w4; { Накреслення тексту }
begin
writeln(f0,0);
writeln(f0,'TEXT');
writeln(f0,8);
writeln(f0,sim1);
writeln(f0,62);
writeln(f0,CV);
writeln(f0,6);
writeln(f0,sim2);
writeln(f0,10);
writeln(f0,ix);
writeln(f0,20);
writeln(f0,iy);
writeln(f0,40);
writeln(f0,v);
writeln(f0,1);
writeln(f0,sim);
writeln(f0,50);
writeln(f0,ug);
end;
procedure w5; { Кінець секції з кінцем файлу }
begin
writeln(f0,0);
writeln(f0,'ENDSEC');
writeln(f0,0);
writeln(f0,'EOF');
end;
procedure w6; { секція таблиць з початком і кінцем для визначення типів ліній і шарів }
Якщо тип ліній або шар змінюється, останню процедуру (w6) в тексті програми слід викликати першою (перед w1). При незмінному типу ліній процедуру w6 не включають.
Файл dxf складається з груп, кожна з яких містить два рядка. В першому рядку розміщується код групи, в другому – значення групи. Тип значення залежить від коду групи:
0 – 9 рядковий тип
10 – 59 дійсний тип
60 – 79 цілий тип
Розглянемо загальне призначення кодів деяких груп (ті, що завжди виконують однакову функцію, відмічені словом "фіксований"):
0 – початок графічного примітива, входу в таблицю або розділювача файлів
1 – початкове текстове значення для графічного примітива
2 – ім’я; описувач атрибута, ім’я блока, і т.д.
3-5 –інші текстові або найменовані значення
6 – ім’я типа лінії (фіксоване)
7 – ім’я типа текстового шрифту (фіксоване)
8 – ім’я шару (фіксоване)
9– ідентифікатор імені змінної (використовується тільки в розділі ЗАГОЛОВОК файлу)
10 – початкова координата Х (початкова точка лінії або текстового графічного примітива, центр кола і т.д.)
11-18 – інші координати Х
20 – початкова координата Y
21-28 – інші координати Y
40-48 – значення з плаваючою комою (висота тексту, масштабні коефіцієнти і т.д.)
49 – повторне значення (багатократні групи 49 можуть попадатися в одному графічному примітиві для таблиць змінної довжини (довжини штрихів в таблиці LTYPE)
50-58 – кути
62 – номер кольору (фіксоване)
66 – прапорець "Далі йдуть графічні примітиви" (фіксоване)
70-78 – цілочисельні значення (наприклад, кількість повторень)
Наведені процедури – тільки приклади використання графічних примітивів для створення файлів з розширенням dxf. Їх можна змінювати, прибирати зайве, поповнювати в залежності від потреб користувача. Тобто, відштовхуючись від них, можна програмно створювати файли креслень, а потім просто відкривати їх в середовищі AutoCAD, що іноді буває зручніше і швидше, ніж креслити власноруч.
На прикладі процедури накреслення лінії (w2) пояснимо використання пари рядків для опису відповідних дій.
writeln(f0,0);
writeln(f0,'LINE');
Початок графічного примітиву накреслення лінії. 0 – початок графічного примітива, слово LINE записане в лапках як текстова константа.
writeln(f0,8);
writeln(f0,sim1);
Визначення шару, якщо їх декілька. 8 – ім’я шару, змінній sim1рядкового типу в програміприсвоюється назва потрібного шару (у лапках). У разі наявності тільки одного шару замість sim1слід поставити 0, тобто writeln(f0,0);.
writeln(f0,62);
writeln(f0,CV);
Визначення кольору. Якщо колір один і визначається за замовчуванням, цю пару рядків можна вилучити з процедури. 62 – номер кольору, CV – змінній CVцілого типу в програмі присвоюється потрібний номер (0 – чорний, 1 – червоний, 5 – синій, …)
writeln(f0,6);
writeln(f0,sim2);
Визначення типу лінії. Якщо тип один і визначається за замовчуванням, цю пару рядків можна вилучити з процедури. 6 – ім’я типа лінії, змінній sim2рядкового типу в програміприсвоюється назва потрібного типу лінії (у лапках).
writeln(f0,10);
writeln(f0,ix);
writeln(f0,20);
writeln(f0,iy);
writeln(f0,11);
writeln(f0,ix1);
writeln(f0,21);
writeln(f0,iy1);
Ці чотири пари рядків (разом з першою парою) є необхідними і визначають координати початку і кінця відрізку. 10 – початкова координата Х, змінній ixдійсного типу присвоюється потрібне значення; 20 – початкова координата Y, змінній iyдійсного типу присвоюється потрібне значення; 11, 21– кінцеві координати Х і Y, змінним ix1 іiy1 присвоюються потрібні значення.
В процедурі накреслення кола w3 розглянемо тільки три пари рядків, які визначають координати центру кола (ix, iy) і радіус irad:
writeln(f0,10);
writeln(f0,ix);
writeln(f0,20);
writeln(f0,iy);
writeln(f0,40);
writeln(f0,irad);
В процедурі накреслення тексту w4 розглянемо п’ять пар рядків, які визначають координати початку тексту (ix, iy), висоту символів v, сам текст sim і кут нахилу тексту ug.