Сопряжения в сборке

Автор Тема: Сопряжения в сборке  (Прочитано 2453 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн ВитяАвтор темы

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Сопряжения в сборке
« : 24-06-2019, 15:52:18 »
Из пользовательского интерфейса при построении совпадения достаточно выбрать цилиндрическую окружность, что бы привязать её ось к другому объекту. В коде же плоские детали сопрягаются, а цилиндрические выдают ошибку. Как мне достать эту ось из цилиндрической FaceProxy, и что это за объект, я просто конструктор и от того не нашел там осей кроме WorkAxis. Очень жду ответа.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сопряжения в сборке
« Ответ #1 : 24-06-2019, 16:12:10 »
Витя,
Приветствую на форуме!
Как минимум приложи свой код, которым ты пытаешься сопрягаешь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВитяАвтор темы

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Re: Сопряжения в сборке
« Ответ #2 : 24-06-2019, 16:36:02 »
Так правильно? Звука нет в данный момент

Код - vb.net [Выбрать]
  1. Private Sub onSelect_Axis(ByVal PreSelectEntity As ObjectsEnumerator, ByVal SelectionDevice As SelectionDeviceEnum,
  2.                               ByVal ModelPosition As Point, ByVal ViewPosition As Point2d, ByVal View As View)
  3.         Dim myobject As Object = oSelelectSetEvents.SelectedEntities.Item(1)
  4.         Select Case TypeName(myobject)
  5.             Case "WorkAxis"
  6.                 MsgBox("Рабочая ось")
  7.             Case "FaceProxy"
  8.               'тут было много попыток получить саму ось(((
  9.  
  10.                 Dim oasmdoc As AssemblyDocument
  11.                 oasmdoc = m_InventorApp.ActiveDocument
  12.                 Dim oMateConstraint As MateConstraint
  13.                 oMateConstraint = oasmdoc.ComponentDefinition.Constraints.AddMateConstraint(myobject,
  14.                                                     oasmdoc.ComponentDefinition.WorkPlanes.Item(2), 0)
  15.             Case Else
  16.                 MsgBox(TypeName(myobject))
  17.         End Select
  18.         Call oUserInterfaceInteractionEvents.Stop()
  19.         RemoveHandler oSelelectSetEvents.OnSelect, AddressOf Me.onSelect_Axis
  20.         RemoveHandler oSelelectSetEvents.OnPreSelect, AddressOf Me.onPreSelect_Axis
  21.         RemoveHandler oUserInterfaceInteractionEvents.OnTerminate, AddressOf Me.oUserInterfaceInteractionEvents_OnTerminate
  22.         oSelelectSetEvents = Nothing
  23.         oUserInterfaceInteractionEvents = Nothing
  24.     End Sub
« Последнее редактирование: 24-06-2019, 16:37:25 от Александр Ривилис »

Оффлайн ВитяАвтор темы

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Re: Сопряжения в сборке
« Ответ #3 : 24-06-2019, 16:37:55 »
Здраствуйте. Извиняюсь, видео сейчас посмотреть не могу. Кусок кода тестовый

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сопряжения в сборке
« Ответ #4 : 24-06-2019, 16:39:17 »
Витя,
Прочитай у меня в подписи о правиле форматирования кода на форуме и не забывай его соблюдать!
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Витя 25-06-2019, 08:14:23

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Сопряжения в сборке
« Ответ #5 : 24-06-2019, 20:34:34 »
Витя,
вот рабочий пример для двух цилиндрических поверхностей
Это пример из хелпа, единственное что я подправил это аргументы по умолчанию заменил на
kInferredLine
в строке
Set oMate = oAsmCompDef.Constraints.AddMateConstraint(oBrepEnt1, oBrepEnt2, 0, kInferredLine, kInferredLine)
т.е. указал что нужно привязываться к цилиндру как по линии.

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


Код - Visual Basic [Выбрать]
  1. Public Sub MateConstraint()
  2.     ' Set a reference to the assembly component definintion.
  3.    Dim oAsmCompDef As AssemblyComponentDefinition
  4.     Set oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition
  5.  
  6.     ' Set a reference to the select set.
  7.    Dim oSelectSet As SelectSet
  8.     Set oSelectSet = ThisApplication.ActiveDocument.SelectSet
  9.  
  10.     ' Validate the correct data is in the select set.
  11.    If oSelectSet.Count <> 2 Then
  12.         MsgBox "You must select the two entities valid for mate."
  13.         Exit Sub
  14.     End If
  15.  
  16.     ' Get the two entities from the select set.
  17.    Dim oBrepEnt1 As Object
  18.     Dim oBrepEnt2 As Object
  19.     Set oBrepEnt1 = oSelectSet.Item(1)
  20.     Set oBrepEnt2 = oSelectSet.Item(2)
  21.  
  22.     ' Create the insert constraint between the parts.
  23.    Dim oMate As MateConstraint
  24.     Set oMate = oAsmCompDef.Constraints.AddMateConstraint(oBrepEnt1, oBrepEnt2, 0, kInferredLine, kInferredLine)
  25. End Sub

Оффлайн ВитяАвтор темы

  • ADN OPEN
  • Сообщений: 8
  • Карма: 0
Re: Сопряжения в сборке
« Ответ #6 : 25-06-2019, 08:15:42 »
Спасибо большое, SDK смотрел просто искал не там.