М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1...

32
М.У. 1268 6't 83656 llllllllll! Назаренко ' ' Ь. va Программирование в сист еме Лвтокад-14|'99 Ч. 1 ISSN 0202-3205 ЩЕНИЯ РОССИЙСКОМ ФЕДЕРАЦИИ МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ __ ________ __________ (МИИТ) _________________ Кафедра “САПР транспортных конструкций и сооружений” С. Н. НАЗАРЕНКО Утверждено редакционно-издательским советом университета ПРОГРАММИРОВАНИЕ В СИСТЕМЕ АВТОКАД-14. ЧАСТЬ. I. Методические указания к курсовому и дипломному проектированию. Москва 1999 УЧЕБНАЯ БИБЛИОТЕКА М И И Т II

Upload: others

Post on 19-Oct-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

М.У.№ 12686't 83656

llllllllll!

Назаренко ' ' Ь. vaПрограммирование в системе Лвтокад-14|'99 Ч. 1 ISSN 0202-3205

ЩЕНИЯРОССИЙСКОМ ФЕДЕРАЦИИ

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ

__ ________ __________ ( М И И Т ) _________________

Кафедра“САПР транспортных конструкций и сооружений”

С. Н. НАЗАРЕНКО

Утвержденоредакционно-издательским

советом университета

ПРОГРАММИРОВАНИЕ В СИСТЕМЕ АВТОКАД-14. ЧАСТЬ. I.

Методические указания к курсовому и дипломному проектированию.

Москва 1999

УЧЕБНАЯ БИБЛИОТЕКА

М И И Т II

Page 2: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

УДК 681.3.06 Н-19

Назаренко С.Н. Программирование в системе Автокад-14. Часть I. Методические указания к курсовому и дипломному проектированию. - М.: МИИТ, 1999 г. - 32 с.

Данные методические указания посвящены применению в курсовом и дипломном проектировании средств системы Автокад, используемых для автоматизации разработки чертежей. Рассматриваются вопросы соз­дания пакетных файлов, создание dxf-файлов для отрисовки объектов Ав­токода с помощью независимых программ на языке С/С-н-,. вопросы авто­матизации загрузки в Автокад этих разработок.

Методические указания предназначены для студентов специальности САПР, а также студентов других специальностей, изучающих применение системы Автокад и инженеров-проектировщиков, желающих повысить свою квалификацию.

О Московский государственный университет путей сообщения

(МИИТ), 1999

Page 3: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

Введение

Универсальная графическая система проектирования AutoCAD (Авто­кад) предоставляет широкие возможности для автоматизации графических работ и разработки программных приложений. В связи с этим Автокад нашел широкое применение как графическое ядро различных систем ав­томатизации проектирования - САПР.

Работа в графическом редакторе часто требует затрат времени, срав­нимых с ручным вычерчиванием (если отсутствуют прототипы - заготовки отдельных элементов чертежа). Повысить эффективность машинного соз­дания чертежей позволяет графическое программирование. При этом воз­можна ситуация, когда конструктору вообще не придется чертить. Заранее разработанная программа может сделать запросы, ответив на которые конструктор автоматически получит готовый чертеж или его фрагменты.

Данные методические указания посвящены вопросам применения в курсовом и дипломном проектировании некоторых средств автоматизации создания чертежей, разрабатываемых в рамках системы Автокад-14. Здесь не рассматриваются вопросы создания и редактирования чертежей, кото­рым были посвящены приведенное в списке литературы пособие /1/ и дру­гие источники. Однако, приступая к созданию средств автоматизации на базе системы Автокад, необходимо хорошо знать и уметь применять мно­гочисленные возможности, которыми обладает графический редактор сис­темы Автокад, четко представлять очередность следования запросов ко­манд редактора и правильные ответы на них. При разработке графической программы часто требуется предварительно набрать в командной строке Автокада необходимую команду и внимательно изучить порядок следова­ния запросов и нажатия клавиш "ввод".

В данных методических указаниях рассматриваются вопросы разра­ботки программного обеспечения курсовой работы №1 по дисциплине "Геометрическое моделирование и машинная графика" в том числе:

1) создание пакетных файлов, включающих команды Автокада и от­веты на их запросы, которые пользователь вводил бы в режиме непосред­ственной работы в графическом редакторе;

2) создание числового кода чертежа в формате dxf - файла с помо­щью независимой программы пользователя, для чего можно применить любой приемлемый язык программирования; но здесь приводятся приме­ры программ на языке С, как наиболее универсальном;

3) вопросы автоматизации загрузки этих файлов.

3

Page 4: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

1. Пакетные файлы Автокада.

Одним из специальных средств автоматизации создания чертежа яв­ляется пакетный файл Автокада. Такой файл, имеющий расширение “ scr” содержит текстовую запись команд Автокада со всеми необходи­мыми ответами на запросы, как если бы они вводились в командной стро­ке Автокада с клавиатуры. Пакетные файлы можно вызывать как при ра­боте в среде графического редактора Автокада, так и в момент запуска системы Автокад.

Если пакетные (script) файлы короткие, - их легко набрать в любом доступном текстовом редакторе, а затем запустить на выполнение в нуж­ной ситуации во время работы в графическом редакторе Автокада.

Пакетные файлы также могут генерироваться независимыми про­граммами пользователя (подробнее см. til), то есть вместо набора текста файла вручную, можно программным путем создать список команд Авто­када по отрисовке заданной конструкции и записать его в scr-файл.

Для управления работой пакетных файлов в Автокаде существует не­большое количество команд, рассмотренных ниже. Но для создания па­кетных файлов необходимо хорошо знать порядок запросов команд Авто­када и их опций, размещаемых в пакетном файле, строго следовать оче­редности и характеру ответов на эти загфосы, внимательно отслеживать положение пробелов и перевода строк в файле.

1.1. Команды управления ■акетнымн файлами.

Загрузка пакетного файла выполняется из меню Автокада-14 Сер­вис, Пакет... (Tools, Run Script...) или командой ПАКЕТ (SCRIPT), что обеспечивает вызов пакетного файла непосредственно при работе в гра­фическом редакторе. При этом необходимо ответить на запрос об имени такого файла (расширение .scr водить нельзя). Если в самом пакетном файле задана команда ПАКЕТ, - управление передается к указанному в ней пакетному файлу.

Команда ЗАДЕРЖИ (DELAY) позволяет приостановить выполнение следующей команды, если необходимо предоставить пользователю доста­точно времени для оценки результата в том случае, когда действие пре­дыдущей команды сменяется новым действием слишком быстро. В ответ на запрос этой команды необходимо ввести число, единица которого, примерно, равна одной миллисекунде. Например:

Команда. ЗАДЕРЖИ Задержка в миллисекундах: 10004

Page 5: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

Команда ПРОДОЛЖИ (RESUME) позволяет продолжить выполнение прерванного пакета. Прервать работу пакетного файла возможно нажати­ем клавиш Esc или Backspace. Возобновить работу пакетного файла, на­чиная с того места, где он был прерван, можно с помощью команды ПРОДОЛЖИ. Эта команда может быть вызвана в прозрачном режиме (указав перед ее названием апостроф) если прерывание произошло в про­цессе выполнения какой-либо команды

Команды ГРАФЭКР (GRAPHSCR) и ТЕКСТЭК (Р TEXTSCR) вклю­чают графический или текстовый экран в во время выполнения пакетного файла.

Команда ВПАКЕТ (RSCRIPT) позволяет циклически повторять па­кетные файлы вновь и вновь. Эта команда не может следовать после ко­манд КОНЕЦ (END) и ПОКИНЬ (QUIT), поскольку не распознается ко­мандой управления главным меню. Приведем пример циклической работы команды ВПАКЕТ.

Знак - точка с запятой в начале строки пакетного файла указывает на то, что далее до конца строки следует комментарий.

На лист. 1,1 приводится пакетный файл, который создает движу­щуюся по экрану надпись “Демонстрация начинается”. В этом пакетном файле используются также функции Автолиспа (в скобках) - встроенного в Автокад языка программирования. Таким образом, в пакетных файлах можно использовать переменные параметры В приведенном примере пе­ред загрузкой пакетного файла необходимо присвоить начальные значе­ния переменным X, у и dx, с помощью функции Автолиспа SETQ, что можно сделать в командной строке Автокада, например :Команда: (setq х 10 у 100 dx20)

; *** Пример пакетного файла, пустая строка означает "ввод" *** РЕГЕН(setq х {+ х dx))(command "ТЕКСТ" (list х у) "25" "0" "Демонстрация начинается") ЗАДЕРЖИ 200 СО ТРИ П

ВПАКЕТ; конец пакетного файла

Лист. 1.1. Пример пакетного файла с применением функций языкаАвтолисп.

5

Page 6: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

Еще раз отметим, что при наборе пакетногофайла в текстовом редак­торе необходимо следить за строгим соответствием количества пробелов или переходов на новую строку в файле ситуации, означающей "ввод" при выполнении данной команды Автокада. Пустая строка в лист. 1.1. моде­лирует нажатие клавиши "ввод" при работе в Автокаде,

1.2. Пример разработки пакетного файла.

В следующем примере, приведенном на листинге 1.2, приводится па­кетный файл, с помощью которого в Автокаде получено изображение

’ фермы, показанное на рис. 1.1:

Ферма, В а р и а н т #1,

Рис. 1.1. Ферма отрисованная с помощью пакетного файла лист. 1.2.

. ********** Пакетный файл рисования фермы kurs1_1 .scr **********

;!!! Клавиши "пробел" и "Enter"-nycrbie строки, - означают "ввод"!!!

С О ТРИ все

; Рисуем элементы фермы: пояса и внешние раскосы:

ОТРЕЗОК 100,100 @30,0 @30,0 @30,0 @30,0

@-15,30 @-30,0 @-30,0 @-30,0 @-15,-30

6

Page 7: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

; рисуем внутренние раскосы:

ОТРЕЗОК 115,130 @15, -30 @ 15,30

@15,-30 @15,30 @15,-30 @15,30

; далее рисуем подвески и стойки:

ОТРЕЗОК 115,100 @0,30

ОТРЕЗОК 130,100 @0,30

ОТРЕЗОК 145,100 @0,30

ОТРЕЗОК 160,100 @0,30

ОТРЕЗОК 175,100 @0,30

ОТРЕЗОК 190,100 @0,30

ОТРЕЗОК 205,100 @0,30

; далее рисуем шарниры в узлах:

КРУГ 100,100 3

КРУГ 130,100 3

КРУГ 160,100 3

КРУГ 190,100 3

КРУГ 220,100 3

КРУГ 115,130 3

7

Page 8: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

КРУГ 145,130 3

КРУГ 175,130 3

КРУГ 205,130 3

; Делаем надпись:

ТЕК СТ 105,140 7 0 Ферма. Вариант #1.

ПОКАЖИ границы

; Для перерисовки кругов выполняем команду:

РЕГЕН

; Конец scr-файла

Лист. 1.2. Пакетный файл для отрисовки фермы рис. 1.1.

Задание*: набрать и запустить на выполнение пакетный файл, рисую­щий в Автокаде ферму моста (см. пример на рис 11).

♦Примечание: при выполнении операций по набору scr-файла в тек­стовом редакторе полезно использовать следующую очередность дейст­вий:1) нарисовать требуемый графический объект в Автокаде, вводя коман­

ды и ответы на запросы (в том числе, координаты точек) гг кдямятуры-2) открыть текстовое окно Автокада (клавиша F2), выделить текст, со­

держащий команды по отрисовке вместе с ответами на запросы и скопи­ровать его в буфер обмена WINDOWS - с помощью меню Средства текстового окна; можно также использовать пункт меню Копировать протокол для копирования всех строк текстового окна (их число огра­ничено настройкой в меню Установки Автокада);

3) открыть любой текстовый редактор, например, WORD - в нем уста­навливается видимость непечатаемых символов 41 перевода строки и вставить в виде текста команды Автокада из буфера обмена, затем вы­полнить необходимые действия по их ревизии и редактированию, пре­вращая скопированный текст в полноценный пакетный файл, снабжен­ный комментариями;

4) сохранить полученный текст в файл с расширением .scr, затем загру­зить его в Автокаде для проверки; далее, переключаясь между окнами текстового редактора и Автокада, устранить возможные ошибки.

8

Page 9: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

2. Создание dxf-файлов.

Файлы обмена описаниями чертежа,- так можно перевести англий­скую аббревиатуру dxf. Эти файлы содержат почти всю информацию, не­обходимую для воспроизведения чертежа. В них отсутствуют описания

-графических символов и шрифтов, которые могут быть найдены в shx- файлах. Отметим, что кроме системы Автокад, целый ряд других графиче­ских и расчетных программных комплексов поддерживает формат DXF.

Автокад может создавать dxf - файл по имеющемуся рисунку, - это делается командой ЭКСПОРТА (в англоязычной версии - DXFOUT) или из меню Файл (File) > Экспорт (Export) и далее задается тип сохраняемого файла (dxf). В этом случае в рабочем каталоге на диске создается dxf- файл, который содержит все приведенные ниже разделы или секции dxf- файла В Автокаде-12 структура dxf - файла была более простой, чем в по­следующих версиях, но и она вполне успешно поддерживается новыми версиями Автокада.

Для загрузки рисунка, хранящегося в формате DXF необходимо вы­брать пункт меню Открыть (Open) и формат файла (dxf) или с помощью команды ИМ ПОРТА (DXFIN).

Файлы Автокада типа dxf делятся на шесть секций:- секция заголовков (HEADER);- секция классов (CLASSES)- секция таблиц (TABLE);- секция блоков (BLOCKS);- секция описания примитивов (ENTITIES);- секция неграфических объектов (OBJECTS).

Однако, dxf - файл может быть создан и независимой программой пользователя, написанной на любом языке программирования, допускаю­щем создание текстовых файлов. В этом случае нет необходимости запи­сывать все секции dxf - файла. Обычно создается одна из секций - ENTITIES. Информация, содержащаяся в остальных секциях, заменяется по умолчанию существующей на момент загрузки в данном рисунке. Ис­ходя из этого,.рассмотрим вопросы создания только одного раздела - ENTITIES. Об остальных разделах подробнее можно узнать из книги /2/ (см. список литературы) или из справочной системы Автокада (клавиша F1) - раздел Customization Guide , Appendix С - DXF Group Codes.

Наряду с автоматической записью возможно программным путем произвести синтаксический анализ созданных Автокадом dxf-файлов, с целью получения по ним требуемой информации о чертеже.

9

Page 10: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

Отметим, что структура информации по всем объектам чертежа, со­храняемой Автокадом в графической базе данных во время сеанса рабо­ты с каждым чертежом, сходна со структурой записей dxf-файла. С помо- щъю специальных функций языка Автолисп можно программным путем модифицировать эти данные, а с ними сам чертеж.

2.1. Структура записей dxf-файла.

Секция ENTITIES содержит описания реальных графических объек­те» чертежа. Запись в секциях dxf-файла делится на группы, состоящие из двух строк. В первой строке группы размещается маркер - это целое чис­ло, определяющее характер сообщения во второй строке. Во второй строке группы помещается информация, имеющая формат, зависящий от типа группы.

Маркер записывается в строке файла в трехпозиционном поле с нача­ла строки, занимая при этом правые позиции (например, маркер - число О должно помещаться в третьей позиции строки).

Сообщения второй строки в группе записываются с начала строки.Пример группы:

ОSECTIONПриведем диапазон некоторых значений маркеров в зависимости от

содержания второй строки группы.0 -9 последующую строковую запись в dxf - файле;10 - 59 относятся к действительным числам (координаты, углы, рас­

стояния);60 - 79 обозначают целые числа (например, номер цвета);210 - 239 - действительные числа;999 - комментарий.Углы рассматриваются Автокадом, как заданные в градусах.Приведем значение некоторых кодов групп:0 - начало описания примитива, таблицы, секции dxf - файла;1 - первичное текстовое значение таких примитивов, как TEXT,

ATTDEF, АТТМВ;2 - имя атрибута, блока и т. д.;3 ,4 - другие текстовые значения;5 - метка примитива;6 - имя типа линии,7 - имя гарнитуры текста шрифта;

10

Page 11: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

8 - имя слоя;9 - идентификатор имени переменной в секции HEADER;10 - цервичная координата точки X;11-18 - другие координаты X;20 - первичная координата течки Y;21-28 - другие координаты Y;30 - первичная координата Z;31-36 - другие координаты Z;‘38, 39 - уровень и высота объекта ( если не равны нулю );40 - 48 - значения чисел с плавающей точкой ( высота текста, мас­

штабные коэффициенты и т.д );50- 58 - углы ( в градусах);62 - номер цвета, целое число ( можно также использовать значения

BYLAYER и BYBLOCK );70-78 - целочисленные значения;210, 220, 230 - координаты первичной точки X, Y, Z ( аналогично

маркерам 10, 20, 30 и др ).Как и другие секции, секция ENTITIES начинается с заголовка

0SECTION

а затем следует название секции:2

ENTITIESпосле чего следует описание графических объектов чертежа. Назва­

ние примитивов для русифицированной версии должно быть приведено в их английской нотации. При просмотре созданного Автокадом dxf - файла можно увидеть целый ряд значений кодов и записей, не нашедших отра­жения в данном пособии, но в большинстве случаев они не являются обя­зательными. В конце раздела необходимо поместить сообщение об окон­чании данного раздела, а затем и всего dxf - файла (в конце последней за­писи в файле должен размещаться непечатаемый символ от нажатия кла­виши Enter):

0ENPSEC

0EOF

Описание объектов в файле должно начинается с обязательной части, задающей имя слоя для каждого объекта. В dxf - файле нет активных сло­ев.

11

Page 12: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

Слой для расположения каждого объекта задается группой, состоя­щей из маркера - числа 8 и последующего имени слоя. Например, для слоя с именем “0” увидим запись:

8 -О

Приведем пример dxf-файла, содержащего описание примитива ОТРЕЗОК (LINE) в упрощенном формате раздела ENTITIES. Отрезок на­чинается в точке с координатами X=50,Y=T00 и идет в точку X=250,Y=200, его цвет - красный, расположен на слое 0 .

О маркер начала раздела, после кода 0 - далее комментарий SECTION999 маркер строки комментария, эта группа необязательная Начало раздела "ПРИМИТИВЫ" (это строка комментария)

2 маркер имени раздела "ПРИМИТИВЫ"ENTITIES

О маркер имени примитива "отрезок"LINE

8 маркер имени слоя, имя слоя "О", обязательная группа0

62 маркер цвета, цвет 1 - фасный, необязательная группа1

10 маркер координаты X первой точки, значение Х=50 точки50.0

20 маркер координаты Y первой точки, значение Y = 100 точки100.0

30 маркер координаты Z первой точки, значение Z-0 точки0.0

11 маркер координаты X второй точки, значение Х=250 точки250.0

21 маркер координаты Y второй точки, значение Y=2Q0 точки200.0

31 маркер координаты Z второй точки, значение Z=0 точки0.0

0 маркер конца раздела, конец раздела ENDSEC

0 маркер конца DXF-файла, конец DXF-файла EOFЛист.2.1. Распечатка примера dxf-файла с описанием примитива "отрезок.”12

Page 13: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

Здесь группа 62 с номером цвета - необязательная, также как и груп­пы с координатами Z, которые принимают значения по умолчанию (зна­чения текущего уровня) в случае их отсутствия. Как видим, после кодов групп может размещаться комментарий, но во второй (содержательной) строке группы дополнительно не должно быть набрано больше ничего, даже пробела.

Задание:1) с помощью любого текстового редактора набрать приведенный при­мер описания отрезка в виде dxf-файла (см. листинг 2.1, комментарии можно не вводить также как и группы с координатами Z), сохранить на диск в файл с расширением dxf и открыть его в Автокаде;2) изменить номер цвета (например, задать цвет 3 - зеленый), изменить координаты точек начала и конца отрезка и загрузить файл снова;3) используя возможности редактора, скопировать группы описания от­резка и создать с помощью dxf-файла второй отрезок с координатами то­чек начала и конца (50,150) - (250,250), другого цвета.

Перечень маркеров для других примитивов можно также найти в справочной системе Автокада: раздел Customization Guide , Appendix С - DXF Group Codes, ENTITIES Section . Кроме приведенных выше, в справке можно встретить много других кодов. Напомним, что в этих опи­саниях для большинства примитивов, кроме группы с кодом 8 - имя слоя, обязательными являются группы, несущие на себе только геометрическую информацию. Однако, перед созданием такого описания в dxf-файле с по­мощью С-программы, полезно отрисовать в графическом редакторе Авто­када с помощью dxf-файла простые примеры предполагаемых к примене­нию примитивов - аналогично лист. 2.1, чтобы убедиться в правильности и достаточности используемых кодов.

Приведем некоторые другие необязательные компоненты dxf - фай­ла в описании объекта:1) Модификатор типа линии (например, типа линии DASHED):

6DASHED2) модификатор уровня возвышения объекта (например, 32.5):

38 32.53) высота “выдавливания” объекта (например, 101) задается так:

39 101 13

Page 14: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

2.2, Пример разработки программы, создающей dxf-файл.

4Рассмотрим вариант задания курсовой работы по дисциплине

“Геометрическое моделирование и машинная графика”, в котором требу­ется: написать программу изображения с помощью dxf-файла плоских расчетных схем конструкций, состоящих из стержневых, треугольных и четырехугольных элементов с нумерацией узлов и отладить ее на тесто­вом примере. (Это задание моделирует этап визуализации ввода данных в расчетом комплексе метода конечных элементов - МКЭ для расчета на прочность произвольных конструкций).

Для загрузки программы требуется использовать командный пакет­ный scr-файл, который также необходимо создать и записать на диск. Автоматизация загрузки будет рассмотрена в разделе 3.

Все нужные исходные данные должны размещаться на диске в виде текстовых файлов - массивов координат и топологии, для уд обства ввода информации и ее хранения потенциальным пользователем программы. Данные вводятся в любом текстовом редакторе, например, можно исполь-

- зеватьJWORD или редактор связанного с Автокадом языка программиро­вания VitalLisp. Исходная информация считывается программой, напи­санной на языке С или C++, которая преобразует исходные данные в опи­сание чертежа в формате dxf-файла.

В некоторых вариантах данные могут вводится программой с клавиа­туры в виде значений буквенных параметров, определяющих размеры час­тей конструкции, а затем также преобразовываться в записи dxf-файла на диск в рабочем каталоге пользователя. В таком случае нет необходимости размещать исходные данные в файле.

Рассмотрим этапы подготовки информации для отрисовки создавае­мого чертежа.

Любая отрисовываемая в Автокаде конструкция должна быть разбита на элементы - примитивы Автокада, - это могут быть ОТРЕЗОК, ФИГУРА, 3-ГРАНЬ, а также другие примитивы (например, полилинии, ТЕКСТ и др ), с помощью которых моделируется реальная конструкция. Таким образом, вначале рисуется предварительный эскиз конструкции и принимается решение о разбиении будущего чертежа на примитивы Авто­када. Все вершины таких элементов, а затем и сами элементы нумеруются в произвольном порядке, начиная с единицы (см. пример на рис. 1.1).

На эскизе будущего чертежа с нанесенными номерами размещается

14

Page 15: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

произвольная координатная система с принятым масштабом единицы длины. Затем по заданным размерам конструкции определяются коорди­наты вершин, которые на рис. 1.1 указаны в скобках. Далее заполняются массивы координат и топологии, формат которых приведен ниже.

Для описания регулярных ( с повторяющимися одинаковыми элемен­тами ) конструкций часто используют повторители в виде числовых по­следовательностей, где приводятся начальные значения номеров, их коли­чество и шаг изменения значений. Для таких конструкций номера узлов и элементов также необходимо задавать упорядоченно.

Для решения задачи создания dlxf - файла используем следующие данные:

1) числовой массив координат узлов отрисовываемой конструкции, он может быть сформирован либо в виде строки:X, Yt___Z, Х2

X, Y, Z,Х? z 2

Х»_... ___ z.

(можно для плоских объектов Координату Z опустить)

где индекс указывает на принадлежность числа (координаты) к узлу конструкции с этим номером;

2) массив топологии конструкции, - это массив, в котором приво­дятся номера узлов, относящихся к каждому составляющему элементу.

тип эл-та 11№ узла 1 [№ узла 2 № узла 3 Тип эл-та N|№ узла

где тип элемента - это число, обычно, совпадающее с количеством вершин (но можно его задавать и по другим соображениям):2 - для отрезков,3 - для треугольных элементов,4 - для четырехугольных элементов.

Возможны также объемные элементы в виде кубов или пирамид.Тип элемента не приводится, если все элементы одинаковые.-В такой матрице-строке топологии, содержащей описание номеров уз­

лов каждого элемента, доступ к номерам узлов определенного элемента возможен лишь с помощью вычисления его позиции в строке.

15

Page 16: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

Массив топологии можно также представить в виде матрицы, где но­мер строки - это номер элемента, а далее аналогично матрице-строке то­пологии приводятся номера узлов, относящихся к этому элементу.

При отсутствии номера узла, например, если у данного элемента два узла, необходимо записать 0 в остальных ячейках строки:

Тип эл-та №1 № узла 1 № узла 2 Лё узла 3Тип эл-та №2 № узла 1 № узла 2 № узла 3

При размещении массивов с данными по координатам и топологии в файлах, в начале файла перед числами из ячеек массивов записывают чис­ла - количество узлов и количество элементов в отрисовываемой конст­рукции.

Если по условию задания на чертеже требуется автоматическое нане­сение номеров узлов на схеме конструкции (или если надо разместить другой текст, или показать деформированный вид конструкции), - в этом случае необходимо назначить высоту текста цифр, поскольку размер кон-

- сгрукции может быть задан в произвольных единицах длины. Эту проце­дуру называют масштабированием объектов с размерами другого поряд­ка относительно длин главных элементов чертежа. Свяжем высоту цифр с величиной средней длины стороны элемента, которую должна определять разрабатываемая программа. Эту величину будем затем умножать на ко­эффициент, вводимый пользователем по запросу программы, создающей dxf-файл.

По данным эскиза заданной конструкции, приведенного на рис. 2.1 заполняются массивы координат и топологии и в любом доступном тек­стовом редакторе записываются на диск в рабочий каталог. На листинге 2.2 приведены распечатки файлов координат и топологии. В начале фай­лов приводятся, соответственно, количество узлов = 13 и элементов = 9. Оба файла считывались с помощью приведенной в приложении програм­мы в одномерные массивы, но для удобства их визуального контроля при наборе чисел в файле с массивом координат (c o o r.d a t) клавиша Enter (перевод строки) нажималась после двух чисел (X Y ), а в массиве топо­логии (to p .d a t) - после ввода всех номеров узлов по каждому элементу.

16

Page 17: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

Рис. 2.1. Эскиз конструкции, заданной для отрисовки в Автокаде. Показаны оси произвольной системы координат.

а) 13224 24 42 4 б)5 5 6 4 7 5 6 4 9 5 104 124 122 102

94 12 3 4 4 1011 1213 3 3 5 6 3 6 7 8 3 8 9 10 2 4 5 2 57 2 7 9 2 9 11

Лист. 2,2. Файлы координат coor.dat (а) и топологии top.dat (б) для конструкции, приведенной на рис.2 Л.

\

Строительные и транспортные сооружения часто состоят из повто­ряющихся элементов. На рис.2.2, изображены примеры таких конструк­ций.

17

Page 18: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

11

К+1 Н+2

Рис 2 2 Примеры схем регулярных конструкций

Для таких конструкций можно заполнять массивы координат и топо­логии, используя параметризованные размеры (d, h, f) и заданное количе­ство повторяющихся частей (П). При этом заполнение массивов выполня­ется программой без записи в файл, а значения параметров вводятся с кла­виатуры во время работы программы.

Иногда для регуляризации номеров узловых точек необходимо вво­дить дополнительные фиктивные узлы и элементы. Так, на рис.2.2 а) за­дан узел 3 с такими же координатами, как у узла 2. Между узлами 2 и 3 добавляется фиктивный элемент с нулевой длиной. Координаты узлов вы­числяются через параметризованные размеры (значения переменных d, h, f, п), а для точек 3, 6, 9 . расположенных на кабеле, - из уравнения пара­болы. Для всех узловых точек и элементов этой конструкции (поясов фер­мы, стоек, раскосов, кабеля, подвесок) можно подобрать числовые зави­симости изменения номеров при заполнении массивов в цикле. Так, в цик­ле по i от 1 до п (числа пролетов) количество узлов к = 3 * i , номера узлов в нижнем поясе можно вычислить по формуле: m = 3 * i - 2 , ит.п.

На рис. 2.2 б) вводится фиктивный узел j и фиктивные примыкаю­щие к нему прямоугольные элементы в отверстии п л и т . Присваиваемый пользователем тип этих элементов, например число 5, явится сигналом программе, что их рисовать не надо.

Иногда только массив топологии будет регулярным, - заполняемым по формулам, если размеры отдельных частей конструкции разные. Мас­сив координат в этом случае приходится записывать в файл вручную пол­ностью или частично, а массив топологии может быть сформирован авто­матически.18

Page 19: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

В приложении 1 приведен программный файл kursl.cpp , содержа­щий программу, которая создает по исходным данным лист. 2.2 dxf-файл kursldxf.dxf Этот файл после загрузки в Автокаде с помощью пакетно­го файла Startkl.scr (см. лист. 3.1) воспроизводит требуемый чертеж рас­четной схемы, приведенный на рис. 2.3 (закраска отключена).

5 7И

12Рис. 2.3. Чертеж заданной конструкции, полученный в Автокаде

после загрузки dxf-файла.

3. Автоматизация загрузки программного обеспечения.

Загрузку разработанных программ удобно выполнять с помощью соз­данного пользователем меню. Но рассмотрение этого вопроса, в связи с ограниченным объемом методических указаний, будет выполнено в части Q. Здесь рассмотрим более простой вариант загрузки с помощью пакетно­го файла. Для облегчения доступа к различным файлам программных при­ложений и пользовательского интерфейса желательно сделать рабочий ка­талог (или, по-другому, папку) текущим для системы Автокад.

3.1. Как сделать рабочий каталог текущим.

Чтобы сделать рабочую папку текущей, - доступной системе Автокад без дополнительного указания и поиска, откроем окно этой папки с помо­щью системного приложения WINDOWS Проводник. Создадим ярлык файла acad.exe, который обычно находится в папке Program Files в ка­талоге AutoCAD.. .. Имя такого ярлыка может быть изменено, например, - Рисование фермы. Щелкнув правой клавишей мыши на этом ярлыке,

19

Page 20: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

выберем пункт меню Свойства и затем закладку Ярлык. В поле Рабочий каталог укажем путь доступа к рабочей папке, которая после загрузки Ав­токада с помощью этого ярлыка станет текущей.

Можно создать ярлык Автокада для запуска в режиме MS-DOS. Для этого скопируйте файл acadshell.pif из системного каталога Автокада в свою рабочую папку, а затем в меню Свойства, внесите в закладке Про­грамма необходимые изменения. Кроме того, в поле Командная строка можно добавить обращение к пакетному файлу в формате /Ь startkl.scr, где Startkl .scr - имя вашего пакетного файла, автоматически выполняемо­го во время загрузки Автокада с помощью такого ярлыка. Более подробно о применении пакетных файлов во время загрузки можно узнать из спра­вочной системы Автокада. Поиск... Script, Invoking a Script when Loading AutoCAD. В командной строке может быть указано еще и имя ав­томатически загружаемого файла чертежа. Но отметим, что dxf-файл мо­жет быть открыт только в режиме Новый, то есть до создания каких-либо элементов нового чертежа. Если необходимо скопировать элементы dxf- файла, - требуется его загрузить, сохранить в формате dwg, а затем вста­вить в фугой чертеж с помощью меню Вставка, Ф айл...

3.2. Выполнение внешних программ во время сеанса работыв Автокаде.

Отметим интересную возможность Автокада включать в себя про­граммы, разработанные и откомпилированные на другом языке програм­мирования. Для этого стандартный файл acad.pgp, находящийся в сис­темной папке Автокада Support нужно скопировать в свою рабочую пап- ку (которая должна быть текущей для Автокада), а затем в файл добавить строку, например, следующего содержания: MYPROG, kurst.exe, 0„ где “ MYPROG ” - Имя загружаемой внешней команды Автокада (она может быть использована Автокадом в командной строке и Автолиспом с помощью функций “ COMMAND"); а далее указан путь доступа к еже - модулю и код возврата 0, - ждать завершения работы программы. В рас­смотренном выше варианте курсовой работы, очевидно, модуль kursl ехе должен создавать dxf-файл для отриссюки заданной конструкции.

Альтернативой этого метода подключения внешних откомпилирован­ных программ является применение функции Автолиспа (STARTAPP ...) для запуска программных приложений. Но при этом отсутствуют возмож­ности, имеющиеся при подключении с помощью файла acad.pgp (код возврата, комментарий, псевдоимена).20

Page 21: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

После выполнения указанных ранее, подготовительных операций можно загрузить пакетный файл, созданный для запуска ехе-модуля Со­программы (например, с помощью новой команды Автокада MYPROG), которая создает dxf-файл и при этом делает запросы пользователю. Кроме того, в таких файлах начальной загрузки часто помещают команды по ус­тановке требуемых значений системных переменных, управляющих пара­метрами рабочей среды Автокада, с тем, чтобы пользователю не пришлось это делать вручную. Например, включить или отключить закраску прими­тивов (системная переменная FILLMODE), отключение вызова диалого­вых окон (системные переменные FILEDIA и CMDDIA), и другие. По за­вершению основных действий пакетного файла обычно восстанавливают значения измененных системных переменных.

На лист. 3.1 приведен пример такого пакетного файла, который может быть загружен с помощью команды Автокада ПАКЕТ (SCKCPT) или в мо­мент старта Автокада из своей рабочей папки автоматически, как это ука­зано в пунктах 3.1 и 3.2.

; Запуск определенной пользователем команды myprog, которая ; выполняет ехе-модуль программы kursl срр, создающей dxf-файл: M YPROG; Установка новых значений системных переменных:FILLMODE О FILEDIA О; Загрузка dxf-ф айла kursl .dxf (расширение dxf не пишется): ИМ ПОРТА c:\kurs1; Команда Автокада "покажи границы":ПОКАЖИ Г; Восстановление значений системных переменных:FILEDIA 1 FILLMODE 1; Конец пакетного файла

Лист. 3.1. Пакетный файл startkl .scr для загрузки dxf-файла.

3.3. Пакетный файл для загрузки dxf-файла.

21

Page 22: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

4, Содержание задания курсовой работы.

В ходе работы над заданием выделим следующие этапы:1. Постановка задачи, изучение бланка задания, методической литературы.2. Создание эскиза примера заданной конструкции на бумаге (см. рте. 2.1).3. Разбиение конструкции на объекты (элементы чертежа).4. Разработка методов задания характеристик (атрибуте») объектов,

способов их хранения в памяти и считывания программы!.5. Разработка алгоритма4' программы по созданию отображения заданного

класса конструкций в Автокаде с помощью dxf-файла. Организация структуры** программы в виде программных модулей.

6. Написание программных файлов, их отладка на примере.7. Проектирование интерфейса программы с пользователем

с применением средств системы Автокад, написание программных файлов, отладка на примере.

8. Оформление результатов в виде отчета, включая инструкцию пользова­телю разработанной программы по формированию данных и запуску .

* Алгоритм программы, приведенной в приложении на стр.23.1. Проверка наличия файлов координат и топологии, заполнение массивов.2. Запись в dxf-файл заголовков раздела ENTITIES.3. Запись в dxf-файл информации по элементам в зависимости от

содержания считываемой информации из массива топологии.4. Для записи данных по примитивам TEXT - подсчет средней длины

стороны элементов конструкции с целью определения высоты текста.5. Запись в dxf-файл информации по примитивам TEXT.6. Запись в dxf-файл окончания раздела и всего файла, закрытие файла.

** Структура программного комплекса, приведенного в приложении:1) основной программный модуль kursl .срр, отражающий алгоритм*;2) модуль wr_dxf.cpp для записи в dxf-файл двух строк в формате:

<код группы>/<содержание>;3) модуль wr_ent.cpp, запись заголовков dxf-файда и раздела ENTITIES;4) модули w rjine.cpp - запись в dxf-файл отрезков, wr_sol3.cpp - за­

пись примитива SOLID ("фигура") в виде треугольника, ' wr_3df.cpp - запись четырехугольников примитивом 3DFACE, wr_text.cpp - запись текста (номеров узлов);

5) модуль wr_cldxf.cpp - запись окончания раздела и всего dxf-файла, закрытие dxf-файла.

22

Page 23: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

ПРИЛОЖ ЕНИЕ. Пример Си-программ для создания dxf-файла.

‘WWWWWWWWWWWWW Программа kursl .срр ’ ......Головной модуль **************************/

Вариант задания курсовой работы ***************/

#include <stdio.h> in c lu d e <conio.h>#include <stdlib.h>#include <string.h>#include <math.h>Г Подключаемые модули: 7#include "wr_dxf.cpp" // запись в dxf-ф айл любых сообщений

// создание заголовка секции ENTITIES // запись примитива LINE // запись примитива SOLID с 3-мя узлами // запись примитива 3DFACE с 4-мя узлами // запись примитива TE X T // запись конца секции и файла

/* Определяем тип координат - плоская система: 7 «define TC O O R 2

#include "wr_ent.cpp" in c lu d e "wrjine.cpp" «include ”wr_sol3.cpp" «include "wr_3df.cpp" «include "wrjext.cpp" «include "wr_cldxf.cpp"

/•Прототип функции масштабирования высоты цифр: 7 double side_size(double *соог, int lo p , int topdim, int kef);

void main(void){double *coor, H, x1, y1, x2, y2, x3, y3, x4, y4; int *top;int i, j, n, nuz;int kuzl, kel, kutip, tel, topdim;Г Длина считываемой из файла данных строки: 7 charstr{80];Г Пути для доступа к файлам данных (*.dat) и dxf-файлу: 7char *pathcoor = "c:\\coor.dat";char *pathtop = "c:\\top.dat";char*pathdxf = "c:\\kurs1 .dxT';char ‘ layer, *txt;FILE *cdat, *tdat, *dxf;

23

Page 24: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

clrscrO;

Г проверка наличия файла координат */ if((cdat = fopen(pathcoor,H0 ) == NULL) {

cdat = fopen(pathcoor,"w+r"); printf("Заполните файл координат"); exit(1);

}else { fscanf(cdat, "%d", &kuzl);

printf("\nKUZL=%d", kuzl);}

/* Установка указателя в нулевую позицию в файле координат 7 rewind(cdat);

/* Выделение памяти для массива координат и его заполнение V coor = (double *)calloc(kuzl*TCOOR+1, sizeof(double)); forO = 0; i<kuzl*TCOOR+1; i++) fscanf(cdat, "%lf", (coor+i)), fdose(cdat);

Г Проверка наличия файла топологии 7 if((tdat = fopen(pathtop, V ) ) == NULL) {

tdat = fopen(pathtop,',w+r,’); printf(ЛпЗаполните файл топологии"); exK(1);

}else { fscanf(tdat, ”%d", &kel);

printf("\nKEL=%d\n", kel);}

I* Подсчет количества чисел в файле топологии = topdim , *1 /* отсечение лишних пробелов в файле, */Г если они случайно вводились при записи чисел */

topdim = 0; j = 0; n = 0; rewind(tdat); for(i = 0; i <= kel; i++) {

fgets(str,80,tdat); w h ile (str[j]= = '^ j+ + ; while(str[ j ] != Щ {

while((strt j J >= ’O’) && (str[ j ] <= ’S')) j++;24

Page 25: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

w hile(str{j]==")j++ ;;j++;n++;

}topdim += n; j = 0; n = 0;

}

./* Установка указателя в нулевую позицию в файле топологии 7 rewind(tdat);

Г Выделение памяти для массива топологии и его заполнение 7 top = (int *)calloc(topdim, sizeof(int));

for(i = 0; i < topdim; i++) fscanf(tdat, "%d", (top + i)); fclose(tdat);

Г Начало заполнения dxf-файла, раздела EN TITIES 7 dxf = fopen(pathdxf, V ) ;

Г Запись заголовков разделов в dxf-ф айл 7 generate_entities(dxf);

I* Присвоение имени слою la yer: 7 strcpy(layer,"0");

/* Основная часть программы: запись по элементам в dxf-файл, 7 Г константе TC O O R задано значение 2 - две координаты: X и Y 7

i =1;while(i < topdim){tel = topi i J;if(tel == 2) { kutip = 2; // для отрезков

nuz = top[i+1];x1 = coort(nuz -1 ) * TC O O R + 1J; y1 = coor[(nuz -1 ) * T C O O R + 2];

nuz=top[ i + 2J;x2 = coor[(nuz -1 ) * T C O O R +1]; y2 = coor[(nuz -1 ) * T C O O R + 2];

25

Page 26: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

writeJine(dxf, x1, y1, x2, y2, layer); i = i + kutip + 1;

Уif(tel == 3) { kutip = 3; // для примитива "фигура" с 3-мя вершинами

nuz = top[i+1];х1 = coor[(nuz -1 ) * TC O O R + 1]; у1 = coorf(nuz -1 ) * TC O O R + 2];

nuz = top[ i + 2],x2 = coort(nuz -1 ) * T C O O R + 1]; y2 = coorftnuz -1 ) * TC O O R + 2];

nuz = topt i + 3];x3 = coor[(nuz -1 ) * TC O O R + 1]; y3 = coort(nuz -1 ) * TC O O R + 2];

write_solid_3(dxf, x1, y1, x2, y2, x3, y3, layer); i = i + kutip + 1;

}if(tel == 4) { kutip = 4; // для примитива 3DFACE с 4-мя вершинами

nuz = top[ i+1J;х1 = coor[(nuz -1 ) * T C O O R +1]; y1 = coor[(nuz -1 ) * T C O O R + 2];

nuz = top[ i + 2];x2 = coorftnuz -1 ) * TC O O R +1]; y2 = coort(nuz -1 ) * TC O O R + 2];

nuz = top[ i + 3];x3 = coor[(nuz -1 ) * TC O O R + 1]; y3 = coort(nuz -1 ) * T C O O R + 2];

nuz = top[ i + 4];x4 = coor[(nuz -1 ) * T C O O R + 1]; y4 = coor[(nuz -1 ) * T C O O R + 2J;

write_3dface(dxf, x1, y1, x2, y2, x3, y3, x4, y4, layer); i = i + kutip + 1;

}y/while

I* Получаем значение высоты цифр из функции side_size , 7 /* связанное со средней длиной стороны элемента: 7

Н = side_size(coor, top, topdim, kel);

26

Page 27: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

Г Запись в dxf-ф айл номеров узлов: 7 for(i = 0; i < kuzl; i++) {

х1 = coor[ i * TC O O R + 1] + H/3.0; // Смещение от узла по оси X у1 = cooif i * T C O O R + 2] + Н/3.0, // и по оси Y itoa((i + 1),txt,10); // Преобразование числа в строку

write text(dxf, х1, у1, Н, txt, layer);}

Г Запись окончания dxf-файла: 7 ciose_dxf(dxf);

Г Освобождаем память 7delete(coor);delete(top);

) //main

Г Определение средней длины стороны элемента h0 7 Л и с ее помощью задание высоты текста Н : 7double side size(double *coor, int *top, int topdim, int kel){

int i, j, nuz, tel;double xin, yin, xik, yik, li, hO, SUM=0.0, H, K;

i= 1;whilefi < topdim) { hO = 0.0; tel = topi i ];for(j = 0 ; j < t e l - 1 ; j ++ ) {

nuz = top[i + j + 1]; xin = coor((nuz -1 ) * TC O O R + 1]; yin = coor[(nuz -1 ) * TC O O R + 2];

nuz = top[ i + j + 2J; xik = coorUnuz -1 ) * TC O O R + 1], yik = coort(nuz -1 ) * TC O O R + 2];

Г Определение длины стороны элемента: 7 li = sqrt((xik - xin) * (xik - xin) + (yik - yin) * (yik - yin)); hO +=li;

}27

Page 28: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

if(tel == 3 || tel == 4) { xin = xik; yin = yik; nuz = top[i + 1];

xik = coor[(nuz -1 ) * TC O O R + 1]; yik = coor[(nuz -1 ) * TC O O R + 2];

li = sqrt((xik - xin) * (xik - xin) + (yik - yin) * (yik - yin)); hO += li; h0/= tel;

}i += tel + 1;SUM += hO;

} //while

/* Определение средней длины : 7 hO = SUM / (double)kel;

/* Умножаем на условный коэффициент 0.3 , 7 /* получаем значение высоты ц и ф р : 7

Н = 0.3 * hO;

I* Пересчет высоты цифр по желанию пользователя : 7 while(1) {

printff\n Высота текста принимается равной % lf ”,Н); printf("\n Изменить это значение ? (Y/N)"); if((getcheO == 'у ') II (getcheO == У )) {

printfOn Введите коэффициент изменения высоты текста : "); scanf("%lf",&K);Н = Н * К;

}else break;

>retum(H); .

} // *********************** конец kursl .срр *********************************

I** Необходимо также набрать и разместить в рабочем каталоге *7 /** файлы данных coor.dat, top.dat, а также программные файлы: **!

28

Page 29: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

Программный модуль w r.dxf.cpp ’

void write dxf(FILE "dxf, int tag, void "value){

fprintf(dxf, "%3d\n", tag); if(tag <= 9)

fprintf(dxf, "%s\n”, (char *)value); e lse{

if(tag <= 59)fprintf(dxf, "%f\n", ‘ (double *)value);

elsefprintf(dxf, "%d\n", *(char *)value);

}}// конец wr_dxf.cpp ***

Программный модуль wr_ent.cpp ’

void generate entities(FILE "dxf file){

write dxf(dxf file, 0, "SECTION"); write_dxf(dxf_fHe, 2, "ENTITIES"),

у/ *********************** конец wr_ent.cpp

Программный модуль w rjine.cpp

void writeJine(FILE "dxfJHe, double from_x, double from_y,double to x, double to_y, char "layer)

{ 'write_dxf(dxf_file, 0, "LINE"); write_dxf(dxf_file, 8, layer); write_dxf(dxf_fiie, 10, &from_x); write_dxf(dxf_file, 20, &from_y); write_dxf(dxf_file, 11, &to_x); write_dxf(dxf_file, 21, &to_y);

}// *********************** конец w rjine.cpp ******************************

29

Page 30: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

' Программный модуль wr_sol3.cpp ’

void write_solid_3(FILE *dxf_file, double x1, double y1,double x2, double y2,double x3f double y3, char la yer)

{w rite jM (dxfJile , 0, "SOLID"); w rite_dxf(dxf_file, 8, layer); write_dxf(dxf_file, 10, &x1); write_dxf(dxf_fileI 20, &y1); write_dxf(dxf_flle, 11, &x2); write_dxf(dxf_file, 21, &y2); write_dxf(dxf_file, 12, &x3); write_dxf(dxf_file, 22, &y3); write_dxf(dxfjile, 13, &x3);write_dxf(dxf_file, 23, &y3); _ _ _ _ _ _ _ _

}// *<■'•»*“ *“ *»***»******* конец wr_sol3.cpp *****“ **********“ ******“

Программный модуль wr_3df.cpp ’

void write_3dface(FILE *dxf_file, double x1, double y1,double x2, double y2, double x3, double y3, double x4, double y4, char "layer)

{write_dxf(dxf_file, 0, "3DFACE");write_dxf(dxf_flle, 8, layer);write_dxf(dxf_fiie, 10, &x1);write_dxf(dxf_flle, 20, &y1);write_dxf(dxf_file, 11, &x2);write_dxf(dxf_file, 21, &y2);write_dxf(dxf_file, 12, &x3);write_dxf(dxf_file, 22, &y3);write_dxf(dxfjile, 13, &x4);write_dxf(dxf_file, 23, &y4); ~

}// *********************** конец wr_3df.cpp ***************************>

30

Page 31: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

Программный модуль wr_text.cpp

void write_text(FILE *dxf_file,double x1, double y1,double ht, char *txt, char layer)

{write_dxf(dxf_file, 0, ’T E X T ”); write_dxf(dxf_file, 8, layer); write dxf(dxf file, 10, &x1); write~dxf(dxfjile, 20, &y1); write_dxf(dxf_file, 40, &ht); wrtte_dxf(dxf_file, 1, txt);

}// *********************** конец wr_text.cpp ********************"

Программный модуль wr_cldxf.cpp

void dose dxf(FILE *dxf file){write dxf(dxf file, 0, "ENDSEC"); write_dxf(dxf_file, 0, "EOF"); fdose(dxf_file);

}// *****************.****« Конец wr_cldxf.cpp

Список литературы

1. AutoCAD 14. / Э.Т. Романычева, T.M. Сидорова, С.Ю. Сидоров. - М : ДМК, Радио и связь, 1997. • 480 с.

2. Назаренко C JL Создание и редактирование чертежей в системе Ав- токад-14. Учебное пособие. - М..МИИТ, 1998. -100 с.

3. Кречко Ю.А. AutoCAD: программирование и адаптация. - М. ̂ ДИАЛОГ-МИФИ", 1995. - 240 с.

4. Джамп Д. AutoCAD Программирование: Пер. с англ. - М.: Радио и связь, 1992. - 336 с.

31

Page 32: М.У. Назаренко ' ' Ь. va еме Лвтокад-14|'99 Ч. 1 llllllllll!library.miit.ru/methodics/13_08_2012/01-37808.pdf · боте в среде графического

Содержание

Введение.................................................. 31. Пакетные файлы Автокада........................................................................... 4

1.1. Команды управления пакетными файлами......................................41.2. Пример разработки пакетного файла....... ....................................... 6

2. Создание dxf-файлов.....................................................................................92.1. Структура записей dxf-файла................................................... 102.2 Пример разработки программы, создающей dxf-файл................. .14

3. Автоматизация загрузки программной обеспечения... ... ......... 193.1. Как сделать рабочий каталог текущим....................................... .1 93.2. Выполнение внешних программ во время сеанса работы

в Автокаде.......................................................................................... 203.3. Пакетный файл для загрузки dxf-файла............... 21

4. Содержание задания курсовой работы.................. .......................... .. 22ПРИЛОЖЕНИЕ. Пример Си-программ для создания dxf-файла............... 23Список литературы......................................................................... 31

Сергей Николаевич НазаренкоПРОГРАММИРОВАНИЕ В СИСТЕМЕ АВТОКАД-14

ЧАСТЫ.

Методические указания к курсовому и дипломному проектированию

Подписано в печать / J .09.99. Формат Тираж 200 экз.

Уел.-печ. л. 2,0 . i, ,

Изд. i 8? -99. Заказ {073 . Цена

101475, Москва, ул. Образцова, 15. Типография МИИТа