Файл: Методические указания по выполнению лабораторных работ по дисциплине (модулю) Лингвистическое и программное обеспечение автоматизированных систем.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 587
Скачиваний: 3
СОДЕРЖАНИЕ
2.Общие положения (теоретические сведения)
2.1. Принцип рекурсии в правилах грамматики
2.2. Запись правил грамматик с использованием метасимволов
2.3. Запись правил грамматик в графическом виде
3. Задание на лабораторную работу
4. Ход работы (порядок выполнения работы)
2.Общие положения (теоретические сведения)
2.1. Разработка лексического анализатора
2.2. Разработка синтаксического анализатора
2.3. Пример построения простого синтаксического анализатора
2.4. Анализаторы для сложных рекурсивных грамматик
2. Общие положения (теоретические сведения)
2.5. Логическая структура XML-документа
2.8. Описание структуры XML-документов
2.9. Язык XML Sсhema Definition (XSD)
2.10. Программная обработка XML-документов
2.11. Обработка XML-данных с использованием модели DOM
2.14. Сопоставление объектной иерархии с XML-данными
2.16. Считывание XML-документа в DOM
2.17. Директивы таблицы стилей, встроенные в документ
2.18. Загрузка данных из модуля чтения
2.19. Доступ к атрибутам в модели DOM
2.20. Получение всех атрибутов в виде коллекции
2.21. Получение единичного узла атрибута
2.22. Считывание объявлений сущностей и ссылок на сущности в DOM
2.23. Сохраняемые ссылки на сущности
2.24. Разворачиваемые и не сохраняемые ссылки на сущности
2.25. Создание новых узлов в модели DOM
2.26. Создание новых атрибутов для элементов в модели DOM
2.29. Проверка имен XML-элементов и атрибутов при создании новых узлов
2.30. Создание новых ссылок на сущности
2.32. Копирование существующих узлов
2.33. Копирование существующих узлов из одного документа в другой
2.34. Копирование фрагментов документа
2.35. Удаление узлов, содержимого и значений из XML-документа
2.36. Изменение узлов, содержимого и значений в XML-документе
2.37. Проверка XML-документа в DOM
2.38. Проверка XML-документа в DOM
2.39. Обработка ошибок проверки и предупреждений
2.40. Сохранение и запись документа
2.42. Запись содержимого документа с помощью свойства OuterXml
3.Задание на лабораторную работу
4. Ход работы (порядок выполнения работы)
2. Общие положения (теоретические сведения)
3. Задание на лабораторную работу
4. Ход работы (порядок выполнения работы)
2. Общие положения (теоретические сведения)
4. Ход работы (порядок выполнения работы)
2. Общие положения (теоретические сведения)
3.5. Эскизы в документах Деталей
3.6. Взаимодействие с пользователем
3 Задание на работу (рабочее задание)
2.41. Запись XmlDeclaration
XML-декларацию создают члены XmlDocument и элементы XmlDeclaration классов OuterXml, InnerXml, метод WriteTo, а также методы XmlDocument и Save класса WriteContentTo.
Для свойств XmlDocument методов OuterXml, InnerXml, а также методов Save, WriteTo и WriteContentTo кодировка, записываемая в XML-декларацию, берется из узла XmlDeclaration. Если узел XmlDeclaration отсутствует, то XmlDeclaration не записывается. Если в узле XmlDeclaration нет кодировки, то кодировка не записывается в XML-декларацию.
Методы XmlDocument.Save и XmlDocument.Save всегда записывают XmlDeclaration. Они получают кодировку из модуля, в который производится запись. То есть, кодовое значение модуля записи переопределяет кодировку в документе и в XmlDeclaration. Например, приведенный ниже код не записывает кодировку в XML-декларацию, находящуюся в выходном файле out.xml.
C#
XmlDocument doc = new XmlDocument();
XmlTextWriter tw = new XmlTextWriter("out.xml", null);
doc.Load("text.xml");
doc.Save(tw);
Для метода Save XML-декларация записывается с помощью метода WriteStartDocument класса XmlWriter. Поэтому при перезаписи метода WriteStartDocument изменяется способ записи начала документа.
Если для элементов XmlDeclaration в OuterXml, WriteTo и InnerXml не установлено свойство Encoding, то кодировка не записывается. В противном случае кодировка, записанная в XML-декларацию, не отличается от кодировки в свойстве Encoding.
2.42. Запись содержимого документа с помощью свойства OuterXml
Свойство OuterXml является расширением Майкрософт для стандартов объектной модели DOM XML-документа консорциума W3C. Свойство OuterXml позволяет получить разметку как полного XML-документа, так и единичного узла вместе с его дочерними узлами. Свойство OuterXml возвращает разметку, предоставляющую заданный узел и все его дочерние узлы.
В приведенном ниже образце кода показано сохранение документа целиком в виде строки.
C#
XmlDocument mydoc = new XmlDocument();
// Perform application needs here, like mydoc.Load("myfile");
// Now save the entire document to a string variable called "xml".
string xml = mydoc.OuterXml;
В следующем образце кода показано, как сохранить только отдельный элемент документа.
C#
// For the content of the Document Element only.
string xml = mydoc.DocumentElement.OuterXml;
Однако если требуется содержимое дочерних узлов, можно использовать свойство InnerText.
3.Задание на лабораторную работу
-
Изучить конструкции языка XML, способы описания структуры документа средствами DTD, описания схемы документа на языке XSD. Изучить способы обработки документов XML. -
Написать для заданной предметной области XML документ. -
Описать структуру документа средствами DTD. -
Описать схему документа на языке XSD -
Преобразовать документ с помощью DOM (необходимо продемонстрировать добавление, удаление, копирование узлов, добавление и удаление атрибутов, проверку документа)
Предметная область выбирается по варианту
-
заработная плата на предприятии -
себестоимость изделий -
план производства -
успеваемость студентов -
выявление брака на производстве -
продажи товара -
статистика заболеваемости -
публикационная активность -
прием в университет -
оценка эффективности рекламы -
распределение заказов по курьерам -
планирование запасов -
учет расходов -
выбор поставщика -
анализ популяции -
оценка урожайности -
исследование сезонности продаж -
планирование ремонта -
авиаперелеты -
расчет кредита -
спортивные соревнования -
учет электроэнергии -
анализ климата -
поликлиника -
ресторан -
планирование маршрута -
анализ социальной активности -
кинотеатр -
ветклиника -
учет городского населения
4. Ход работы (порядок выполнения работы)
1) Ознакомится теоретической справкой.
2) Разработать ПО для реализации задания.
3) Оформить отчет.
4) Защитить работу преподавателю.
5. Содержание отчета
1) Титульный лист
2) Задание
3) Описание предметной области.
4) Описание XML документа для этой области.
5) Описание структуры документа средствами DTD.
6) Описание схемы документа на языке XSD
7) Описание методов для преобразований XML документа.
8) Скриншоты с демонстрацией работы программы.
9) Выводы по работе
10) Список используемой литературы
11) Приложение – текст документов и программы.
Лабораторная работа № 4
Разработка программных продуктов для двухмерного моделирования с использованием встроенных языков среды САПР
1. Цель и задачи работы
Научиться реализовывать макросы САПР в среде КОМПАС-Макро с использованием языка Python для двухмерного проектирования.
Задачи работы:
-
Изучить задание. -
Освоить работу с КОМПАС-Макро. -
Освоить основы языка Python.
2. Общие положения (теоретические сведения)
Изучим работу библиотеки Компас-МАКРО. Для начала разберемся, для чего вообще нужна эта библиотека. Компас-МАКРО предоставляет доступ к интерфейсу API Компас, то есть ко всем функциям, которыми строятся объекты в этой САПР. Возможностей этой библиотеки хватит, чтобы построить объект любой сложности: есть доступ как к базовым операциям – выдавливание, вырезание, копирование объекта по массиву, так и к операции лофтинг. Для каждой из операций есть множество опций.
Компас-МАКРО входит в стандартный комплект поставки системы, начиная с версии 9 и во всех версиях «плюс», начиная с 7.
Устанавливать библиотеку надо либо при начальной установке Компас, либо позже, добавив компонент. Она находится в разделе «Прочие»:
Установив Компас-МАКРО, мы получаем доступ к API-функциям.
Перед нами стоит задача создать специализированную САПР. Иными словами – написать расширение САПР на основе Компас. Система позволяет сделать это двумя способами. Первый способ – написать программу-скрипт, где подробно описываются действия, построения объекта на основе примитивов. Здесь у нас полный контроль всех действий. Этот метод мы будем использовать. И второй – просто записать все выполненные действия в макрос. Минус такого подхода – неуниверсальность. Скрипт будет делать всегда одно и то же. То есть будут отсутствовать изменяемые параметры. Интерес пропадает. Конечно, программу можно потом будет подправить вручную, добавить переменные, обеспечить ввод данных. Это неплохой способ изучать возможности библиотеки, наглядно увидеть реализацию той или иной операции. Но для этого нужно знать, устройство таких конструкций.
Именно поэтому выбран первый метод.
Итак, приступим. Чтобы продемонстрировать работу с библиотекой Компас-МАКРО, напишем скрипт, на вход которого будут подаваться параметры, а на выходе будет строиться двухмерный чертеж в Компас.
3.1. Запись макроса
Возможно два способа создания макросов: вручную на языке Python или путем записи действий пользователя и затем редактирования некоторых параметров макроса.
Чтобы записать Макрос, надо через библиотеку Компас Макро создать макрос. Выбрать – начать запись. Далее создать требуемый чертеж. Затем остановить запись. После этого можно будет посмотреть и отредактировать макрос.
Кроме того, макрос может не только выполнять построения, но и анализировать уже существующие чертежи.
Посмотрим, что мы можем реализовать в макросе.
# -*- coding: utf-8 -*-
#|6-1
# Подключим python
import pythoncom
from win32com.client import Dispatch, gencache
import LDefin2D
import MiscellaneousHelpers as MH
# Подключим константы API Компас
kompas6_constants = gencache.EnsureModule("{75C9F5D0-B5B8-4526-8681-9903C567D2ED}", 0, 1, 0).constants
kompas6_constants_3d = gencache.EnsureModule("{2CAF168C-7961-4B90-9DA2-701419BEEFE3}", 0, 1, 0).constants
# Подключим описание интерфейсов API5
kompas6_api5_module = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
kompas_object = kompas6_api5_module.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(kompas6_api5_module.KompasObject.CLSID, pythoncom.IID_IDispatch))
MH.iKompasObject = kompas_object
# Подключим описание интерфейсов API7
kompas_api7_module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
application = kompas_api7_module.IApplication(Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(kompas_api7_module.IApplication.CLSID, pythoncom.IID_IDispatch))
MH.iApplication = application
Documents = application.Documents
# Получим активный документ
kompas_document = application.ActiveDocument
kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_document)
iDocument2D = kompas_object.ActiveDocument2D()
# Посчитаем количество листов каждого из формата
def amount_sheet(doc7):
sheets = {"A0": 0, "A1": 0, "A2": 0, "A3": 0, "A4": 0, "A5": 0}
for sheet in range(doc7.LayoutSheets.Count): format = doc7.LayoutSheets.Item(sheet).Format
# sheet - номер листа, отсчёт начинается от 0 sheets["A" + str(format.Format)] += 1 * format.FormatMultiplicity return sheets
# Прочитаем масштаб из штампа, ячейка №6
def stamp_scale(doc7):
stamp = doc7.LayoutSheets.Item(0).Stamp
# Item(0) указывает на штамп первого листа
return stamp.Text(6).Str
# Прочитаем основную надпись чертежа
def stamp(doc7):
for sheet in range(doc7.LayoutSheets.Count):
style_filename = os.path.basename(doc7.LayoutSheets.Item(sheet).LayoutLibraryFileName)
style_number = int(doc7.LayoutSheets.Item(sheet).LayoutStyleNumber)
if style_filename in ['graphic.lyt', 'Graphic.lyt'] and style_number == 1:
stamp = doc7.LayoutSheets.Item(sheet).Stamp