Приклад програми формування dxf-файлу на TurboPascal

Загальна структура файлу

  1. Розділ ЗАГОЛОВКУ /HEADER/ містить загальну інформацію про креслення
  2. Розділ ТАБЛИЦЬ /TABLES/ містить визначення іменованих елементів:

- таблиця типів ліній

- таблиця шарів

- таблиця типів шрифтів

- таблиця видів

  1. Розділ БЛОКІВ /BLOCKS/ містить графічні примітиви визначень блоків
  2. Розділ ПРИМІТИВІВ /ENTITIES/ містить графічні примітиви креслення, в тому числі посилання на блоки
  3. Розділ КІНЦЯ ФАЙЛУ /EOF/

Якщо файл креслення типу dwg в середовищі AutoCAD зберегти з розширенням dxf (не перейменувати, а зберегти в іншому форматі), а потім переглянути в будь-якому текстовому редакторі, можна побачити інформацію дуже великого обсягу, на перший погляд незрозумілу і надлишкову. Не будемо детально зупинятися на її аналізі, розглянемо лише необхідні для формування dxf - файлу розділи. Зазначимо, що всі команди і повідомлення dxf - файлу традиційно англомовні. Для створення двохвимірних креслень, які містять основні графічні примітиви, запропонуємо такі елементи, оформлені у вигляді процедур на мові програмування Turbo Pascal:

  1. Початок секції примітивів
  2. Накреслення лінії
  3. Накреслення кола
  4. Накреслення тексту
  5. Кінець секції з кінцем файлу

Розглянемо процедури на мові програмування 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,0);

writeln(f0,62);

writeln(f0,CV);

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, 0);

writeln(f0,62);

writeln(f0,CV);

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,0);

writeln(f0,62);

writeln(f0,CV);

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;

Приклад програми формування dxf-файлу на TurboPascal

Постановка задачі. Написати програму накреслення сімейства (сім штук) різнокольорових концентричних кіл с центром на початку координат (0,0). Радіус максимального кола дорівнює 50 мм, всі інші відповідно на 6 мм менше.

Текст програми, написаній на мові програмування Turbo Pascal, приведений нижче. Процедури w1, w2, w3, w4, описані в декларативній частині програми, використовуються у виконавчій частині для виконання відповідних дій (див. коментарі у фігурних дужках). Текстовий файл f0, що має назву ris.dxf, містить інформацію, яка сприймається в середовищі AutoCAD як файл рисунку. Виконавча частина програми виділена жирним шрифтом. Саме її потрібно змінити у відповідності з умовою задачі. Файл рисунку ris.dxfстворюється у поточному каталозі, тобто D:\TP7\BIN\. Для відкриття його в середовищі AutoCAD достатньо двічі клацнути по ньому лівою кнопкою миші і виконати команду Вид → Зумирование → Все.

program grafica;

var f0:text;

i,j,cv:integer;

ix,iy,ix1,iy1,irad:real;

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,0);

writeln(f0,62);

writeln(f0,CV);

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,0);

writeln(f0,62);

writeln(f0,CV);

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,'ENDSEC');

writeln(f0,0);

writeln(f0,'EOF');

end;

Begin

assign(f0,'ris.dxf');

Rewrite(f0);

W1;

cv:=0;ix:=0;iy:=0;irad:=50;

for i:=0 to 6 do

Begin

cv:=i;

W3;

irad:=irad-6;

End;

W4;

Close(f0);

End.

В результаті виконання програми отримаємо файл ris.dxf. При відкритті його в середовищі AutoCAD побачимо креслення, зображене на рис.1.

Приклад програми формування dxf-файлу на TurboPascal - student2.ru

Рис.1

Варіанти завдань(№ варіанта співпадає з порядковим номером студента в групі)

1. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 50 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 10 мм вправо і вверх.

2. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 50 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 10 мм вправо і вниз.

3. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 50 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 10 мм вліво і вверх.

4. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 50 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 10 мм вліво і вниз.

5. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 50 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 10 мм вверх.

6. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 50 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 10 мм вниз.

7. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 50 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 10 мм вправо.

8. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 50 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 10 мм вліво.

9. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 100 мм в додатному напрямку вісі X. Кожний наступний відрізок накреслюється паралельно попередньому через 10 мм в додатному напрямку вісі Y.

10. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 100 мм в додатному напрямку вісі X. Кожний наступний відрізок накреслюється паралельно попередньому через 10 мм у від’ємному напрямку вісі Y.

11. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 150 мм у від’ємному напрямку вісі X. Кожний наступний відрізок накреслюється паралельно попередньому через 10 мм в додатному напрямку вісі Y.

12. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 150 мм у від’ємному напрямку вісі X. Кожний наступний відрізок накреслюється паралельно попередньому через 10 мм у від’ємному напрямку вісі Y.

13. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 100 мм в додатному напрямку вісі Y. Кожний наступний відрізок накреслюється паралельно попередньому через 10 мм в додатному напрямку вісі X.

14. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 100 мм в додатному напрямку вісі Y. Кожний наступний відрізок накреслюється паралельно попередньому через 10 мм у від’ємному напрямку вісі X.

15. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 120 мм у від’ємному напрямку вісі Y. Кожний наступний відрізок накреслюється паралельно попередньому через 10 мм в додатному напрямку вісі X.

16. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 120 мм у від’ємному напрямку вісі Y. Кожний наступний відрізок накреслюється паралельно попередньому через 10 мм у від’ємному напрямку вісі X.

17. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 100 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 20 мм вправо і вверх.

18. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 100 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 20 мм вправо і вниз.

19. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 150 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 25 мм вліво і вверх.

20. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 150 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 25 мм вліво і вниз.

21. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 120 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 15 мм вверх.

22. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 120 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 15 мм вниз.

23. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 200 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 50 мм вправо.

24. Написати програму накреслення сімейства (сім штук) різнокольорових кіл радіуса 200 мм. Центр першого кола знаходиться на початку координат (0,0). Центр кожного наступного кола відстає від центру попереднього на 50 мм вліво.

25. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 200 мм в додатному напрямку вісі X. Кожний наступний відрізок накреслюється паралельно попередньому через 15 мм в додатному напрямку вісі Y.

26. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 200 мм в додатному напрямку вісі X. Кожний наступний відрізок накреслюється паралельно попередньому через 15 мм у від’ємному напрямку вісі Y.

27. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 150 мм у від’ємному напрямку вісі X. Кожний наступний відрізок накреслюється паралельно попередньому через 25 мм в додатному напрямку вісі Y.

28. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 150 мм у від’ємному напрямку вісі X. Кожний наступний відрізок накреслюється паралельно попередньому через 25 мм у від’ємному напрямку вісі Y.

29. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 100 мм в додатному напрямку вісі Y. Кожний наступний відрізок накреслюється паралельно попередньому через 30 мм в додатному напрямку вісі X.

30. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 100 мм в додатному напрямку вісі Y. Кожний наступний відрізок накреслюється паралельно попередньому через 30 мм у від’ємному напрямку вісі X.

31. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 180 мм у від’ємному напрямку вісі Y. Кожний наступний відрізок накреслюється паралельно попередньому через 10 мм в додатному напрямку вісі X.

32. Написати програму накреслення сімейства (сім штук) різнокольорових відрізків. Початок першого знаходиться в точці з координатами (0,0), має довжину 180 мм у від’ємному напрямку вісі Y. Кожний наступний відрізок накреслюється паралельно попередньому через 10 мм у від’ємному напрямку вісі X.

Частина ІІІ.Основні поняття курсу Інформатика (практикум)

Наши рекомендации