рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

САПР в машиностроении

САПР в машиностроении - раздел Машиностроение, ...

Федеральное агентство по образованию

САНКТ-ПЕТЕРБУРГСКИЙ

ГОСУДАРСТВЕННЫЙ ПОЛИТЕХНИЧЕСКИЙ

УНИВЕРСИТЕТ

 
 

 


Л. Н. Розанов, М. М. ДОНСКАЯ, Б. ф. Гончаров

 

САПР в машиностроении

    Лабораторный практикум

ОГЛАВЛЕНИЕ

 

Введение …………………………………………………………………..
Лабораторная работа № 1. Библиотека фрагментов……………...………..
Лабораторная работа №2.Создание параметрических фрагментов…...
Лабораторная работа №3.Библиотека 2D-шаблонов……………...............
Лабораторная работа № 4. Ввод/вывод данных в Delphi……………........
Лабораторная работа № 5. Прикладная библиотека графических элементов……………………………………………………………………………..  
Лабораторная работа № 6. Разработка прикладной библиотеки чертежей…………………………………………………………………..…………..  

 

 


ВВЕДЕНИЕ

 

Применение информационных технологий является технологически и экономически выгодным способом повышения эффективности процесса проектирования на современном предприятии. Основным инструментом автоматизации конструкторских и технологических работ в машиностроении стали системы автоматизированного проектирования (САПР), в том числе программный комплекс систем КОМПАС-3D.

Проектирование машиностроительных узлов и деталей в CAD-системах, предполагает применение библиотек, поставляемых стандартной конфигурацией. В случае использования большого количества нестандартных типовых деталей, целесообразно создание пользовательских прикладных библиотек типовых элементов.

Для расширения возможностей САПР КОМПАС реализован механизм динамически подключаемых библиотек.

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

§ создание библиотек фрагментов;

§ создание библиотек параметрических шаблонов средствами Менеджера шаблонов;

§ создание прикладных библиотек, обладающих полным доступом к API(Application Programming Interface)-функциями среды КОМПАС для выполнения различных построений и манипуляций с графическими объектами и документами.

В последнем случае, создание библиотеки предусматривает организацию интерфейса с основной системой средствами системы программирования Delphi. Интеграция с такой мощной системой позволяет, помимо применения графического инструментария КОМПАС, использовать в создаваемых модулях все преимущества современного объектно-ориентированного программирования.

В каждой лабораторной работе приводятся теоретические сведения, порядок и пример выполнения работы. Предложены варианты заданий для выполнения лабораторных работ, а также вопросы для контроля освоения материала.

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

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

 


Лабораторная работа №1

1.1. Цель работы Целью работы является приобретение навыков создания библиотек фрагментов,… 1.2. Задание

Теоретическая часть

Библиотеки Компас управляются Менеджером библиотек, окно которого открывается в подменю Сервис главного меню Компас. Окно Менеджера может содержать несколько вкладок. На первой вкладке «Библиотеки КОМПАС»отображается структура Менеджера: списки разделов и библиотек. Если в разделе имеются подключенные библиотеки, то его пиктограмма отображается серым цветом, если нет — голубым.

Слева от названия каждой библиотеки находится пиктограмма, характеризующая тип этой библиотеки:

– прикладная библиотека,

– библиотека фрагментов,

– библиотека моделей.

На остальных вкладках Менеджера отображается содержимое подключенных на данный момент библиотек фрагментов, моделей и прикладных библиотек, работающих в режиме панели. Подключенные библиотеки отмечены красной «галочкой». Менеджер библиотек использует собственный механизм буфера обмена, отличающийся от стандартного буфера Windows.

Для управления Менеджером библиотек предназначены команды контекстного меню области просмотра разделов. Эти команды представлены ниже:

 

Команда Описание
Добавить описание Добавление библиотеки в Менеджер библиотек.
Вид Настройка внешнего вида панели Менеджера библиотек.
Создать раздел Создание нового раздела (подраздела) в Менеджере библиотек.
Удалить Удаление выделенного раздела из Менеджера библиотек. Раздел удаляется вместе со своими подразделами.
Вставить Вставить в выделенный раздел Менеджера библиотеку, находящуюся в буфере обмена. Если буфер обмена пуст, команда недоступна.
Обновить Менеджер библиотек Удаление библиотек, файлы которых отсутствуют по заданным для них путям, и добавление библиотек, указанных в файлах *.lms, находящихся в подпапке Sys главной папки системы.
Очистить Менеджер библиотек Удаление из Менеджера всех библиотек, кроме подключенных на момент вызова команды.
     

Для управления библиотеками предназначены команды контекстного меню библиотеки, выделенной в списке. Эти команды представлены ниже:

Команда Описание
Запустить Запуск библиотеки, выделенной в списке. Запуск библиотек фрагментов и моделей происходит также при их подключении.
Подключить Подключение библиотеки, выделенной в списке. Подключение необходимо, чтобы функции библиотеки были доступны пользователю. Команда доступна для неподключенных библиотек. Выбранная библиотека подключается в установленном для нее режиме. В поле рядом с названием библиотеки появляется красная «галочка» — признак того, что библиотека подключена. Для отключения библиотеки повторно вызовите команду Подключить. Можно также щелкнуть мышью в поле с красной «галочкой» рядом с названием библиотеки.
Режим работы Выбор режима работы библиотеки, выделенной в списке.
Свойства Настройка свойств библиотеки, выделенной в списке. После вызова команды на экране появляется настроечный диалог. Команда доступна для неподключенных библиотек.
Удалить Удаление библиотеки, выделенной в списке, из Менеджера библиотек означает отключение доступа к ней. Никаких действий с файлом библиотеки на диске при этом не производится.
Вырезать Удаление библиотеки, выделенной в списке, из Менеджера библиотек и помещение ее в буфер обмена Менеджера. Вырезание в буфер очередной библиотеки удаляет его предыдущее содержимое.
Вставить Вставка библиотеки из буфера в текущий раздел Менеджера.
Отключить все Отключение от системы КОМПАС-3D всех подключенных библиотек.

При работе в КОМПАС вы можете сохранять созданные изображения типовых деталей во фрагментах, а затем вставлять их в новые чертежи. Если во время работы часто возникает необходимость вставлять в чертежи одни и те же фрагменты, удобно пользоваться библиотеками фрагментов. В библиотеках можно упорядоченно хранить различные типовые фрагменты с произвольными комментариями к ним. Использование библиотек фрагментов упрощает поиск и вставку в документ готовых изображений.

Каждая библиотека фрагментов представляет собой отдельный файл с расширением lfr. Фрагменты библиотеки не являются отдельными файлами на диске, а входят составными частями в единый файл библиотеки. Фрагменты хранятся в виде упорядоченных списков в подразделах и корневом разделе библиотеки. Имена фрагментов и разделов библиотеки могут состоять из любых символов, количество фрагментов и разделов не ограничено. В стандартный комплект поставки КОМПАС-3D включены некоторые библиотеки фрагментов (например, библиотека технологических обозначений). Каждая библиотека фрагментов отображается на отдельной вкладке Менеджера библиотек. Для настройки внешнего вида вкладки служит команда Вид из ее контекстного меню.

Чтобы создать новую библиотеку фрагментов, выполните следующие действия.

1. Вызовите из контекстного меню списка разделов Менеджера команду Добавить описание — Библиотеки документов.

2. В появившемся диалоге введите имя несуществующей библиотеки и подтвердите ее создание.

3. В появившемся диалоге свойств библиотеки введите ее название в Менеджере. Созданная библиотека появится в списке библиотек текущего раздела Менеджера. Эта библиотека пока не подключена.

4. Выделите созданную библиотеку и вызовите из контекстного меню команду Подключить. В окне Менеджера библиотек появится вкладка, соответствующая созданной библиотеке. Эта вкладка пуста, поскольку вновь созданная библиотека еще не содержит фрагменты.

5. Сформируйте структуру библиотеки с помощью команды Создать раздел из контекстного меню вкладки.

6. Включите фрагменты в разделы. Это можно сделать двумя способами:

– поместить в библиотеку готовые фрагменты,

– создать фрагменты непосредственно в библиотеке.

Если имеются готовые фрагменты, которые будут храниться в библиотеке, выполните следующие действия.

6.1. Вызовите из контекстного меню вкладки команду Добавить фрагмент в библиотеку....

6.2. В появившемся диалоге укажите каталог и имя файла (файлов) *.frw для включения в библиотеку.

6.3. В появившемся диалоге задания имени фрагмента установите имя по умолчанию (полное или относительное) или введите произвольное имя фрагмента (фрагментов) в библиотеке. Выбранные фрагменты будут помещены в текущий раздел библиотеки под заданными именами.

Если готовых фрагментов нет, выполните следующие действия.

6.4. Вызовите из контекстного меню вкладки команду Новый фрагмент.

6.5. В появившемся диалоге введите имя фрагмента в библиотеке.

КОМПАС откроет новое окно фрагмента.

6.6. Создайте изображение, которое будет храниться во фрагменте.

6.7. Сохраните и закройте фрагмент. Созданный фрагмент будет помещен в текущий раздел библиотеки.

В дальнейшем, чтобы отредактировать библиотечный фрагмент, выделите его в списке и вызовите из контекстного меню команду Редактировать. Для управления структурой библиотеки служат команды Удалить, Копировать, Вырезать и Вставить контекстного меню. С их помощью вы можете переносить фрагменты и подразделы между разделами, а также удалять ставшие ненужными разделы и фрагменты. Кроме того, с помощью команд копирования, вырезания и вставки возможен обмен разделами и фрагментами между различными библиотеками фрагментов.

Чтобы вставить фрагмент из библиотеки в текущий графический документ, выполните следующие действия.

1. Выделите в списке фрагмент, который требуется вставить, и вызовите из контекстного меню команду Вставить фрагмент в документ. Можно также дважды щелкнуть мышью по имени нужного фрагмента. Система перейдет в режим вставки фрагмента. На Панели свойств появятся элементы управления вставкой.

2. Настройте параметры вставки на Панели свойств и укажите базовую точку фрагмента.

3. Выполните необходимое количество вставок и нажмите кнопку Прервать команду.

Если какая-либо из библиотек фрагментов больше не требуется, вызовите из контекстного меню одноименной вкладки командуЗакрыть. Библиотека будет отключена от системы КОМПАС. При работе с библиотекой фрагментов доступны сервисные функции, вызываемые командами контекстного меню вкладки. Эти команды представлены ниже:

Команда Описание
Оптимизировать Служит для приведения размера файла в соответствие с количеством хранящихся в нем фрагментов. После вызова команды из файла библиотеки исключаются свободные участки.
Втянуть внешние ссылки Копирование в библиотеку всех объектов, существующих в ней в виде ссылок на файлы: типов атрибутов из библиотек типов атрибутов, стилей линий, штриховок, текстов из соответствующих библиотек, фрагментов, вставленных внешней ссылкой. Перечень ссылок можно просмотреть в диалоге информации о документе на вкладке Внешние ссылки во время редактирования библиотечного документа. Для вызова диалога информации служит команда Файл — Свойства.Втянутые ссылки исчезают из списка внешних ссылок в диалоге информации о документе. Ссылки на библиотеки оформлений (они присутствуют в документе, если в нем есть объекты спецификации), а также ссылки сборки на ее компоненты втянуть невозможно. Эти ссылки остаются в документах, т.е. после вызова команды Втянуть внешние ссылки они по-прежнему отображаются в диалоге информации о документе. Для корректной работы с библиотечными документами, ссылающимися на внешние файлы, необходимо наличие этих файлов по путям, указанным в диалоге информации о документе.
Сохранить фрагмент в файл как... Сохранение фрагмента библиотеки в отдельном файле на диске. После вызова команды на экране появляется диалог, в котором требуется указать каталог и имя файла для записи.
Сведения Вывод на экран диалога информации о выбранном фрагменте. Две последние команды доступны только в контекстном меню библиотечного фрагмента.

 

Пример выполнения задания

Разработаем чертёж вакуумной схемы (Рис.1.4) при a = 25 и h = 4 при помощи библиотеки фрагментов условных обозначений элементов вакуумных схем (Рис.1.1).

 

Рис.1.4. Вакуумная схема: 1 – вращательный насос, 2,14 – натекатель, 3,4,6,8 – клапан с пневмоприводом, 5 – двухроторный насос, 7 – ловушка охлаждаемая, 9 – вакуумная камера, 10,15 – тепловой вакуумметр, 11 – комбинированный насос, 12 – затвор, 13 – магнитный вакуумметр.

 

 

Открываем КОМПАС и создаем в нем необходимые для вычерчивания вакуумной схемы количество условных обозначений – фрагментов. Записываем их в текущий каталог с расширением frw. Чтобы создать библиотеку фрагментов, выполняем следующие действия:

1. Вызовите из контекстного меню списка разделов Менеджера команду Добавить описание — Библиотеки документов.

2. В появившемся диалоге вводим имя разрабатываемой библиотеки «Vacschem» и подтверждаем ее создание.

3. В появившемся диалоге свойств библиотеки вводим ее название в Менеджере: «Условные обозначения элементов вакуумных схем»». Созданная библиотека появилась в списке библиотек текущего раздела Менеджера. Эта библиотека пока не подключена.

4. Выделяем созданную библиотеку и вызываем из контекстного меню команду Подключить. В окне Менеджера библиотек появляется вкладка, соответствующая созданной библиотеке. Эта вкладка пуста, поскольку вновь созданная библиотека еще не содержит фрагментов.

 

Рис.1.5. Чертеж вакуумной схемы

5. С помощью команды Создать раздел из контекстного меню вкладки сформируем структуру библиотеки: насосы, ловушки, клапаны, вакуумметры и камеры.

6. Включим подготовленные фрагменты в разделы. Вызываем из контекстного меню вкладки команду Добавить фрагмент в библиотеку....В появившемся диалоге указываем каталог и имя файла (файлов) *.frw для включения в библиотеку. В появившемся диалоге задания имени фрагмента введём произвольное имя фрагмента (фрагментов) в библиотеке. Выбранные фрагменты помещены в текущий раздел библиотеки под заданными именами.

1.6. Содержание отчёта

1.Титульный лист.

2. Задание.

3. Краткая теоретическая часть.

4. Содержательное описание библиотеки фрагментов.

5. Протокол оператора при создании библиотеки.

6. Протокол оператора при создании чертежа схемы.

7. Чертеж схемы.

8. Выводы.

Контрольные вопросы

1.Какова цель создания библиотеки фрагментов?

2. Какое расширение имеет файл библиотеки фрагментов?

3. Каков порядок создания новой библиотеки фрагментов?

4. Где хранится файл библиотеки фрагментов?

5. Каково назначение команды «Подключить»?

6. Каково назначение команды «Оптимизировать»?

7. Как создать разделы в библиотеке?

8. Каково назначение команды « Втянуть внешние ссылки»?

9.Как производится редактирование библиотеки?

10. Какой порядок работы с библиотекой при создании чертежа?

Библиография

1. КОМПАС-3D. Руководство пользователя. СПб, Аскон, 2007


Лабораторная работа №2

2.1. Цель работы Целью выполнения лабораторной работы является ознакомление с параметрическим… 2.2. Задание

Ассоциативность.

Ограничения.

При редактировании параметризованных и ассоциативных объектов перестроение изображения происходит таким образом, что соблюдаются все наложенные на… Создание и редакти­рование геометрических объектов с автоматическим наложением…

Инструментальная панель параметризации

Горизонтальность. Указывая отрезки и прямые, ко­торые необходимо преобразовать, позволяет преобразовать наклонные линии в горизонтальные отрезки и… Вертикальность. Позволяет преобразовать наклонные отрезки или вспомогательные… Выровнять по горизонтали. Позволяет выровнять по горизонтали характерные точки геометрических объектов.

Установка значения размера

При присвоении размеру имени переменной допускается использование букв латинского алфавита. Переменная, поставленная в соответствие ассоциативному… Если размер был фиксированным, и создана связанная переменная, то можно задать… Это связанно с тем, что созданная переменная может участвовать в неравенствах и уравнениях, следовательно, ее значение…

Вставка параметрического фрагмента

Вставка фрагмента в чертеж производится командой Фрагмент… , меню Вставка. На панели свойств отражаются вкладки Параметры вставки и Переменные.… После вставки, в чертеже отражаются элементы фрагмента с измененными… Вставка фрагмента может производится указанием, щелчком по одноименной кнопке Панели свойств, вкладка Параметры,…

Построение параметрического фрагмента модели детали

1. Создайте новый документ, тип – Фрагмент. 2. Произведем настройку режима параметризации: на вкладке Текущий фрагмент… 3. Установите привязки Ближайшая точка, Пересечение и Точка на кривой.

Использование переменных и выражений

2. Проставьте размеры А, С и В. Для присвоения размеру А имени переменной воспользуйтесь при снятом флажке Информационный размер командой… 3. Сделайте размеры А и С –фиксированными, командой Зафиксировать размер, а… Для выполнения условий задания созданные переменные нужно связать выражениями. Откройте панель Переменные в списке…

Лабораторная работа №3

3.1. Цель работы Целью работы является приобретение навыков создания пользовательских… 3.2. Задание

Основные понятия

В случае использования большого количества нестандартных типовых деталей, целесообразно создание пользовательских прикладных библиотек шаблонов типовых деталей и сборок, представленных в виде параметрических фрагментов. Библиотека шаблонов — это прикладная библиотека, предназначенная для создания и использования библиотек шаблонов при работе в КОМПАС.

Шаблоны библиотеки представляют собой конструктивные элементы, которые наиболее часто встречаются при проектировании машиностроительных чертежей: втулки, прокладки, крепежные элементы, и т. п.

Шаблон (рис. 3.1) состоит из следующих элементов:

• основа — документ КОМПАС, представляющий собой параметрический фрагмент, содержащий внешние переменные. Также это может быть чертеж, деталь или сборка;

Рис. 3.1 Вид Менеджера шаблонов при открытом шаблоне

• таблица переменных (таблица параметров) — электронная таблица Microsoft Excel, в которой описаны внешние переменные основы, в соответствии с определенными правилами, а также их возможные значения;

• схема шаблона (заставка) — изображение, поясняющее расположение и обозначение переменных параметров (фрагмент или деталь КОМПАС-3D либо файл графического формата).

Шаблон может быть снабжен комментариями.

Для создания библиотек шаблонов используется специальное приложение Менеджер шаблонов. Библиотека представляет собой файл с расширением *.tlm. При создании шаблона, с помощью этого приложения, переменным параметризованного фрагмента или детали ставятся в соответствие значения, набранные в таблице переменных.

Готовый шаблон может быть вставлен в активный документ КОМПАС-3D, после предварительного выбора значений его параметров из ряда данных, которые содержатся в EXCEL-файле, ассоциированным с вставляемым фрагментом. При этом, после вставки шаблона в документ, значения его параметров будут соответствовать выбранным значениям переменных. Менеджер шаблонов позволяет при вставке шаблона в документ вводить значения параметров, автоматически получать объект спецификации для созданной по шаблону детали, выбирать раздел спецификации, в который следует поместить запись о сгенерированном объекте.

Настройка

Панель Свойства КОМПАС-3D (рис. 3.2) позволяет устанавливать выполнение действий над переменными. Например, создавать или не создавать объект… Рис. 3.2 Панель Свойства КОМПАС-3D /сняв флажок в рабочей зоне Переменные в ячейке Объект спецификаций.

Создание 2D-шаблона

1. Основа шаблона - параметрический фрагмент (чертеж, деталь или сборка). Переменные, значения которых будут приниматься из таблицы параметров… 2. Таблица переменных шаблона создается в Microsoft Excel (файл *.xls). Таблица переменных параметров создается Microsoft Excel.

Выбор и вставка шаблона

Щелчком мыши снимите флажки в ячейках тех объектов шаблона, которые не должны быть вставлены в документ КОМПАС-3D, или поставьте флажки в ячейках… После ввода всех необходимых значения, строка таблицы будет выделена цветом…

Создание библиотеки

Откройте Менеджер библиотек системы Компас. Выберите из списка библиотеку Прочие, далее библиотеку Менеджер шаблонов и запустите ее на выполнение. … Установку наиболее информативного вида Менеджера шаблонов произвести командой… Из главного меню Библиотека вызовите команду Создать, откроется окно Новая библиотека. В поле Каталог библиотеки…

Создание раздела библиотеки

Раздел предназначен для упорядочения размещение шаблонов в библиотеке. В состав раздела могут входить шаблоны и подразделы, в которых будут храниться шаблоны. Для создания раздела, выделите библиотеку, в которой хотите создать новый раздел, вызовите команду Создать раздел пункта меню Редактор, и заполните поля Заставка и Комментарий, аналогично предыдущим действиям.

Настройка Менеджера шаблонов

Для определения возможности автоматически открывать окно редактирования созданного объекта спецификации установите для параметра Окно редактирования… При работе с Менеджером шаблонов вы можете выбрать раздел спецификации, в…

Создание шаблона

1. Создайте в КОМПАС-График параметрический фрагмент – основу шаблона. (Создание параметрического фрагмента рассматривается в лабораторной работе… Переменные, значения которых будут приниматься из таблицы параметров… В данном примере фрагмент представлен на рис. 3.6 . Обратите внимание на задание размеров. Представленная Втулка, в…

Варианты задания Приложение 3.1

 
   
   
   

 


 

Лабораторная работа №4

4.1. Цель работы Целью работы является создание проекта Delphi, приобретение первичных навыков… 4.2. Задание

Интегрированная среда разработки

Главное меню FileNew - создать новый объект, Open Project - открыть существующий проект,

Создание нового проекта

· Каждый проект должен находиться в отдельной папке пользовательского каталога. · Сохранение проекта в системной папке …Program… · Имена файлов типа Project1 или Unit1 недопустимы.

Файл проекта

program Pr_UmniK1; // Заголовок программы uses //Перечисляет связанные с проектом формы Forms, Umnik1 in 'Umnik1.pas' {Form1};

End.

В окне кода жирным шрифтом выделяются зарезервированные слова, необходимые компилятору для анализа текста программы.

В качестве ограничителей многострочных комментариев используют фигурные скобки {} или пары символов (* *). Комментарии, ограниченные одной строкой, обозначают //.

{Это комментарий}

(*Это тоже комментарий*)

//Все символы до конца этой строки составляют комментарий

Файл модуля

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

Ниже приведён сгенерированный шаблон текста модуля формы, не содержащей элементов управления.

unit Umnik1; // Заголовок модуля

interface// Раздел интерфейсных объявлений

Uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs;

Type

TForm1 = class(TForm)

Private

{ Private declarations }

Public

{ Public declarations }

End;

Var

Form1: TForm1;

Implementation

{$R *.dfm}

End.

 

Заголовок модуля. Заголовок открывается зарезервированным словом Unit за которым следует имя модуля и точка с запятой, unit Umnik1;

Раздел интерфейсных объявлений. Раздел обеспечивает взаимодействие модуля с главной программой, начинается с зарезервированного слова Interface. В секции интерфейсных объявлений перечисляют программные элементы, которые будут доступны в главной программе и других программных модулх проекта.

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

Структура модуля может быть дополнена ещё двумя разделами initialization и finalizazion. В разделе initializationразмещают операторы, которые исполняются до передачи управления главной программе и обычно используются для подготовки её работы. В разделе finalizazionразмещают операторы, выполняющиеся после завершения работы главной программы.

Визуальные компоненты

Рис. 4.3. Панель компонентов Standard Для получения полного набора методов, свойств и событий конкретного компонента следует вызвать справочную службу…

End;

 

События. Процедуры обработки событий

События, связанные с действиями пользователя: ввод данных, нажатие кнопки, щелчок мышью и т.п. События можно связать с процедурами обработки… Основными событиями являются: OnActivate – загрузка формы;

Компонент класса TLabel

Основные свойства: Caption: String - содержит текст надписи; +Font : Объект - определяет характеристики шрифта.

Разработка программного кода для вывода текста.

Вариант 1.Для вывода текста в процедуре обработки события необходимо задать значение строковой константы (Str1), а затем свойству .Caption присвоить это значение.

procedure TForm1.FormClick(Sender: TObject);

Const Str1= 'Мы все учились понемногу,' #10+ //#10 – перевод строки

'Чему-нибудь и как-нибудь.'; // + объединение строк

Begin

Label2.Caption := Str1 ;

End;

Вариант 2. Значение строковой константы (Str1) задано в разделеimplementation, а в процедуре обработки события свойству Caption присвоено значение константы.

Implementation

………………

Const Str1= 'Мы все учились понемногу, '#10+ //#10 – перевод строки

'Чему-нибудь и как-нибудь.'; // + объединение строк

procedure TForm1.FormClick(Sender: TObject);

Begin

Label2.Caption := Str1 ;

End;

Если константа (или переменная) используется в нескольких процедурах, то вариант 2 предпочтительнее.

 

Компонент класса TEdit

Основные свойства и события: Text: String - отображаемая строка; ReadOnly –(true/false) – разрешает/запрещает изменение текста;

Begin

Str2:= Edit1.Text; //Переменной присвоено значение

Edit2.Text:= Str2; //В Edit2 выведено значение Str2

End;

Компонент класса TLabeledEdit

Основные свойства надписи: +EditLabl.Caption - текст надписи LabelPosition = (IpAbove, IpBelov, IpLeft, IpRight) - определяет положение надписи относительно текстового поля…

Компонент класса TMemo

Основные свойства, события и методы: Lines: TString - содержит строки текста в виде пронумерованного набора… Text: String - отображает содержимое свойства Lines в виде одной длинной строки;

Begin

Memo1.Lines[0] := M; //вывод в строку 0 константы М

Memo1.Lines[1] := MM; //вывод в строку 1 константы ММ

Memo2.Text := M; //вывод константы М в текущую строку Memo2.Text :=Memo2.Text + #13#10 + MM; {к тексту в поле добавлено ММ с новой строки (#13#10)}

Memo3.Lines.Add(MМ) //добавление в конец поля с новой стоки ММ

end;

Компонент удобно использовать для представления текстовых данных из внешних файлов.

Компонент класса TListBox

Основные свойства, события и методы: Items: String – содержит набор строк, показываемых в компоненте; ItemsIndex: Integer – содержит индекс элемента, имеющего фокус ввода;

Begin

Ind := ListBox1.ItemIndex ; // индекс выбранного элемента списка

Label1.Caption := ListBox1.Items[Ind]; //вывод по значению индекса

{вариант без непосредственного определения переменной Indx

Label1.Caption := ListBox1.Items[ListBox1.ItemIndex];}

end;

Компонент класса TComboBox

Компонент классаTComboBox панели Standard определяет раскрывающийся список выбора. Представляет собой комбинацию списка TListBox выбора и текстового поля TEdit, большая часть его свойств и методов заимствована у этих компонентов.

 

Компонент класса TCheckBox

Основные свойства, события и методы: Caption: String – надпись компонента; State: TCheckBoxState – содержит состояние компонента: cbUnChecked – не установлен; cbChecked - установлен; cbGrayed –…

Компонент класса TRadioGroup

Рис. 4.4. Группа переключателей и редактор названий переключателей Основные свойства:

End;

Компонент класса TButton

Компонент класса TButton панели Standard используют для управления программой.

Основные свойства и события:

Cancel: Boolean - если установлено значение True, событие OnClick возникает при нажатии клавиши Esc;

Default: Boolean - если установлено значение True, событие OnClick возникает при нажатии клавиши Enter;

OnClick - нажатие кнопки.

Компоненты класса TOpenDialog и TSaveDialog

Свойства и методы этих компонентов идентичны, поэтому рассматриваются вместе. Метод Execute: Boolean – вызывает диалоговое окно загрузки или сохранения… FileName: String – получает значение выбранного имени файла.

Обработка файлов

Var <Ф_имя> : File of <тип>; {Типизованный файл} <Ф_имя> : TextFile; {Текстовый файл} <Ф_имя> : File;{Нетипизованный файл}

Доступ к внешнему файлу, операции с файлами

Для работы с файлами необходимо:

· Установить связь между физическим файлом и логическим.

· Инициироватьфайл – открыть доступ к файлу и указать для него направление передачи данных.

· Выполнитьоперации с файлом (чтение, запись).

· Закрыть доступк файлу.

Установка связи

Процедура AssignFiie(var f; FileName: string) устанавливает связь файловой переменной f с именем внешнего файла FileName.

AssignFile(F, ‘MyFile.Dat’); Файл находится в текущем каталоге.

Name := ‘D:StudIvanMy_F2.Dat’;

AssignFile( F2, Name); Файл находится в другом каталоге.

Инициация файла

Reset (Var F ) открывает текстовые и нетипизованные файлы F только для чтения, если файл типизованный, то – как для чтения так и для записи. Rewrite(Var F) – создаёт новый физический файл для записи, имя которого будет… Append(F)-открывает существующий файл для добавления записей в конец файла.

Процедуры чтения-записи

ReadLn(F , V1 [, список_считывания ] ) - отличается от Read тем, что после считывания данных одного списка, при следующем обращении к ReadLnданные… Write(F , V1 [, список_записи ] ) - записывает одно или несколько значений в… WriteLn((F , V1 [, список_записи ] ) - отличается от Write тем, при следующем обращении данные будут записаны со…

Закрытие доступа к файлу

CloseFile(F) - закрывает файл, при нормальном завершении программы процедуры Close выполняются автоматически, без обращения к ним.

Вспомогательные функции

IOResult: Integer–используют для контроля ошибок доступа к файлу. IOResult возвращает 0, если доступ к файлу открыт, если доступ не установлен,… Eof(var F): Boolean - функция возвращает true, если текущая позиция является… Eoln(var F: Text): Boolean – функция возвращает для текстовых файлов true, если текущая позиция является концом…

Запись в текстовый файл

Дано: поле Memo с введённым многострочным текстом.

Требуется записать в новый файл текст из поля Memo.

.........................

В разделе implementationописаны:

Var F : TextFile; // файловая переменная

………………………

Вариант 1. Запись в новый файл (или перезаписи)

procedure TForm1.Button1Click(Sender: TObject);

Begin

ifSaveDialog1.Execute {выполняется диалог ‘Сохранить как’, задаём имя файла (FileName) }

Then begin

AssignFile(F, SaveDialog1.FileName); {связываем имя файла с файловой переменной}

Rewrite(F); //файл открыт для записи

Write(F, Memo1.Text); //записывается текст из Memo1

End;

CloseFile(F);

……….

Вариант 2. Запись в новый файл методом Memo1.Lines.SaveToFile

procedure TForm1.Button1Click(Sender: TObject);

Begin

ifSaveDialog1.Execute {выполняется диалог ‘Сохранить как’, задаём имя файла (FileName) }

Then begin

AssignFile(F, SaveDialog1.FileName);{связываем имя файла с файловой переменной}

Memo1.Lines.SaveToFile(SaveDialog1.FileName);{запись в файл методом Lines.SaveToFile }

end;

end;

Вариант 3. Добавление записей в конец файла

procedure TForm1.Button1Click(Sender: TObject);

Begin

ifOpenDialog1.Execute //выполняется диалог открыть существующий файл

then AssignFile(F, OpenDialog1. FileName);

{$I-} //отключён контроль ввода-вывода

Append(F); // открыт на запись в конец файла

{$I+} //включён контроль ввода-вывода

if IOresult = 0 //нет ошибок

Then Write(F, Memo1.Text) // запись в конец файла

Else Exit;

………………………..

Чтение из текстового файла с последующим выводом в Memo

Дано: текстовый файл с многострочным текстом.

Требуется: записать в поле Memo этот файл.

.........................

В разделе implementationописаны:

Var F : TextFile; // файловая переменная

var Str1 :String; //строка из текстового файла

............................

procedure TForm1.Button1Click(Sender: TObject);

Begin

if OpenDialog1.Execute //выполняется диалог открыть существующий файл

then AssignFile(F, OpenDialog1. FileName);

{$I-} //отключён контроль ввода-вывода

Reset(f2); // открыть для чтения

{$I+} //включён контроль ввода-вывода

if IOresult = 0 //нет ошибок

Then//открыть цикл While

While not Eof(F) do//пока не достигнут конец файла Eof(F)

Begin

Readln(F, str1); //считана одна строка

Memo1.Text:= Memo1.Text+ #13#10+Str1;

//добавить с новой строки ( #13 + #10 ) в Memo считанную строку Str1

End

Else Exit;

End;

4.5. Пример выполнения работы

В качестве примера выполнения работы выберем из пункта 4.2. задание №1 «Анкета». На рис.4.5 показана форма для ввода данных.

Рис.4.5.Форма «Анкета»

Код модуля Anketa.pas приведён ниже. Данные из формы будут сохранены в файле Anketa.doc.

unit Anketa;

Interface

Uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;

 

Type

TForm1 = class(TForm)

Label1: TLabel; //Анкета

LabeledEdit1: TLabeledEdit; //фамилия

LabeledEdit2: TLabeledEdit; //имя

LabeledEdit3: TLabeledEdit; //отчество

RadioGroup1: TRadioGroup; //пол

LabeledEdit4: TLabeledEdit; //год рождения

ComboBox1: TComboBox; //раскрывающийся список

Label2: TLabel; //иностранные языки

CheckBox1: TCheckBox; //английский

CheckBox2: TCheckBox; //немецкий

CheckBox3: TCheckBox; //французский

LabeledEdit5: TLabeledEdit; //другие языки

Memo1: TMemo;

Label4: TLabel; //Автобиография

Button1: TButton;

Label5: TLabel; //указание к действию

SaveDialog1: TSaveDialog; //диалог Windows сохранения файла

procedureFormActivate(Sender: TObject);

procedureComboBox1Exit(Sender: TObject);

procedure Button1Click(Sender: TObject);

End;

 

varForm1: TForm1;

 

Implementation

 

{$R *.dfm}

Var F: TextFile;

Uch_Zv, S: String; //Uch_Zv - учёное звание, S - вспомогательная пер.

const S_in_no ='Иностранными языками не владею.';

 

procedureTForm1.FormActivate(Sender: TObject);

begin//присваивает Uch_Zv значение при загрузке

Uch_Zv:= ComboBox1.Text;

End;

 

procedureTForm1.ComboBox1Exit(Sender: TObject);

begin//Присваивает Uch_Zv выбранное значение при потери фокуса

Uch_Zv:= Uch_Zv + ComboBox1.Items[ComboBox1.ItemIndex];

End;

procedure TForm1.Button1Click(Sender: TObject);

Begin

Case RadioGroup1.ItemIndex of //выбор пола

0: S := RadioGroup1.Items[0]; // выбран первый

1: S := RadioGroup1.Items[1]; //выбран второй

end;

if SaveDialog1.Execute //выполняется диалог сохранения файла

thenAssignFile(F, SaveDialog1. FileName); //задать имя файла

{$I-} //отключён контроль ошибок ввода-вывода

Rewrite(F); // открыт на запись

{$I+} //включён контроль ошибок

if IOresult <> 0 //ошибка IOresult <> 0,на выход

Then Exit;

Writeln(F, LabeledEdit1.Text + ' ' + //запись ФИО

LabeledEdit2.Text+ ' ' + LabeledEdit3.Text);

Write(F, #13#10 + RadioGroup1.Caption + ' ' + S + ' ');

Writeln(F, LabeledEdit4.Editlabel.Caption + ' ' + LabeledEdit4.Text );//год р.

// Формирование в строке S перечня иностранных языков

S := ''; //пустое значение

if CheckBox1.Checked = true

then S:= CheckBox1.Caption;

if (CheckBox2.Checked = true) and (S <> '')

then S:= S + ', ' + CheckBox2.Caption;

if(CheckBox3.Checked = true) and (S <> '')

then S:=S + ', ' + CheckBox3.Caption;

if(LabeledEdit5.Text <> '') and (S <> '')

Then begin

S:=S + ', ' + LabeledEdit6.Text;

Writeln(F, Label2.Caption + ' '+ S);

End

else Writeln(F, #13#10 + S_in_no);//Иностранными языками не владею

Writeln(F, #13#10 + Memo1.Text);

CloseFile(F);

End;

end.

Копия текста Anketa.doc

Ломоносов Михаил Васильевич   Пол - мужской Год рождения ноябрь 1711г.

Лабораторная работа №5

5.1. Цель работы Целью работы является приобретение навыков создания простейших 2D-прикладных… 5.2.Задание

Теоретическая часть

Для расширения возможностей САПР КОМПАС без изменения исходного кода в ней реализован механизм динамически подключаемых библиотек. Каждая библиотека – это файл с расширением .rtw. На самом деле это самая обычная dll-библиотека, у которой расширение dll заменено на rtw. Такую библиотеку легко написать, например, на Delphi. Она будет подключаться к КОМПАС так же, как и все прочие библиотеки, и будет иметь полный доступ к API КОМПАС для выполнения различных построений и манипуляций с графическими объектами и документами.

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

Для запуска 2D библиотеки необходимо открыть – чертеж или фрагмент. Рассмотрим создание 2D библиотек. После каждой компиляции библиотеки ее надо заново подключать к КОМПАСу, предварительно удалив предыдущую версию. В противном случае КОМПАС "держит" файл библиотеки и Delphi не может его перезаписать, выводя соответствующее сообщение об ошибке. Последовательность действий при подключении библиотеки:

- изменили код библиотеки в Delphi;

- в КОМПАСе закрыли и удалили библиотеку;

- в Delphi откомпилировали библиотеку;

- в КОМПАСе подключили и запустили библиотеку.

В комплект поставки КОМПАС входит каталог SDK с файлом помощи sdk.hlp, содержащим минимум информации по объектам, процедурам и функциям API. Кроме того, в каталоге SDKPascalDelphi приведен ряд полезных примеров по созданию библиотек на Delphi.

Все построения осуществляются при помощи объекта Document2D, имеющего ряд методов. Все методы возвращают ссылку на созданный объект, которую можно запомнить в переменную типа Reference. Стили линий имеют коды, приведенные в Приложении 5.2.

Рассмотрим основные методы создания 2D геометрии:

Точка

Примитив «Точка» реализуется методом ksPoint(x,y,style) и ставит точку с координатами x,y и стилем style. Стили точек приведены в приложении 5.1.

Отрезок

Метод «Отрезок» ksLineSeg(x1,y1,x2,y2,type) проводит отрезок стилем линии type из точки (x1,y1) в точку (x2,y2).

Прямая

Метод «Прямая» ksLine(x,y,angle) проводит бесконечную прямую через точку x,y под углом angleв градусахк положительному направлению оси ОХ.

Дуга

Метод «Дуга1» ksArcBy3Points (x1, y1, x2,y2, x3, y3, type) строит дугу по трем точкам стилем линии type.

Метод «Дуга2» ksArcByAngle (xc, yc, rad, f1, f2, direction, type) строит дугу: xc, yc - координаты центра дуги, rad - радиус дуги, f1, f2 - начальный и конечный угол дуги в градусах, direction – направление отрисовки дуги:1 - против часовой стрелки, (-1) - по часовой стрелке, type - стиль линии.

Метод «Дуга3» ksArcByPoint (xc, yc, rad, x1, y1, x2, y2, direction, type) строит дугу: xc, yc - координаты центра дуги, rad - радиус дуги, x1, y1 – координаты начальной точки дуги, x2, y2 - координаты конечной точки дуги, direction -направление отрисовки дуги:1 - против часовой стрелки,(-1) - по часовой стрелке, type - стиль линии.

Окружность

Метод «Окружность» ksCircle(xc, yc, rad, type) строит окружность с центром в точке xc,yc, радиусом rad и стилем линии type.

 

 

Вид

Чертеж в КОМПАСе делится на виды. По умолчанию все отрисовываемые объекты оказываются на системном виде, что в общем-то неудобно. Элементы чертежа надо группировать по видам. Кроме того, каждый вид имеет свою систему координат и свой масштаб, что позволит пользователю библиотеки легко перемещать и масштабировать построенное программой изображение. Поэтому все построения будут делаться на новом виде. Процедуру создания вида необходимо запустить до начала рисования графических изображений. Начало координат вида (точка привязки) устанавливается в точке x0 и y0. В строку параметров также передаётся масштаб, угол поворота, цвет, статус и имя вида. Приведем пример процедуры создания вида.

procedure MakeView(x0,y0:DOUBLE; nm:STRING);

varpar:ksViewParam; n:INTEGER;

Begin

par := ksViewParam( kompas.GetParamStruct(ko_ViewParam) );

with par do

Begin

Init;

// точка привязки вида

x:= x0;

y:= y0;

scale_ := 1;

Angle:= 0;

//цвет вида, когда он активен

Color:= clRed;

state:= stACTIVE;

name:= nm

end;

n:=0;

iDocument2D.ksCreateSheetView( par, n )

end;

 

5.5. Пример разработки 2D-библиотеки «Отрезок1»

Поставим задачу создания простейшей 2D библиотеки, которая выполняла бы следующие действия: создавала бы в чертеже вид с началом координат в точке x0, y0, выводила бы на экран форму для ввода координат (x0,y0,x1,y1,x2,y2) и в текущем чертеже проводила бы отрезок из точки x1,y1 в точку x2,y2. В Delphi создаем новый проект типа "DLL library" (вспоминаем курс "Информатика"). В файле .dpr такого проекта содержится заголовок библиотеки со списком экспортируемых процедур. Для того, чтобы КОМПАС подключил нашу библиотеку, она должна экспортировать следующие процедуры и функции:

LibraryName - функция, возвращающая текстовое название библиотеки;

LibraryId – функция, возвращающая целый идентификатор библиотеки;

LibraryEntry – точка входа в библиотеку, или, проще говоря, процедура,выполняемая при запуске библиотеки.

Чтобы создаваемая библиотека автоматически получила расширение rtw, а не dll, надо использовать директиву компилятора {$E rtw}. Тогда dpr-файл нашего проекта будет иметь вид:

library OTREZOK1;

{$E rtw}

usesSysUtils, Classes, KsTLB,main1 in ‘main1.pas’,former1 in‘former1.pas;

Exports

LibraryName name 'LIBRARYNAME',

LibraryId name 'LIBRARYID',

LibraryEntry name 'LIBRARYENTRY';

Begin

End.

Как видно, в операторе USES подключается модуль KsTLB, обеспечивающий взаимодействие с API КОМПАС, а также модули данной библиотеки main1 и former1, в которых располагается форма и программный код. Файл KsTLB (а также другие необходимые для компиляции модули) находится в каталоге Program FilesAscon KOMPASSDKInclude. Необходимо сказать Delphi, чтобы поиск файлов при компиляции выполнялся и в вышеуказанном каталоге. Идем в меню ToolsEnvironment OptionsLibraryLibrary Path и добавляем в список путей поиска файлов каталог Include.

Создаем новый модуль (FileNewUnit), сохраняем его (например, под именем main1). В этом модуле мы должны описать реализацию процедур и функций LibraryName, LibraryId, LibraryEntry.

unitmain1;

Interface

//добавляем библиотеку Forms и модуль формы former1

uses Windows, SysUtils, LDefin2D, ksConstTLB, ksAuto,

ksTLB, Forms, former1;

// заголовки процедур

procedureLIBRARYENTRY(command: WORD); Pascal;

function LIBRARYNAME : PChar; Pascal;

functionLIBRARYID : Cardinal; Pascal;

// ссылки на КОМПАС и 2D документ

Var

Kompas: KompasObject;

iDocument2D: ksDocument2D;

Implementation

// своя процедура запуска

procedure Run;

Var

form : TMainForm; // ссылка на форму

Begin

// делаем нашу форму дочерней формой КОМПАСа

Application.Handle := kompas.ksGetHWindow;

// закрыть доступ к компасу

kompas.ksEnableTaskAccess(0);

// создаем форму

form:=TMainForm.Create(Application);

// вывод формы

form.ShowModal;

// открыть доступ к компасу

kompas.ksEnableTaskAccess(1);

// отключаем нашу форму от КОМПАСа

Application.Handle := 0

end;

//--------------------------------------------------

functionLIBRARYNAME: PChar; pascal;

Begin

// произвольное название библиотеки

Result := 'Отрезок'

end;

//--------------------------------------------------------------------

function LIBRARYID: UINT; pascal;

Begin

// произвольный идентификатор от 100 и выше

Result := 100;

end;

//---------------------------------------------------------------------

procedureLIBRARYENTRY (command:WORD); pascal;

Begin

// связываем переменную Kompas с API КОМПАСа

Kompas := KompasObject(CreateKompasObject);

// если все в порядке…

if Kompas <> nil then

Begin

// связываем переменную iDocument2D с текущим 2D документом

iDocument2D := ksDocument2D(Kompas.ActiveDocument2D());

ifiDocument2D= nil then

// сообщение об ошибке

Kompas.ksMessage('Текущий документ не является чертежом или фрагментом')

Else

Begin

// своя процедура запуска библиотеки

Run;

Kompas.ksMessage('Работа библиотеки завершена')

end;

// освобождение памяти

iDocument2D := nil;

end;

Kompas := nil

end;

end.

Процедура LibraryEntry может получать на вход целочисленный параметр, задействованный при вызове библиотеки из пунктов меню или с панели инструментов. Нам он пока не понадобится. Внутри процедуры выполняется проверка – является ли текущий документ 2D-документом. Мы пока не можем пользоваться никакими средствами Delphi для ввода-вывода, поэтому сообщения выводятся вызовом метода ksMessage объекта Kompas, т.е. средствами самого КОМПАСа.

Создадим форму (FileNewForm) и сохраним новый модуль под именем former1.pas. Сохраним проект. Самой форме дадим имя OTREZOK. В этом модуле мы создадим форму для ввода начальных значений и после нажатия на кнопку «Построить» создадим в текущем чертеже вид1 и построим отрезок.

unit former1;

Interface

Uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,LDefin2D, ksConstTLB, ksAuto, ksTLB;

Type

TMainForm = class(TForm)

Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel;

Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit;

Button2: TButton; Button3: TButton;

procedureButton3Click(Sender: TObject);

Private

{ Private declarations }

Public

{ Public declarations }

end;

 

Var

MainForm: TMainForm;

Implementation

uses main1;

{$R *.dfm}

//----------------------------------------------------------------------------

procedure DrawOtrezok1(x0,y0,x1,y1,x2,y2:double; nm:string);

//создание вида в текущем чертеже

procedure MakeView(x0,y0:DOUBLE; nm:STRING);

varpar:ksViewParam; n:INTEGER;

Begin

par := ksViewParam( kompas.GetParamStruct(ko_ViewParam) );

with par do

Begin

Init;

// точка привязки вида

x:= x0;

y:= y0;

scale_ := 1;

Angle:= 0;

//цвет вида, когда он активен

Color:= clRed;

state:= stACTIVE;

name:= nm

end;

n:=0;

iDocument2D.ksCreateSheetView( par, n )

end;

//выполняем процедуру DrawOtrezok

Begin

// cоздаём вид

MakeView(x0,y0,nm);

// отрезок

iDocument2D.ksLineSeg(x1,y1,x2,y2,1);

end;

//начало работы библиотеки

procedureTMainForm.Button3Click(Sender: TObject);

varX0,Y0,X1,Y1,X2,Y2:double;

Begin

Try

X1:=StrToFloat(Edit1.Text);

Y1:=StrToFloat(Edit2.Text);

X2:=StrToFloat(Edit3.Text);

Y2:=StrToFloat(Edit4.Text);

X0:=StrToFloat(Edit5.Text);

Y0:=StrToFloat(Edit6.Text)

Except

Kompas.ksMessage(‘Неверные данные');

abort

end;

DrawOtrezok1(X0,Y0,X1,Y1,X2,Y2,'otrezok')

end;

end.

 

Поместим на форму четыре компонента типа TEdit для ввода координат точек отрезка и два компонента типа TEdit для ввода начала координат вида, компоненты типа TLabel для размещеня надписей, кнопку "Отрезок" и кнопку "Готово"(Рис. 5.1). Как и в любой другой библиотеке, форма не создается автоматически – ее надо вручную создать и отобразить.

Рис.5.1. Форма библиотеки Отрезок

 

На время работы с формой надо отключить доступ к элементам интерфейса КОМПАС, иначе неизбежны попытки одновременного рисования в документе пользователем и библиотекой. Процедура Run в модуле main1 все это выполняет. Форма будет выводиться в модальном режиме. Это означает, что она заблокирует все остальные формы и, пока мы ее не закроем, доступ к КОМПАСу будет запрещен, что и требовалось. Чтобы модальную форму корректно закрыть, не обязательно выполнять метод Close. Достаточно в свойствах кнопки "Закрыть" установить ModalResult в значение mrOK. Это равносильно закрытию формы при нажатии на данную кнопку.

Для рисования отрезка используем имеющиеся в API команды построения изображений. Все они являются методами объекта iDocument2D. Построим отрезок в procedure TMainForm.Button3Click (Sender: TObject) при помощи метода ksLineSeg. На рисунке 5.2. показан чертёж с результатами работы библиотеки Отрезок1.

 

Рис.5.2. Пример применения библиотеки Отрезок1

5.6.Содержание отчёта

1.Титульный лист.

2. Задание.

3. Краткая теоретическая часть.

4. Содержательное описание прикладной библиотеки.

5. Файлы библиотеки с программным кодом.

6. Пример работы с библиотекой.

7. - подготовить отчёт по проделанной работе в текстовом формате KDW с переходом через формат JPG в формат PDF.

Контрольные вопросы

1.Что такое прикладная библиотека?

2. Как подключить к Компасу прикладную библиотеку?

3. Каков порядок создания нового проекта библиотеки в Delphi?

4. Каково назначение файла проекта?

5. Каково назначение файла формы?

6. Каково назначение файла программного модуля?

7. Какие функции должна экспортировать прикладная библиотека для её подключения к Компасу?

8. Какие основные методы создания графических примитивов имеются в API Компас?

9.Как производится отладка библиотеки?

10. Какой порядок работы с библиотекой при создании чертежа?

 

Библиография

1. Богуславский А.А. Си++ и компьютерная графика. М.,Компьютер Пресс,2003,352стр.

2.Карпов Б. Delphi:специальный справочник. СПб, Питер, 2001, 688стр.

3.Троицкий Д.И. Разработка 2D-библиотек для Компас. Тула, ТГУ, 2007, 26стр.

 

 


Приложение 5.1. Стили точек

0 - точка

1 - крестик

2 - х-точка

3 - квадрат

4 - треугольник

5 - окружность

6 - звезда

7 - перечеркнутый квадрат

8 - утолщенный плюс

 

Приложение 5.2. Коды стилей линий

1 - основная линия

2 - тонкая линия

3 - осевая линия

4 - штриховая линия

5 - для линии обрыва

6 - вспомогательная линия

7 - утолщенная

8 - штрихпунктирная линия с двумя точками

9 - штриховая толстая линия

10 - осевая толстая линия

11 - тонкая линия, включаемая в штриховку

12 - ISO штриховая линия

13 - ISO штриховая линия (дл. пробел)

14 - ISO штрихпунктирная линия (дл. штрих)

15 - ISO штрихпунктирная линия (дл. штрих 2 пунктира)

16 - ISO штрихпунктирная линия (дл. штрих 3 пунктира)

17 - ISO пунктирная линия

18 - ISO штрихпунктирная линия (дл. и кор. штрихи)

19 - ISO штрихпунктирная линия (дл. и 2 кор. штриха)

20 - ISO штрихпунктирная линия

21 - ISO штрихпунктирная линия (2 штриха)

22 - ISO штрихпунктирная линия (2 пунктира)

23 - ISO штрихпунктирная линия (3пунктира)

24 - ISO штрихпунктирная линия (2 штриха 2 пунктира)

25 - ISO штрихпунктирная линия (2 штриха 3 пунктира)

 


Лабораторная работа №6

6.1. Цель работы Целью работы является приобретение навыков создания 2D-прикладных библиотек и… 6.2. Задание

Begin

// создание структуры данных

par := ksEllipseParam(kompas.GetParamStruct(ko_EllipseParam));

withpardo

Begin

Init; // создание структуры

xc := 50; // координаты центра

yc := 40;

a := 20; // оси

B := 10;

style := 1; // стиль линии

end;

iDocument2D.ksEllipse(par) // построение эллипса

End;

NURBS-сплайн.

Сплайн – это составной объект, определяемый набором опорных точек. Сплайны используются в чертежах, например, при построении профиля зубчатых колес. Рассмотрим пример построения сплайна:

var par : ksNurbsPointParam;

Begin

par := ksNurbsPointParam(kompas.GetParamStruct(ko_NurbsPointParam));

with par do

Begin

Init;

// 3 – порядок сплайна

// FALSE – незамкнутый (TRUE – замкнутый)

// 1 – стиль линии

iDocument2D.ksNurbs(3,False,1);

x := 0;

y := 0;

weight := 1;

// добавили точку с координатами x,y и "весом" weight

iDocument2D.ksNurbsPoint(par);

x := 20;

y := 20;

weight := 1;

iDocument2D.ksNurbsPoint(par);

x := 50;

y := 10;

weight := 1;

iDocument2D.ksNurbsPoint(par);

x := 70;

y := 20;

weight := 1;

iDocument2D.ksNurbsPoint(par);

x := 100;

y := 0;

weight := 1;

iDocument2D.ksNurbsPoint(par);

x := 50;

y := -50;

weight := 1;

iDocument2D.ksNurbsPoint(par);

// завершили создание объекта

iDocument2D.ksEndObj

End

end;

Здесь сплайн 3-го порядка задан шестью точками.

Текст

Текст отрисовывается методом ksParagraph. Это также составной объект. Для каждого элемента текста можно указывать большое количество параметров, приведенных в Приложении 6.2. Рассмотрим код, выводящий текст, показанный на
рис. 6.1.

Var

par : ksParagraphParam; // абзац

itemParam : ksTextItemParam; // текст

itemFont : ksTextItemFont; // шрифт

Begin

par := ksParagraphParam(

kompas.GetParamStruct(ko_ParagraphParam) );

par.Init;

// параметры абзаца

with par do

begin

x := 30; // левая верхняя точка

y := 30;

height := 25; // высота

width := 20; // ширина

end;

// создаем абзац

iDocument2d.ksParagraph( par );

// параметры текста

itemParam := ksTextItemParam(

kompas.GetParamStruct(ko_TextItemParam));

itemParam.Init;

// параметры шрифта

itemFont := ksTextItemFont(itemParam.GetItemFont);

itemFont.Init;

with itemFont do

Begin

// c новой строчки

SetBitVectorValue( NEW_LINE, true );

// наименование шрифта

FontName:='Arial';

// высота текста в мм

Height:=5;

end;

// собственно текст

ItemParam.s:= 'Первая строка';

// выводим текст

iDocument2d.ksTextLine( itemParam );

// следующая строка

itemFont.Init;

with itemFont DO

Begin

SetBitVectorValue( NEW_LINE, true );

SetBitVectorValue( BOLD_ON, true );

Height:=10;

End;

ItemParam.s := 'Вторая строка (жирный)';

iDocument2d.ksTextLine(itemParam);

iDocument2d.ksEndObj

end;

Метод SetBitVectorValue управляет оформлением текста и его разбивкой на строки (обратите внимание на константу NEW_LINE). Текст в основной надписи чертежа редактируется другими методами.

Рис. 6.1 Результат отрисовки текста.

 

Осевые линии

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

varpar:ksCentreParam;

c:reference;

Begin

// окружность, в с запомнили ссылку на нее

c:=iDocument2D.ksCircle(150,150,20,1);

// создаем структуру для параметров осевых

par:=ksCentreParam(kompas.GetParamStruct(ko_CentreParam));

with par do

Begin

init;

// ссылка на окружность

BaseCurve:=c;

// число осевых - две

type_:=2;

// длина осевой от центра вправо

LenXPTail:=25;

// длина осевой от центра влево

LenXmTail:=25;

// длина осевой от центра вверх

LenYPTail:=25;

// длина осевой от центра вниз

LenYmTail:=25;

end;

// создание осевых

iDocument2D.ksCentreMarker(par)

end;

Штриховка

ksHatch(style, Angle, step, width, x0, y0). Он задает штрихование контура стилем style под углом angle с шагом step и толщиной линий width.… Пример построения заштрихованной окружности: iDocument2D.ksHatch(1,0,1,10,100,100);

Линейный размер

Рис. 6.2 Линейный размер  

Var

param : ksLDimParam;

dPar : ksDimDrawingParam;

sPar : ksLDimSourceParam;

tPar : ksDimTextParam;

str : ksChar255;

arrText : ksDynamicArray;

obj : Reference;

Begin

// структура для параметров размера

param := ksLDimParam

( kompas.GetParamStruct(ko_LDimParam) );

// параметры отрисовки размера

dPar := ksDimDrawingParam( param.GetDPar );

// положение размерной линии

sPar := ksLDimSourceParam( param.GetSPar );

// параметры размерного текста

tPar := ksDimTextParam ( param.GetTPar );

dPar.Init;

dPar.textBase := 0; // способ размещения текста

// тип первой стрелки (1- внутри, 2 – снаружи)

dPar.pt1 := 2;

dPar.pt2 := 2; // тип второй стрелки

dPar.ang := -30; // угол наклона выноски

dPar.lenght := 20; // длина выноски

sPar.Init;

// начало первой выносной линии

sPar.x1 := 50;

sPar.y1 := 50;

// начало второй выносной линии

sPar.x2 := 150;

sPar.y2 := 50;

// смещение размерной линии

sPar.dx := 0;

sPar.dy := 20;

// относительно какой точки задается смещение:

// 1 - от 1,y1,

// 2 - от x2,y2

sPar.basePoint := 1;

tPar.Init( False );

// автопростановка номинала

tPar.SetBitFlagValue( _AUTONOMINAL, true );

// будет текст перед номиналом

tPar.SetBitFlagValue( _PREFIX, true );

// будет проставлено отклонение

tPar.SetBitFlagValue( _DEVIATION, true );

// будет проставлена единица измерения

tPar.SetBitFlagValue( _UNIT, true );

// будет текст после номинала

tPar.SetBitFlagValue( _SUFFIX, true );

// знак диаметра перед текстом

tPar.sign := 1;

// строка в 255 символов

str := ksChar255( kompas.GetParamStruct(ko_Char255));

// массив текстовых строк

arrText := ksDynamicArray( tPar.GetTextArr );

// текст до номинала

str.str := '+';

// добавили в массив

arrText.ksAddArrayItem( -1, str );

// верхнее отклонение

str.str := '+0,2';

// добавили в массив

arrText.ksAddArrayItem( -1, str );

// нижнее отклонение

str.str := '-0,4';

// добавили в массив

arrText.ksAddArrayItem( -1, str );

// единица измерения

str.str := ' мм';

// добавили в массив

arrText.ksAddArrayItem( -1, str );

// текст после размера

// &04 - знак "х"

// &01 - знак градуса

str.str := '2&0445&01';

arrText.ksAddArrayItem( -1, str );

// создаем размер

iDocument2d.ksLinDimension(param)

end;

Угловые, диаметральные размеры, знаки шероховатости, выноски

Делаются аналогично. Примеры их построения приведены в файле step99.pas, входящем в примеры библиотек из комплекта поставки КОМПАС.

Смена системы координат

В ряде случаев удобно вычислять координаты не в абсолютной системе координат, а во временной пользовательской. Для ее создания есть метод

ksMtr(x, y, Angle, scaleX, scaleY)

Здесь x, y - координаты начала локальной системы координат, angle – угол наклона системы координат в градусах, scaleX - масштаб локальной системы координат по оси Х, scaleY - масштаб локальной системы координат по оси Y. Отменяется действие локальной системы координат методом ksDeleteMtr.

Основная надпись

В документе типа "Чертеж" можно автоматизировать заполнение основной надписи. Каждая клетка основной надписи имеет свой номер (Рис. 6.3). Например, заполним поля "Разработал" (ячейка 110) и "Дата" (ячейка 130):

Var

stamp : ksStamp;

itemParam : ksTextItemParam;

Begin

// получаем ссылку на основную надпись

stamp := ksStamp( iDocument2d.GetStamp );

itemParam := ksTextItemParam(

kompas.GetParamStruct(ko_TextItemParam) );

itemParam.Init;

// открываем ее для редактирования

stamp.ksOpenStamp;

// Сделать ячейку с номером 110 текущей

Stamp.ksColumnNumber(110);

// Поместить в текущую ячейку одну текстовую строку

ItemParam.s := ' Иванов Д.И.';

Stamp.ksTextLine( ItemParam );

// Сделать ячейку с номером 130 текущей

Stamp.ksColumnNumber(130);

// Поместить в текущую ячейку одну текстовую строку -

// сегодняшнюю дату

ItemParam.s := DateToStr(Now);

Stamp.ksTextLine( ItemParam );

// закрываем основную надпись

stamp.ksCloseStamp

end;

Как проверить, какого типа 2D документ является текущим – фрагмент или чертеж? (в фрагменте нет основной надписи и попытка работы с ней вызовет сообщение об ошибке)

// получаем ссылку на основную надпись

stamp := ksStamp( iDocument2d.GetStamp );

itemParam := ksTextItemParam(

kompas.GetParamStruct(ko_TextItemParam) );

itemParam.Init;

// открываем ее для редактирования

if stamp.ksOpenStamp=0 then

 

 

Рис. 6.3.Нумерация ячеек основной надписи.

Begin

kompas.ksMessage

('Текущий документ не является чертежом');

Exit

end;

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

 

procedureLinDim(x1,y1,x2,y2,dx,dy:DOUBLE; diamsign:boolean; pl1,pl2:boolean);

// простановка линейного размера

// x1,y2,x2,y2 - координаты начал выносных линий

// dx,dy - смещение размерной линии относительно точки x1,x2

// diamsign - проставлять ли знак диаметра

// pl1, pl2 - рисовать ли первую и вторую выносные линии

Var

param : ksLDimParam;

dPar : ksDimDrawingParam;

sPar : ksLDimSourceParam;

tPar : ksDimTextParam;

str : ksChar255;

arrText : ksDynamicArray;

Begin

// структура для параметров размера

param := ksLDimParam( kompas.GetParamStruct(ko_LDimParam) );

// параметры отрисовки размера

dPar := ksDimDrawingParam( param.GetDPar );

// положение размерной линии

sPar := ksLDimSourceParam( param.GetSPar );

// параметры размерного текста

tPar := ksDimTextParam ( param.GetTPar );

dPar.Init;

dPar.textBase := 0; // способ размещения текста

// тип первой стрелки (1-изнутри, 2-снаружи)

dPar.pt1 := 1;

dPar.pt2 := 1; // тип второй стрелки

// вкл/выкл. выносные линии

dPar.pl1 :=not(pl1);

dPar.pl2 :=not(pl2);

dPar.ang := 0; // угол наклона выноски

dPar.lenght := 0; // длина выноски

sPar.Init;

// начало первой выносной линии

sPar.x1 := x1;

sPar.y1 := y1;

// начало второй выносной линии

sPar.x2 := x2;

sPar.y2 := y2;

// смещение размерной линии

sPar.dx := dx;

sPar.dy := dy;

// относительно какой точки задается смещение:

// 1 - от 1,y1, 2 - от x2,y2

sPar.basePoint := 1;

tPar.Init( False );

// автопростановка номинала

tPar.SetBitFlagValue( _AUTONOMINAL, true );

if diamsign then

tPar.sign := 1;

// создаем размер

iDocument2d.ksLinDimension( param )

end;

Для заполнения ячеек основной надписи заготовим процедуру, заносящую текст в ячейку с указанным номером:

procedure Stamp(c:byte; t:string);

Var

stamp : ksStamp;

itemParam : ksTextItemParam;

Begin

// получаем ссылку на основную надпись

stamp := ksStamp( iDocument2d.GetStamp );

itemParam :=

ksTextItemParam( kompas.GetParamStruct(ko_TextItemParam) );

itemParam.Init;

// открываем ее для редактирования

if stamp.ksOpenStamp=0 then

Begin

kompas.ksMessage

('Текущий документ не является чертежом');

Exit

end;

// Сделать ячейку текущей

Stamp.ksColumnNumber(c);

// Поместить в текущую ячейку одну текстовую строку

ItemParam.s := t;

Stamp.ksTextLine( ItemParam );

// закрываем основную надпись

stamp.ksCloseStamp

End;

6.5.Пример разработки прикладной библиотеки «Втулка»

 

Пользуясь полученными знаниями, создадим полноценную библиотеку, выполняющую построение 2D чертежа втулки (Рис. 6.4) и заполнение основной надписи.

Рис. 6.4 Содержательная часть чертежа втулки.

Одну точку чертежа надо будет зафиксировать. Примем левую нижнюю точку контура за (0,0) относительно системы координат вида.

Приведем теперь все три файла проекта библиотеки «Втулка».

 

Первый файл проекта:

librarychanel;

{$E rtw}

Uses

SysUtils,Classes,KsTLB,main in 'main.pas',former in 'former.pas' {MainForm};

Exports

LibraryName name 'LIBRARYNAME',

LibraryId name 'LIBRARYID',

LibraryEntry name 'LIBRARYENTRY';

Begin

End.

Второй файл проекта (главный модуль):

unitmain;

Interface

uses Windows, SysUtils, LDefin2D, ksConstTLB, ksAuto, ksTLB, former, Forms ;

procedure LIBRARYENTRY(command: WORD); Pascal;

functionLIBRARYNAME : PChar; Pascal;

function LIBRARYID : Cardinal; Pascal;

Var

Kompas: KompasObject;

iDocument2D: ksDocument2D;

Implementation

// LibraryName

functionLIBRARYNAME: PChar; pascal;

Begin

Result := 'Втулка';

end;

procedure Run;

Var

form : TMainForm;

Begin

Application.Handle := kompas.ksGetHWindow;

kompas.ksEnableTaskAccess( 0 ); // закрыть доступ к компасу

// создаем форму

form:=TMainForm.Create( Application );

form.ShowModal; // вывод формы

kompas.ksEnableTaskAccess( 1 ); // открыть доступ к компасу

Application.Handle := 0

end;

//------------------------------------------------------------------------------------------

procedure LIBRARYENTRY (command:WORD); pascal;

Begin

Kompas := KompasObject(CreateKompasObject);

if Kompas <> nil then

Begin

iDocument2D := ksDocument2D(Kompas.ActiveDocument2D());

if iDocument2D=nil then

Kompas.ksMessage( 'Текущий документ не является чертежом или фрагментом' )

else

Run;

iDocument2D := nil;

End;

Kompas := nil

End;

//------------------------------------------------------------------------------------------

functionLIBRARYID: UINT; pascal;

Begin

Result := 100;

end;

end.

 

Рис.6.5. Форма библиотеки «Втулка»

 

Третий файл проекта - модуль формы(рис.6.5):

unitformer;

Interface

Uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls,LDefin2D, ksConstTLB, ksAuto, ksTLB;

Type

TMainForm = class(TForm)

Edit1: TEdit; Edit2: TEdit; Edit4: TEdit; Button2: TButton; Button3: TButton;

Label1: TLabel; Label2: TLabel; Label3: TLabel;

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

Var

MainForm: TMainForm;

Implementation

uses main;

{$R *.dfm}

//--------------------------------------------------------------------------------------

procedure DrawBusher(x0,y0:double; nm:string; D1,D2,L:double);

// D1 - внутренний диаметр; D2 - наружный диаметр; L - длина втулки

// x0,y0 - координаты левого нижнего угла вида; mn - имя вида

procedureMakeView(x0,y0:DOUBLE; nm:STRING);

var par:ksViewParam;

n:INTEGER;

Begin

par := ksViewParam( kompas.GetParamStruct(ko_ViewParam) );

withpar do

Begin

Init;

// точка привязки вида

x:= x0;

y:= y0;

scale:= 1;

Angle:= 0;

// цвет вида, когда он активен

Color:= clRed;

state:= stACTIVE;

name:= nm

end;

n:=0;

iDocument2D.ksCreateSheetView( par, n )

end;

//---------------------------------------------------------------------------------------

procedure Stamp(c:byte; t:string);

Var

stamp : ksStamp;

itemParam : ksTextItemParam;

Begin

// получаем ссылку на основную надпись

stamp := ksStamp( iDocument2d.GetStamp );

itemParam := ksTextItemParam( kompas.GetParamStruct(ko_TextItemParam) );

itemParam.Init;

// открываем ее для редактирования

if stamp.ksOpenStamp=0 then

Begin

kompas.ksMessage('Текущий документ не является чертежом');

Exit

End;

// Сделать ячейку текущей

Stamp.ksColumnNumber(c);

// Поместить в текущую ячейку одну текстовую строку

ItemParam.s := t;

Stamp.ksTextLine( ItemParam );

// закрываем основную надпись

stamp.ksCloseStamp

end;

//------------------------------------------------------------------------------------

procedure Contour1;

Begin

iDocument2D.ksLineSeg(0,D2-(D2-D1)/2,L,D2-(D2-D1)/2,1);

iDocument2D.ksLineSeg(0,D2-(D2-D1)/2,0,D2,1);

iDocument2D.ksLineSeg(L,D2-(D2-D1)/2,L,D2,1);

iDocument2D.ksLineSeg(0,D2,L,D2,1)

end;

//----------------------------------------------------------------------------------------

procedureContour2;

Begin

iDocument2D.ksLineSeg(0,0,L,0,1);

iDocument2D.ksLineSeg(L,0,L,(D2-D1)/2,1);

iDocument2D.ksLineSeg(L,(D2-D1)/2,0,(D2-D1)/2,1);

iDocument2D.ksLineSeg(0,(D2-D1)/2,0,0,1)

end;

//-----------------------------------------------------------------------------------------

procedure LinDim(x1,y1,x2,y2,dx,dy:DOUBLE; diamsign:boolean; pl1,pl2:boolean);

// простановка линейного размера

// x1,y2,x2,y2 - координаты начал выносных линий

// dx,dy - смещение размерной линии относительно точки x1,x2

// diamsign - проставлять ли знак диаметра

// pl1, pl2 - рисовать ли первую и вторую выносные линии

Var

param : ksLDimParam;

dPar : ksDimDrawingParam;

sPar : ksLDimSourceParam;

tPar : ksDimTextParam;

str : ksChar255;

arrText : ksDynamicArray;

begin

// структура для параметров размера

param := ksLDimParam( kompas.GetParamStruct(ko_LDimParam) );

// параметры отрисовки размера

dPar := ksDimDrawingParam( param.GetDPar );

// положение размерной линии

sPar := ksLDimSourceParam( param.GetSPar );

// параметры размерного текста

tPar := ksDimTextParam ( param.GetTPar );

dPar.Init;

dPar.textBase := 0; // способ размещения текста

dPar.pt1 := 1; // тип первой стрелки (1- внутри, 2 – снаружи)

dPar.pt2 := 1; // тип второй стрелки

//вкл/выкл размерные линии

dPar.pl1 :=not(pl1);

dPar.pl2 :=not(pl2);

dPar.ang := 0; // угол наклона выноски

dPar.lenght := 0; // длина выноски

sPar.Init;

// начало первой выносной линии

sPar.x1 := x1;

sPar.y1 := y1;

// начало второй выносной линии

sPar.x2 := x2;

sPar.y2 := y2;

// смещение размерной линии

sPar.dx := dx;

sPar.dy := dy; {20}

// относительно какой точки задается смещение:

// 1 - от 1,y1,

// 2 - от x2,y2

sPar.basePoint := 1;

tPar.Init( False );

// автопростановка номинала

tPar.SetBitFlagValue( _AUTONOMINAL, true );

if diamsign then

tPar.sign := 1;

// создаем размер

iDocument2d.ksLinDimension( param )

end;

//---------------------------------------------------------------------------------

Begin

// создали вид

MakeView(x0,y0,nm);

// осевая линия

iDocument2D.ksLineSeg(-5,D2/2,L+5,D2/2,3);

Contour1;

// штриховка контура1

iDocument2D.ksHatch(0,45,1,5,5,D2-(D2-D1)/2+5);

Contour1;

iDocument2D.ksEndObj;

Contour2;

// штриховка контура2

iDocument2D.ksHatch(0,45,1,5,0,0);

Contour2;

iDocument2D.ksEndObj;

// внешний контур

iDocument2D.ksLineSeg(0,D2-(D2-D1)/2,0,(D2-D1)/2,1);

iDocument2D.ksLineSeg(L,D2-(D2-D1)/2,L,(D2-D1)/2,1);

// длина

LinDim(0,0,L,0,0,-20,false,true,true);

// наружный диаметр

LinDim(0,0,0,D2,-20,0,true,true,true);

// внутренний диаметр

LinDim(0,(D2-D1)/2,0,(D2-D1)/2+D1,-10,0,true,true,true);

// Основная надпись

Stamp(1,'Втулка');

Stamp(3,'Сталь 40Х');

Stamp(9,'ИМТ');

Stamp(8,'1');

Stamp(110,'Иванов И.И.');

Stamp(130,DateToStr(Now))

end;

//--------------------------------------------------------------------------

procedure TMainForm.Button3Click(Sender: TObject);

var d1,d2,l:double;

Begin

Try

d1:=StrToFloat(Edit2.Text);

d2:=StrToFloat(Edit1.Text);

l:=StrToFloat(Edit4.Text)

Except

Kompas.ksMessage('Неверные данные');

abort

end;

if d1>=d2 then

Begin

Kompas.ksMessage('Внутренний диаметр больше наружного');

abort

end;

DrawBusher(100,100, 'busher',d1, d2, l)

End;

End.

На рисунке 6.6. показан чертёж с результатами работы библиотеки «Втулка».

Рис.6.6. Чертёж втулки, созданный прикладной библиотекой

 

6.6.Содержание отчёта

1.Титульный лист.

2. Задание.

3. Краткая теоретическая часть.

4. Содержательное описание прикладной библиотеки.

5. Файлы библиотеки с программным кодом.

6. Пример работы с библиотекой.

7. - подготовить отчёт по проделанной работе в текстовом формате KDW с переходом через формат JPG в формат PDF.

6.7. Контрольные вопросы

1.Чем отличается проект прикладной библиотеки от обычного проекта Delphi?

2. Какую папку из ресурсов Компаса нужно подключить к Delphi при создании прикладной библиотеки?

3. Какие модули входят в состав проекта библиотеки в Delphi?

4. Какие задачи решает файла проекта библиотеки?

5. Какие процедуры содержатся в файле формы библиотеки?

6. Какие процедуры содержатся в файла программного модуля библиотеки?

7. Какие процедуры и функции используются библиотекой при создании формы?

8. Какие методы создания сложных графических изображений имеются в API Компас?

9.Какие средства Delphi можно использовать для отладки библиотеки?

10. Какие параметры используются библиотекой при создании вида?

6.8. Библиография

1. Богуславский А.А. Си++ и компьютерная графика. М., Компьютер Пресс,2003,352стр.

2.Карпов Б. Delphi:специальный справочник. СПб, Питер, 2001, 688стр.

3.Троицкий Д.И. Разработка 2D-библиотек для Компас. Тула, ТГУ, 2007, 26стр.


Приложение 6.1. Коды стилей штриховок

0 - металл

1 - неметалл

2 - дерево

3 - камень естественный

4 - керамика

5 - бетон

6 - стекло

7 - жидкость

8 - естественный грунт

9 - насыпной грунт

10 - камень искусственный

11 - железобетон

12 - напряженный железобетон

13 - дерево в продольном сечении

14 – песок

 

Приложение 6.2. Коды свойств текста

Константа – Шестнадцатиричное значение

 

INVARIABLE - 0 (не менять флаги текста)

NUMERATOR - $1 (числитель)

DENOMINATOR - $2 (знаменатель)

END_FRACTION - $3 (конец дроби)

UPPER_DEVIAT - $4 (верхнее отклонение)

LOWER_DEVIAT - $5 (нижнее отклонение)

END_DEVIAT - $6 (конец отклонений)

S_BASE - $7 (основание выражения с под или над строкой)

S_UPPER_INDEX - $8 (верхний индекс выражения с под или над строкой)

S_LOWER_INDEX - $9 (нижний индекс выражения с под или над строкой)

S_END - $10 (конец выражения с под или надстрокой)

SPECIAL_SYMBOL - $11 (спецзнак)

SPECIAL_SYMBOL_END - $12 (конец спецзнака для спецзнаков с текстом)

RETURN_BEGIN - $13 (начало для ввода следующих строк в спецзнаке с текстом, дробях, отклонениях)

RETURN_DOWN - $14 (для ввода следующих строк в спецзнаке с текстом, дробях, отклонениях)

RETURN_RIGHT - $15 (для ввода строк справа в спецзнаке с текстом, дробях, отклонениях)

TAB - $16 (табуляция по текущему стилю)

FONT_SYMBOL - $17 (символ фонта)

ITALIC_ON - $40 (включить наклон)

ITALIC_OFF - $80 (выключить наклон)

BOLD_ON - $100 (включить жирное начертание)

BOLD_OFF - $200 (выключить жирное начертание)

UNDERLINE_ON - $400 (включить подчеркивание)

UNDERLINE_OFF - $800 (выключить подчеркивание)

NEW_LINE - $1000 (новая строка в параграфе)

 

Приложение 6.3. Коды размеров

1.Стрелки (свойства pt1,pt2)

0 - стрелки нет

1 - стрелка внутри

2 - стрелка снаружи

3 - засечка

4 - точка

2.Положение текста (свойство textBase)

0 - в центре

1 - на расстояние (или угол) textPos относительно первой точки

2 - на расстояние (или угол) textPos относительно второй точки

3.Управление размерным текстом (свойство bitFlag)

Константа - Шестнадцатиричное значение

_AUTONOMINAL - $1 (автоматическое определение номинального значения размера)

_RECTTEXT - $2 (текст в рамке)

_PREFIX - $4 (есть текст до номинала)

_NOMINALOFF - $8 (нет номинала)

_TOLERANCE - $10 (проставлять квалитет)

_DEVIATION - $20 (проставлять отклонения)

_UNIT - $40 (единица измерения)

_SUFFIX - $80 (есть текст после номинала)

_DEVIATION_INFORM - $100 (при включенном флаге)

_UNDER_LINE - $200 (размер с подчеркиванием)

_BRACKETS - $400 (размер в скобках)

_SQUARE_BRACKETS - $800 (размер в квадратных скобках,

используется вместе с _BRACKETS)

 

4.Значок перед размерным текстом (свойство Sign)

0 - нет значка

1 - диаметр 

2 - квадрат

3 - радиус R

>3 - код символа из шрифта "Symbol type A"


 

 

Розанов Леонид Николаевич, Донская Марина Михайловна, Гончаров Борис Федорович

 

 

САПР в машиностроении

  Методические указания для выполнения лабораторных работ по курсу "САПР в машиностроении"

– Конец работы –

Используемые теги: САПР, машиностроении0.059

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: САПР в машиностроении

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

САПР ТП и штамповой оснастки
Листовой штамповки ЛШ... Содержание ТПП ЛШ виды ТП этапы ТПП... При технологической подготовке производства ТПП создается наиболее экономичный вариант технологического процесса...

ПРИНЦИПЫ ПОСТРОЕНИЯ И СТРУКТУРА САПР ТП
Технологический процесс как объект проектирования... Многовариантность проектирования ТП этапы ТП...

САПР ТП ЛШ необходимость разработки, виды и обеспечение
На сайте allrefs.net читайте: САПР ТП ЛШ необходимость разработки, виды и обеспечение.

И технологии машиностроения
Санкт Петербургский государственный горный институт... имени Г В Плеханова технический университет...

И технологии машиностроения
Санкт Петербургский государственный горный институт... имени Г В Плеханова технический университет...

Тема 5. Качество продукции машиностроения
Общие сведения о качестве продукции и ее оценка... В современных условиях мировой рынок выдвигает жесткие требования к качеству поступающей на него продукции...

Санкт – Петербургский Институт Машиностроения. Отчет по предприятию
На сайте allrefs.net читайте: "Санкт – Петербургский Институт Машиностроения"

МОДЕЛИРОВАНИЕ СБОРОК В САПР Pro/ENGINEER
На сайте allrefs.net читайте: "МОДЕЛИРОВАНИЕ СБОРОК В САПР Pro/ENGINEER"

Тематика, структура и организация дипломного проектирования по специальности «Технологии машиностроения»
На сайте allrefs.net читайте: "Тематика, структура и организация дипломного проектирования по специальности «Технологии машиностроения»"

знакомство со средой САПР
На сайте allrefs.net читайте: "знакомство со средой САПР"

0.034
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам