Файл: Методические указания по выполнению лабораторных работ по дисциплине (модулю) Лингвистическое и программное обеспечение автоматизированных систем.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 603
Скачиваний: 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 Задание на работу (рабочее задание)
Появится новый эскиз:
Цель в данном случае - повернуть круг вокруг оси, образованной линией эскиза, таким образом формируя форму тора. Следующим шагом будет формирование профиля из эскиза круга. Обратите внимание, что метод AddForSolid используется снова. Единственный непрерывный замкнутый контур в эскизе - это круг, который является единственным объектом, который будет использоваться в результирующем профиле.
Dim oProfile As Profile Set oProfile = oSketch.Profiles.AddForSolid |
Единственный оставшийся шаг - добавить RevolveFeature в коллекцию RevolveFeatures. Здесь используется метод AddFull, указывающий, что элемент вращения должен быть сформирован поворотом на 360 градусов. Альтернативой является метод AddByAngle. Линия эскиза используется в качестве оси вращения.
Dim oRevFeature As RevolveFeature Set oRevFeature = oPartDoc.ComponentDefinition.Features.RevolveFeatures.AddFull _ (oProfile, oLine, kJoinOperation) oApp.ActiveView.Fit |
Этот пример кода RevolveFeature приводит к появлению трехмерного твердого тела, как показано ниже:
3.5.5Рабочие элементы
Пользователю Autodesk Inventor часто необходимо размещать элементы в трехмерном пространстве или манипулировать ими. Эти элементы могут быть связаны с существующей геометрией и часто являются результатом некоторых потенциально сложных выводов с поверхности или плоскости. Если существующей геометрии модели недостаточно для обнаружения новых элементов, требуется некоторая вспомогательная геометрия для определения этого предполагаемого местоположения. Это может быть как простое деление линии, так и построение в виде эскиза, состоящее из точек, линий и плоскостей. Autodesk Inventor предоставляет эту абстрактную конструкционную геометрию в виде рабочих элементов, доступных как через пользовательский интерфейс, так и через API. Рабочие элементы Autodesk Inventor предоставляют богатый набор инструментов для построения модели, включая возможность ограничивать рабочие элементы и проецировать рабочие элементы на эскизы.
Пользовательский интерфейс обеспечивает доступ к рабочим плоскостям, рабочим осям и рабочим точкам.
3.5.6Диаграмма объектной модели рабочих элементов
Многие методы API Autodesk Inventor для размещения эскизов и элементов принимают объекты рабочих элементов в качестве входных аргументов. Например, метод Add программы SketchSplines3D принимает объекты WorkPoint для определения контрольных точек сплайна. Однако обычно вспомогательная геометрия проецируется на эскиз, чтобы использовать ее при создании элементов. Характер рабочих функций, создаваемых через пользовательский интерфейс, означает, что они могут быть встроенными или вложенными. API не поддерживает встроенные рабочие функции.
Примечание. Чтобы спроецировать вспомогательную геометрию рабочего элемента на эскиз, используйте метод AddByProjectingEntity объекта эскиза. Этот метод принимает в качестве аргументов объекты рабочих элементов. |
Рабочая точка
В следующем примере показан один из способов создания фиксированного объекта WorkPoint с помощью метода AddFixed. Обратите внимание на использование вспомогательной геометрии для создания 3D-точки, а затем назначение этой точке координаты X Y Z 2, 3, 4 перед добавлением WorkPoint в коллекцию WorkPoints.
Dim oPartDoc As PartDocument Set oPartDoc = ThisApplication.ActiveDocument Dim oPartCompDef As PartComponentDefinition Set oPartCompDef = oPartDoc.ComponentDefinition Dim oTrans As TransientGeometry Set oTrans = ThisApplication.TransientGeometry Dim oPnt As Point Set oPnt = oTrans.CreatePoint(2, 3, 4) Dim oWorkPoint1 As WorkPoint Set oWorkPoint1 = oPartCompDef.WorkPoints.AddFixed(oPnt, False) |
Рабочая ось
Следующий код создает WorkAxis и добавляет его в коллекцию WorkAxes. Используется метод AddByTwoPoints, поэтому другая рабочая точка определяется со значениями X Y Z 0, 0, 0. Таким образом, рабочая ось будет определяться двумя точками; ранее созданная рабочая точка с координатами 2, 3, 4 и новая с координатами 0, 0, 0.
Dim oWorkPoint2 As WorkPoint Set oPnt = oTrans.CreatePoint(0, 0, 0) Set oWorkPoint2 = oPartCompDef.WorkPoints.AddFixed(oPnt, False) Dim oWorkAxis As WorkAxis Set oWorkAxis = oPartCompDef.WorkAxes.AddByTwoPoints(oWorkPoint1, oWorkPoint2, False) |
Рабочая плоскость
Существует несколько различных методов создания плоскостей:
WorkPlanes.AddByLineAndTangent (Line As Object, Face As Face, ProximityPoint As Point, [Construction] As Boolean)
WorkPlanes.AddByLinePlaneAndAngle (Line As Object, Plane As Object, Angle As Variant, [Construction] As Boolean)
WorkPlanes.AddByNormalToCurve (CurveEntity As Object, Point As Object, [Construction] As Boolean)
WorkPlanes.AddByPlaneAndOffset (Plane As Object, Offset As Variant, [Construction] As Boolean)
WorkPlanes.AddByPlaneAndPoint (Plane As Object, Point As Object, [Construction] As Boolean)
WorkPlanes.AddByPlaneAndTangent (Plane As Object, Face As Face, ProximityPoint As Point, [Construction] As Boolean)
WorkPlanes.AddByPointAndTangent (Point As Object, Face As Face, [Construction] As Boolean)
WorkPlanes.AddByThreePoints (Point1 As Object, Point2 As Object, Point3 As Object, [Construction] As Boolean)
WorkPlanes.AddByTorusMidPlane (Face As Face, [Construction] As Boolean)
WorkPlanes.AddByTwoLines (Line1 As Object, Line2 As Object, [Construction] As Boolean)
WorkPlanes.AddByTwoPlanes (Plane1 As Object, Plane2 As Object, [QuadrantPoint] As Variant, [Construction] As Boolean)
WorkPlanes.AddFixed (OriginPoint As Point, XAxis As UnitVector, YAxis As UnitVector, [Construction] As Boolean)
В следующем примере используется метод построения рабочей плоскости через ось под углом к другой плоскости. Обратите внимание, что один из предопределенных объектов WorkPlane, плоскость Y-Z, используется в качестве базовой плоскости, от которой измеряется угол 45 градусов.
Dim oWorkPlane As WorkPlane Set oWorkPlane = oPartCompDef.WorkPlanes.AddByLinePlaneAndAngle _ (oWorkAxis, oPartCompDef.WorkPlanes.Item("YZ Plane"), 45, False) oWorkPlane.Name = "MyFirstWorkPlane" |
Последняя строка кода называет только что созданный объект WorkPlane MyFirstWorkPlane. Другой код может использовать это имя для ссылки на эту рабочую плоскость. Новое имя также отображается в браузере Autodesk Inventor при условии, что рабочий элемент не является вспомогательной геометрией приложения. Он отображается следующим образом:
3.5.7Детали сборки
Моделирование в Autodesk Inventor - это больше, чем создание элементов детали из профилей эскиза. Обычно создается библиотека файлов деталей, и эти детали собираются вместе для создания составной модели - сборки. Сами сборки можно рассматривать как дискретные компоненты, как подсборки в более крупной сборке. Autodesk Inventor имеет обширный пользовательский интерфейс для работы с деталями в среде сборки, включая инструменты позиционирования и ограничения сборки для определения взаимосвязей между деталями.
Вхождения и определения компонентов на уровне сборки - Схема объектной модели
API Autodesk Inventor использует концепции определений и вхождений компонентов. Они в некоторой степени аналогичны определениям и вставкам блоков AutoCAD. Определение компонента также является базовым классом для других типов определения компонентов - PartComponentDefinition, AssemblyComponentDefinition, SheetMetalComponentDefinition, WeldmentComponentDefinition и WeldsComponentDefinition. Они используются только при доступе к функциям, специфичным для этих типов.
Чтобы вставить детали в сборку, добавьте вхождение в коллекцию ComponentOccurrences объекта AssemblyComponentDefinition документа сборки. Коллекция ComponentOccurrences поддерживает несколько методов добавления вхождения - по файлу (метод Add) или путем вставки другого экземпляра существующего определения (метод AddByComponentDefinition). Он также поддерживает параметрические детали и добавление через iMates.
Сборка деталей также требует средств для определения их положения и определения того, как детали подходят друг к другу. Описанные ранее методы добавления поддерживают матрицы, позволяя размещать ComponentOccurrences в документе сборки. Однако обычно удобнее определять ограничения сборки, чтобы указать, как детали должны располагаться относительно друг друга. Таким образом, создание сборки деталей с помощью API - это двухэтапный процесс, поскольку он осуществляется с помощью пользовательского интерфейса. Сначала соберите детали, а затем соедините их вместе. В следующем примере кода демонстрируются оба процесса.
В этом коде предполагается, что файл детали с именем цилиндр.ipt существует в каталоге C: \ Temp. Перед запуском этого кода используйте Autodesk Inventor для создания и сохранения этого файла детали (нарисованный круг, выдавленный в форме цилиндра).
Сначала создайте новый документ сборки:
Dim oApp As Inventor.Application Set oApp = ThisApplication Dim oAssyDoc As AssemblyDocument Set oAssyDoc = oApp.Documents.Add(kAssemblyDocumentObject, _ oApp.GetTemplateFile(kAssemblyDocumentObject)) |
Для вставки вхождений компонентов требуется матрица, даже если она ничего не делает, поэтому создайте объект матрицы.
Dim oPositionMatrix As Matrix Set oPositionMatrix = oApp.TransientGeometry.CreateMatrix |
Теперь создайте экземпляр компонента, вызвав метод Add коллекции ComponentOccurrences со ссылкой на файл детали, ранее созданный вручную в Autodesk Inventor.
Dim sFileName As String sFileName = "c:\temp\cylinder.ipt" Dim oCylinder1 As ComponentOccurrence Set oCylinder1 = oAssyDoc.ComponentDefinition.Occurrences.Add(sFileName, oPositionMatrix) |
Этот код создает первое вхождение детали цилиндра в сборку. Теперь добавьте еще один, но на этот раз переместите его в сторону. В противном случае он занимает то же место, что и первый, и не виден. Используйте матричный объект, чтобы немного отрегулировать его положение вставки. Здесь матрица также меняет направление цилиндра на противоположное.
Dim oTrans As Vector Set oTrans = oApp.TransientGeometry.CreateVector(2, 0, -1) oPositionMatrix.SetTranslation oTrans |
Dim oCylinder2 As ComponentOccurrence Set oCylinder2 = oAssyDoc.ComponentDefinition.Occurrences.AddByComponentDefinition _ (oCylinder1.Definition, oPositionMatrix) |
В Autodesk Inventor приведенный выше код приводит к появлению двух цилиндров в сборке, примерно как на следующем рисунке.
Цель выровнять и состыковать эти цилиндры вместе, а Autodesk Inventor должен обеспечить их неизменность, несмотря на будущие пересчеты модели сборки. Для этого можно использовать зависимости сборки, почти так же, как геометрические зависимости могут определять форму эскиза. Примените зависимости сопряжения, чтобы удалить две степени свободы, выровняв цилиндры друг относительно друга, а затем сопрягая концы цилиндров вместе. AssemblyComponentDefinition поддерживает коллекцию ограничений для применения к экземплярам компонентов, поэтому добавьте ограничения сопряжения в эту коллекцию. Сначала получите определение компонента сборки.
Dim oAxisDef As AssemblyComponentDefinition Set oAxisDef = oApp.ActiveDocument.ComponentDefinition |
Первое ограничение будет применено между кривыми гранями двух цилиндров, чтобы выровнять их. Один из способов получить эти грани - перебрать все грани, составляющие тело поверхности каждого вхождения компонента, с проверкой наличия цилиндрической поверхности.
Dim oCylAxis1 As Face Dim oCylAxis2 As Face Dim oFace As Face For Each oFace In oCylinder1.SurfaceBodies(1).Faces If oFace.SurfaceType = kCylinderSurface Then Set oCylAxis1 = oFace End If Next For Each oFace In oCylinder2.SurfaceBodies(1).Faces If oFace.SurfaceType = kCylinderSurface Then Set oCylAxis2 = oFace End If Next |
Итак, теперь oCylAxis1 и oCylAxis2 содержат цилиндрические грани и могут быть переданы методу AddMateConstraint коллекции AssemblyConstraints определения компонента сборки.
Dim oConstr As AssemblyConstraint Set oConstr = oAxisDef.Constraints.AddMateConstraint(oCylAxis1, oCylAxis2, 0, kInferredLine, kInferredLine) |
Результат применения этого ограничения показан на следующем рисунке. Два цилиндра теперь занимают одно место и неотличимы друг от друга. На торцевых поверхностях требуется еще одно ограничение, чтобы два цилиндра соприкасались друг с другом, образуя один длинный цилиндр.
Снова выполните итерацию по граням тел поверхности, на этот раз ища плоские грани. В этом случае можно безопасно выбрать грань на одном конце каждого цилиндра, поскольку положение второго цилиндра было изменено его матрицей вставки (два экземпляра компонента цилиндра были вставлены в противоположных направлениях).