Привязка точки к круглой грани

Автор Тема: Привязка точки к круглой грани  (Прочитано 4715 раз)

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

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

Оффлайн ElfilagasАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Добрый день,
Подскажите, как реализовать зависимость точки и круглой грани (как на рисунке во вложении) через API.
Остановился на этом:
Код - vb.net [Выбрать]
  1.  Dim edge As EdgeProxy = InvApp.CommandManager.Pick(SelectionFilterEnum.kPartEdgeCircularFilter, "Выберите грань")
  2. Dim hio As Circle = edge.Curve(CurveTypeEnum.kCircleCurve)
  3. assWP = assDocDef.WorkPoints.AddFixed(hio.Center)
  4. assWP.Name = "Точка"
  5. assDocDef.Constraints.AddMateConstraint(???, assWP, 0)
Грань вроде есть, но все попытки связать ее с точкой заканчиваются ошибкой.
А если просто указать edge, то связь получается не с центром грани, а с нормалью, что не подходит.
« Последнее редактирование: 21-11-2018, 15:55:29 от Elfilagas »

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Привязка точки к круглой грани
« Ответ #1 : 21-11-2018, 21:20:02 »
Ну что же вы батенька растерялись, у вас же у же есть прокси круговая кромка вот её и подставляете
Код - Visual Basic [Выбрать]
  1. Sub ww()
  2. Dim doc As AssemblyDocument: Set doc = ThisApplication.ActiveDocument
  3. Dim DocDef As AssemblyComponentDefinition: Set DocDef = doc.ComponentDefinition
  4.  
  5. Dim edge As EdgeProxy: Set edge = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kPartEdgeCircularFilter, "выбери круговую кромку")
  6. Dim hio As Inventor.Circle: Set hio = edge.Curve(CurveTypeEnum.kCircleCurve)
  7.  
  8. Dim assWP As WorkPoint
  9. Set assWP = DocDef.WorkPoints.AddFixed(hio.Center)
  10. assWP.Name = "Точка"
  11.  
  12. Call DocDef.Constraints.AddMateConstraint(edge, assWP, 0)
  13.  
  14. End Sub
  15.  
  16.  

Оффлайн ElfilagasАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Re: Привязка точки к круглой грани
« Ответ #2 : 22-11-2018, 08:51:03 »
Так в этом и вопрос. Если делать так:
Код - vb.net [Выбрать]
  1. DocDef.Constraints.AddMateConstraint(edge, assWP, 0)
То привязка получается другая, не такая, как если сделать привязку через стандартный инструмент без API выбрав точку и круглую грань. При выделении она отображается по другому - как привязка к оси окружности (скриншот во вложении, а в первом сообщении вложение при выделении зависимости сделанной стандартным инструментом) и ведут они себя по разному, соответственно. А нужно так, как стандартным инструментом, но через API. )
« Последнее редактирование: 22-11-2018, 11:15:31 от Elfilagas »

Отмечено как Решение Elfilagas 22-11-2018, 12:03:51

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Привязка точки к круглой грани
« Ответ #3 : 22-11-2018, 11:42:44 »
Elfilagas,
Поиграйся с четвертым и пятым параметром метода AddMateConstraint: https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2018/ENU/Inventor-API/files/AssemblyConstraints-AddMateConstraint-htm.html
Подозреваю, что их следует установить в kInferredPoint, а они по-умолчанию kInferredLine и соответственно получается линия, а не точка.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ElfilagasАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Re: Привязка точки к круглой грани
« Ответ #4 : 22-11-2018, 12:03:48 »
Да, это то что надо, спасибо.

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Привязка точки к круглой грани
« Ответ #5 : 22-11-2018, 12:04:46 »
Да, это то что надо, спасибо.
Снова интуиция сработала. ;)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение