Главная страница
Навигация по странице:

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

  • Прямоугольник

  • Примечание.

  • Рабочая точка

  • Рабочая плоскость

  • МУ_ЛР_ЛиПОАС. Методические указания по выполнению лабораторных работ по дисциплине (модулю) Лингвистическое и программное обеспечение автоматизированных систем


    Скачать 2.76 Mb.
    НазваниеМетодические указания по выполнению лабораторных работ по дисциплине (модулю) Лингвистическое и программное обеспечение автоматизированных систем
    Дата12.04.2023
    Размер2.76 Mb.
    Формат файлаdoc
    Имя файлаМУ_ЛР_ЛиПОАС.doc
    ТипМетодические указания
    #1057976
    страница31 из 32
    1   ...   24   25   26   27   28   29   30   31   32

    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) – создает прямоугольник по двум диагональным точкамю

    SketchLines.AddAsPolygon(NumberOfSides As Long, CenterPoint As Object, CircumferencePoint As Object, Inscribed As Boolean) – многоугольник по количеству сторон, центру, объекту, определяющему точку на окружности, вписывающую или описывающую многоугольник и параметр определяет вписанная или описанная окружность.

    Профили

    Еще одна важная концепция, которая явно не отображается в пользовательском интерфейсе, - это концепция профилей. По сути, эскиз - это просто контейнер для 2D-объектов и связанных с ними ограничений. Сам эскиз не определяет связанных наборов объектов, которые могут использоваться элементом для определения его формы. Эта информация определяется профилями. Вы можете создать следующий эскиз в Autodesk Inventor.



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



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


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



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

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



    Профиль, полученный из feature, содержит два объекта ProfilePath, которые выделены на следующем рисунке. Каждый объект ProfilePath возвращает список объектов ProfileEntity в порядке их соединения друг с другом. ProfilePath также сообщает вам, открыт ли путь или закрыт, и добавляет ли он или удаляет ли материал из профиля.



    Объекты ProfileEntity предоставляют информацию о каждой части ProfilePath. Объекты ProfileEntity ориентированы таким образом, что они связаны друг с другом "голова к хвосту". Объекты ProfileEntity не существуют в Autodesk Inventor графически, а являются просто промежуточным этапом между эскизом и элементом. ProfileEntity возвращает базовый объект эскиза и две точки эскиза, определяющие его начало и конец. Базовый объект эскиза во многих случаях будет отличаться от объекта профиля.

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



    3.5.1Элементы


    Термин feature может ввести в заблуждение тех, кто плохо знаком с параметрическим моделированием. В просторечии это может означать какую-то отличительную характеристику. В параметрическом 3D-моделировании это относится к каждому из математических процессов, используемых для построения модели, отсюда и термин «моделирование на основе элементов».

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

    Типичный пример элемента - выдавливание. Представьте себе нарисованный круг. Это 2D без толщины. Примените элемент выдавливания к этой окружности (фактически к профилю, основанному на окружности), укажите толщину выдавливания, и будет создана 3D-модель. В зависимости от толщины он может выглядеть тонким, как монета, или длинным, как цилиндр. Можно применить дополнительные элементы, например, скругление.

    3.5.2Диаграмма модели объектов Feature




    Ниже приведен список текущих объектов функций API. Не все доступны одновременно - это зависит от типа документа или среды. Например, объект FlangeFeature имеет значение только в контексте детали из листового металла.



    BendFeature

    BoundaryPatchFeature

    ChamferFeature

    CircularPatternFeature

    CoilFeature

    ContourFlangeFeature

    CornerChamferFeature

    CornerFeature

    CornerRoundFeature

    CutFeature

    DecalFeature

    DeleteFaceFeature

    EmbossFeature

    ExtrudeFeature

    FaceDraftFeature

    FaceFeature

    FeatureBasedOccurrencePattern

    FeaturePatternElement

    FeaturePatternElements

    FilletFeature

    FlangeFeature

    FoldFeature

    HemFeature

    HoleFeature

    KnitFeature

    LoftFeature

    MirrorFeature

    MoveFaceFeature

    NonParametricBaseFeature

    PartFeature

    PartFeatureExtent

    PunchToolFeature

    RectangularPatternFeature

    ReferenceFeature

    ReplaceFaceFeature

    RevolveFeature

    RibFeature

    ShellFeature

    SplitFeature

    SweepFeature

    ThickenFeature

    ThreadFeature

    3.5.3

    3.5.4Создание элемента выдавливания с нуля


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

    Примечание. Для вытягивания эскиза через пользовательский интерфейс Autodesk Inventor не требуется создание профиля. Этот шаг скрыт от пользователя. Однако API требует объект Profile (фактически набор объектов ProfilePath) для создания некоторых функций.


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


    Dim oApp As Inventor.Application

    Set oApp = ThisApplication

    Dim oPartDoc As PartDocument

    Set oPartDoc = oApp.Documents.Add(kPartDocumentObject, oApp.GetTemplateFile(kPartDocumentObject))



    Теперь добавьте новый эскиз в коллекцию эскизов определения компонента этого документа. Здесь третий элемент в коллекции WorkPlanes указывает плоскость XY, так что это плоскость для нового эскиза.


    Dim oSketch As PlanarSketch

    Set oSketch = oPartDoc.ComponentDefinition.Sketches.Add(oPartDoc.ComponentDefinition.WorkPlanes.Item(3))


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

    Dim oTG As TransientGeometry

    Set oTG = oApp.TransientGeometry


    Добавьте три точки в коллекцию SketchPoints нового эскиза. Они становятся конечными точками трех линий эскиза, образующих треугольник. Аргумент "False" указывает на то, что эти точки не предназначены для использования в качестве центральных точек отверстия.


    Dim oSkPnts As SketchPoints

    Set oSkPnts = oSketch.SketchPoints

    Call oSkPnts.Add(oTG.CreatePoint2d(0, 0), False)

    Call oSkPnts.Add(oTG.CreatePoint2d(1, 0), False)

    Call oSkPnts.Add(oTG.CreatePoint2d(1, 1), False)


    Когда пользователь рисует линии эскиза через пользовательский интерфейс Autodesk Inventor, точки эскиза не требуются, поскольку они определяются автоматически. Это не относится к API. Точки эскиза необходимы для добавления линий эскиза. Используйте указанные выше точки эскиза, чтобы добавить к эскизу три линии эскиза.


    Dim oLines As SketchLines

    Set oLines = oSketch.SketchLines

    Dim oLine(1 To 3) As SketchLine

    Set oLine(1) = oLines.AddByTwoPoints(oSkPnts(1), oSkPnts(2))

    Set oLine(2) = oLines.AddByTwoPoints(oSkPnts(2), oSkPnts(3))

    Set oLine(3) = oLines.AddByTwoPoints(oSkPnts(3), oSkPnts(1))


    Вышеприведенный код создает новый документ детали, содержащий следующий эскиз:



    Для элементов выдавливания требуется объект профиля, поэтому создайте профиль из этого эскиза. Метод AddForSolid имеет необязательные аргументы (здесь не используются), которые можно использовать для дальнейшего управления ProfilePaths в профиле.


    Dim oProfile As Profile

    Set oProfile = oSketch.Profiles.AddForSolid


    Теперь добавьте ExtrudeFeature в коллекцию Features определения компонента документа. Здесь используется метод AddByDistanceExtent, который требует расстояния для выдавливания - в данном случае 1.0. Другие аргументы также аналогичны пользовательскому интерфейсу, указывая, что выдавливание должно происходить как в положительном, так и в отрицательном направлениях, и что должна быть выполнена логическая операция объединения.


    Dim oExtFeature As ExtrudeFeature

    Set oExtFeature = oPartDoc.ComponentDefinition.Features.ExtrudeFeatures.AddByDistance
    Extent _

    (oProfile, 1.0, kSymmetricExtentDirection, kJoinOperation)

    oApp.ActiveView.Fit



    Код строит следующее трехмерное твердое тело


    В этом примере продемонстрировано простое выдавливание эскиза для формирования трехмерного тела. В следующем примере демонстрируется создание 3D-тела путем вращения эскиза вокруг оси. Снова создайте новый документ детали и создайте несколько точек эскиза:


    Dim oApp As Inventor.Application

    Set oApp = ThisApplication

    Dim oPartDoc As PartDocument

    Set oPartDoc = oApp.Documents.Add(kPartDocumentObject, oApp.GetTemplateFile(kPartDocumentObject))
    Dim oSketch As PlanarSketch

    Set oSketch = oPartDoc.ComponentDefinition.Sketches.Add(oPartDoc.ComponentDefinition.WorkPlanes.Item(3))

    Dim oTG As TransientGeometry

    Set oTG = oApp.TransientGeometry

    Dim oSkPnts As SketchPoints

    Set oSkPnts = oSketch.SketchPoints

    Call oSkPnts.Add(oTG.CreatePoint2d(0, 0), False)

    Call oSkPnts.Add(oTG.CreatePoint2d(1, 1), False)

    Call oSkPnts.Add(oTG.CreatePoint2d(1, 0), False)



    Были созданы три точки эскиза. Используйте две из них, чтобы создать линию эскиза, а третью, чтобы построить окружность эскиза с радиусом 0,5:

    Dim oLines As SketchLines

    Set oLines = oSketch.SketchLines
    Dim oLine As SketchLine

    Set oLine = oLines.AddByTwoPoints(oSkPnts(1), oSkPnts(2))
    Dim oCircs As SketchCircles

    Set oCircs = oSketch.SketchCircles
    Dim oCirc As SketchCircle

    Set oCirc = oCircs.AddByCenterRadius(oSkPnts(3), 0.5)



    Появится новый эскиз:


    Цель в данном случае - повернуть круг вокруг оси, образованной линией эскиза, таким образом формируя форму тора. Следующим шагом будет формирование профиля из эскиза круга. Обратите внимание, что метод 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)


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


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


    Dim oCylFace1 As Face

    Dim oCylFace2 As Face

    For Each oFace In oCylinder1.SurfaceBodies(1).Faces

    If oFace.SurfaceType = kPlaneSurface Then

    Set oCylFace1 = oFace

    End If

    Next

    For Each oFace In oCylinder2.SurfaceBodies(1).Faces

    If oFace.SurfaceType = kPlaneSurface Then

    Set oCylFace2 = oFace

    End If

    Next


    Теперь добавьте ограничение сопряжения для этих двух граней в коллекцию AssemblyConstraints.


    Set oConstr = oAxisDef.Constraints.AddMateConstraint _

    (oCylFace1, oCylFace2, 0, kNoInference, kNoInference)


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



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

    1   ...   24   25   26   27   28   29   30   31   32


    написать администратору сайта