Файл: Методические указания по выполнению лабораторных работ по дисциплине (модулю) Лингвистическое и программное обеспечение автоматизированных систем.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 612

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

1.Цель и задачи работы

2.Общие положения (теоретические сведения)

2.1. Принцип рекурсии в правилах грамматики

2.2. Запись правил грамматик с использованием метасимволов

2.3. Запись правил грамматик в графическом виде

3. Задание на лабораторную работу

4. Ход работы (порядок выполнения работы)

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

1.Цель и задачи работы

2.Общие положения (теоретические сведения)

2.1. Разработка лексического анализатора

2.2. Разработка синтаксического анализатора

2.3. Пример построения простого синтаксического анализатора

2.4. Анализаторы для сложных рекурсивных грамматик

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

1. Цель и задачи работы

2. Общие положения (теоретические сведения)

2.5. Логическая структура XML-документа

2.8. Описание структуры XML-документов

2.9. Язык XML Sсhema Definition (XSD)

2.10. Программная обработка XML-документов

2.11. Обработка XML-данных с использованием модели DOM

2.12. Входные данные

2.14. Сопоставление объектной иерархии с XML-данными

2.15. Создание 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.27. Атрибуты по умолчанию

2.28. Дочерние узлы атрибута

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.41. Запись XmlDeclaration

2.42. Запись содержимого документа с помощью свойства OuterXml

3.Задание на лабораторную работу

4. Ход работы (порядок выполнения работы)

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

1. Цель и задачи работы

2. Общие положения (теоретические сведения)

3.1. Запись макроса

3.2. Организация ввода данных

3.3. Вывод данных

3. Задание на лабораторную работу

4. Ход работы (порядок выполнения работы)

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

1. Цель и задачи работы

2. Общие положения (теоретические сведения)

Организация ввода данных

Вывод данных

Заключение

3. Задание на работу

4. Ход работы (порядок выполнения работы)

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

1. Цель и задачи работы

2. Общие положения (теоретические сведения)

3.4. Эскизы

3.5. Эскизы в документах Деталей

3.6. Взаимодействие с пользователем

3.7. Выбор файла

3 Задание на работу (рабочее задание)

4. Ход работы (порядок выполнения работы)

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



FileDescriptor Object

Свойство

Возвращаемый тип

Описание

FullFileName

String

Полный путь к указанному файлу.

ReferencedFile

File object

Указанный файл. Возвращает Null, если ссылка отсутствует (неразрешенная или подавленная).

ReferenceMissing

Boolean

Отсутствует ли ссылка по какой-либо причине и будет ли свойство ReferencedFile возвращать объект File.


DocumentDescriptor Object

Свойство

Возвращаемый тип

Описание

FullDocumentName

String

Полный путь к указанному документу.

ReferencedDocument

Document object

Ссылочный документ. Возвращает Null, если ссылка отсутствует (неразрешенная или подавленная).

ReferenceMissing

Boolean

Отсутствует ли ссылка по какой-либо причине и будет ли свойство ReferencedDocument возвращать объект File.

ReferenceSuppressed

Boolean

Подавляется ли ссылка.



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


Public Sub FileReferenceSample()
Dim oFile As File

Set oFile = ThisApplication.ActiveDocument.File

Call ProcessReferences(oFile)

End Sub
Private Sub ProcessReferences (ByVal oFile As File)

Dim oFileDescriptor As FileDescriptor

For Each oFileDescriptor In oFile.ReferencedFileDescriptors

Debug.Print oFileDescriptor.FullFileName

If Not oFileDescriptor.ReferenceMissing Then

' Т.к. ReferenceMissing вернул False, ReferencedFile вернет File

' Рекурсия, если это не ссылка на внешний файл

If Not oFileDescriptor.ReferencedFileType = kForeignFileType Then
Call ProcessReferences(oFileDescriptor.ReferencedFile)

End If

End If

Next

End Sub





3.4. Эскизы

3.5. Эскизы в документах Деталей


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

Многие программы, которые имеют дело исключительно с эскизами, не захотят создавать эскиз, а вместо этого захотят получить доступ к текущему активному эскизу. В случае, если эскиз неактивен, вам необходимо знать это, чтобы вы могли с ним работать. Определить, активен ли эскиз, можно с помощью свойства ActiveEditObject приложения. Это свойство возвращает объект, который в данный момент активен для редактирования. Это может быть любой из различных типов документов или эскиз. В приведенном ниже примере кода показано, как проверить, активен ли эскиз и установить ссылку на него. Если эскиз неактивен, отображается соответствующее сообщение.

' Определение, активен ли эскиз

If Not TypeOf ThisApplication.ActiveEditObject Is Sketch Then

MsgBox "A sketch must be active."

Exit Sub

End If
' Установить ссылку на активный эскиз

Dim oSketch As Sketch

Set oSketch = ThisApplication.ActiveEditObject


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

Dim oSketch As Sketch

For Each oSketch in oPartDoc.ComponentDefinition.Sketches

Debug.Print "Sketch: " & oSketch.Name

Next


Этот код устанавливает ссылку на эскиз с именем «Sketch2». Если эскиз с именем «Sketch2» не существует в детали, вызов свойства Item завершится ошибкой. Оператор On Error позволяет проверить и обработать эту ошибку.

' Включить перехват ошибок

On Error Resume Next
Dim oSketch As Sketch

Set oSketch in oPartDoc.ComponentDefinition.Sketches.Item("Sketch2")

If Err Then

Err.Clear

MsgBox "A sketch named ""Sketch2"" does not exist."

End If
' Выключить перехват ошибок

On Error Goto 0


Коллекция Sketches поддерживает два метода создания эскиза. Метод «Добавить» работает так же, как и команда «2D-эскиз». То есть вы предоставляете плоский объект (рабочую плоскость или плоскую грань) в качестве входных данных, и создается эскиз. Он использует встроенную логику для определения ориентации эскиза на выбранном объекте. Иногда это приемлемо, но в отличие от конечного пользователя, который работает с системой визуально и может легко видеть и реагировать на ориентацию по умолчанию, вам обычно требуется явный контроль ориентации эскиза. Этот элемент управления предоставляет метод AddWithOrientation.



Рассмотрим пример создания следующей детали.


Деталь состоит из двух элементов выдавливания: одна для создания базового блока, а другая для создания кармана.

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

' Установить ссылку на определение компонента.

Dim oPartCompDef As PartComponentDefinition

Set oPartCompDef = ThisApplication.ActiveDocument.ComponentDefinition
' Создать новый эскиз.

Dim oSketch As Sketch

Set oSketch = oPartCompDef.Sketches.Add(oPartCompDef.WorkPlanes.Item(3))
' Нарисовать прямоугольник.

With ThisApplication.TransientGeometry

Call oSketch.SketchLines.AddAsTwoPointRectangle(_

.CreatePoint2d(0, 0), _

.CreatePoint2d(5, 3))

End With
' Create a profile.

Dim oProfile As Profile

Set oProfile = oSketch.Profiles.AddForSolid
' Создать элемент выдавливания.

Dim oExtrude As ExtrudeFeature

Set oExtrude = oPartCompDef.Features.ExtrudeFeatures.AddByDistanceExtent(_

oProfile, 2, kPositiveExtentDirection, kJoinOperation)


Чтобы создать эскиз для этого элемента, используется метод Sketches.Add. Это метод, который не позволяет контролировать ориентацию. Можно заметить, что предоставленная плоскость ввода является существующей рабочей плоскостью. Первые три рабочие плоскости в коллекции WorkPlanes: плоскости YZ, XZ и XY. (Это тот же порядок, в котором они отображаются в браузере.) Когда эскиз создается с помощью метода Добавить и рабочая плоскость используется в качестве входных данных, эскиз наследует ориентацию и начало координат от рабочей плоскости. В этом случае, поскольку это базовая рабочая плоскость XY, начало координат будет в точке (0,0,0), а направления X и Y эскиза будут в тех же направлениях, что и оси X и Y модели. Результат после создания этого элемента показан ниже, а использованный эскиз выделен.



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



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

' Создание эскиз на торцевой грани, используя существующую

' рабочую ось и рабочую точку.

Set oSketch = oPartCompDef.Sketches.AddWithOrientation(_

oExtrude.EndFaces.Item(1), _

oPartCompDef.WorkAxes.Item(1), True, True, _

oPartCompDef.WorkPoints.Item(1), False)
' Рисуем прямоугольник.

With ThisApplication.TransientGeometry

Call oSketch.SketchLines.AddAsTwoPointRectangle(.CreatePoint2d(1, 1),

.CreatePoint2d(4, 2))

End With
' Создаем профиль.

Set oProfile = oSketch.Profiles.AddForSolid
' Создаем элемент выдавливания.

Set oExtrude = oPartCompDef.Features.ExtrudeFeatures.AddByDistanceExtent(_

oProfile, 0.75, kNegativeExtentDirection, kCutOperation)



Интересной частью этого примера кода является вызов метода AddWithOrientation. Он позволяет создать эскиз и полностью определить его ориентацию. Первый аргумент - это поверхность, которая получена непосредственно из предыдущей функции. Второй аргумент используется для определения оси X. В этом случае в качестве входных данных используется рабочая ось X системы. Третий аргумент указывает, должно ли направление оси X эскиза совпадать с направлением объекта, указанного во втором аргументе. Четвертый аргумент указывает, является ли определяемая ось осью X или Y. Пятый аргумент определяет исходную точку эскиза. В этом примере вводится исходная рабочая точка системы. Последний аргумент определяет, должны ли края входной грани копироваться на эскиз (как это делается при создании эскиза в интерактивном режиме). Явно определив эскиз, теперь можно определить правильные координаты для ввода, чтобы создать прямоугольник, чтобы он был правильно ориентирован, как показано ниже.


Чтобы помочь в диагностике проблем, при которых объекты эскиза не отображаются там, где ожидалось, вы можете просмотреть исходную точку и ориентацию существующего эскиза, редактируя эскиз в интерактивном режиме. Если настройка отображения для «Индикатора системы координат» включена на вкладке «Эскиз» диалогового окна «Параметры приложения», при редактировании эскиза будет отображаться триада. Триада расположена в исходной точке эскиза и ориентирована так, чтобы показать оси X и Y эскиза.

Отдельно отметим здесь некоторые команды для построения элементов чертежа.

Точки

Задаются командой TransientGeometry.CreatePoint2d([XCoord] As Double, [YCoord] As Double)

Линии

SketchLines.AddByTwoPoints(StartPoint As Object, EndPoint As Object) – отрезок по двум точкам

Пример

' Установить ссылку на коллекцию вспомогательной геометрии.

Dim oTransGeom As TransientGeometry

Set oTransGeom = ThisApplication.TransientGeometry
' Создайте новую транзакцию, чтобы обернуть построение трех

' линий в одну.

Dim oTrans As Transaction

Set oTrans = ThisApplication.TransactionManager.StartTransaction(_

ThisApplication.ActiveDocument, _

"Create Triangle Sample")
' Создайте первую линию треугольника. Здесь используются две

' вспомогательные точки в качестве входных параметров для

' задания координат концов отрезка.

Dim oLines(1 To 3) As SketchLine


Set oLines(1) = oSketch.SketchLines.AddByTwoPoints(oTransGeom.CreatePoint2d(0, 0), _

oTransGeom.CreatePoint2d(4, 0))
'Создайте линию эскиза, которая соединяется с точкой эскиза,

'с которой соединяется конечная точка предыдущей линии.

'Это автоматически создаст ограничение для привязки новой

'линии к точке эскиза, с которой также связана предыдущая линия.

'Это приведет к соединению двух линий, поскольку они обе

'привязаны к одной и той же точке эскиза.

Set oLines(2) = oSketch.SketchLines.AddByTwoPoints(oLines(1).EndSketchPoint, _

oTransGeom.CreatePoint2d(2, 3))
'Создайте третью линию и соедините ее с начальной точкой

'первой линии и конечной точкой второй линии.

'В результате получится соединенный треугольник.

Set oLines(3) = oSketch.SketchLines.AddByTwoPoints(oLines(2).EndSketchPoint, _

oLines(1).StartSketchPoint)
' Завершение транзакции для треугольника.

oTrans.End
Окружность

TransientGeometry.CreateCircle(Center As Point, Normal As UnitVector, Radius As Double) – создает окружность по центру, нормали и радиусу

TransientGeometry.CreateCircle2dByThreePoints(PointOne As Point2d, PointTwo As Point2d, PointThree As Point2d) - создает окружность по трем точкам.

Аналогично через объекты SketchCircles

SketchCircles.AddByCenterRadius(CenterPoint As Object, Radius As Double)

SketchCircles.AddByThreePoints(PointOne As Point2d, PointTwo As Point2d, PointThree As Point2d)

Эллипс

Эллипс задается центром, вектором, определяющим направление главной оси и двумя радиусами или их отношением.

TransientGeometry.CreateEllipseFull2d(Center As Point2d, MajorAxisVector As Vector2d, MinorMajorRatio As Double)

SketchEllipses.Add(CenterPoint As Object, MajorAxisVector As UnitVector2d, MajorRadius As Double, MinorRadius As Double)

Дуга

TransientGeometry.CreateArc2d(Center As Point2d, Radius As Double, StartAngle As Double, SweepAngle As Double) – создает дугу по центру, радиусу, начальному углу и углу развертки дуги против часовой стрелки.

TransientGeometry.CreateArc2dByThreePoints(PointOne As Point2d, PointTwo As Point2d, PointThree As Point2d) – создает дугу по трем точкам.

Аналогично через объект SketchArcs

SketchArcs.AddByCenterStartSweepAngle(CenterPoint As Object, Radius As Double, StartAngle As Double, SweepAngle As Double)

SketchArcs.AddByThreePoints(StartPoint As Object, MidPoint As Point2d, EndPoint As Object)

Дополнительно:

SketchArcs.AddByCenterStartEndPoint(CenterPoint As Object, StartPoint As Object, EndPoint As Object, [CounterClockwise] As Boolean) – создает дугу по центру радиусу, начальной и конечной точке и направлению.
Прямоугольник

SketchLines.AddAsThreePointCenteredRectangle(CenterPoint As Object, EdgePoint As Object, WidthPoint As Point2d) – создает прямоугольник по центру, точке на грани и точке, определяющей ширину прямоугольника.

SketchLines.AddAsThreePointRectangle (BasePointOne As Object, BasePointTwo As Object, HeightPoint As Point2d) - создает прямоугольник по трем точкам.

SketchLines.AddAsTwoPointCenteredRectangle(CenterPoint As Object, CornerPoint As Object) – создает прямоугольник по центру и точке.

SketchLines.AddAsTwoPointRectangle(CornerPointOne As Object, CornerPointTwo As Object) – создает прямоугольник по двум диагональным точкамю