Сообщество программистов Autodesk в СНГ

ADN Club => Inventor API => Тема начата: Elfilagas от 21-11-2018, 14:43:47

Название: Привязка точки к круглой грани
Отправлено: Elfilagas от 21-11-2018, 14:43:47
Добрый день,
Подскажите, как реализовать зависимость точки и круглой грани (как на рисунке во вложении) через 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, то связь получается не с центром грани, а с нормалью, что не подходит.
Название: Re: Привязка точки к круглой грани
Отправлено: mikazakov от 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.  
Название: Re: Привязка точки к круглой грани
Отправлено: Elfilagas от 22-11-2018, 08:51:03
Так в этом и вопрос. Если делать так:
Код - vb.net [Выбрать]
  1. DocDef.Constraints.AddMateConstraint(edge, assWP, 0)
То привязка получается другая, не такая, как если сделать привязку через стандартный инструмент без API выбрав точку и круглую грань. При выделении она отображается по другому - как привязка к оси окружности (скриншот во вложении, а в первом сообщении вложение при выделении зависимости сделанной стандартным инструментом) и ведут они себя по разному, соответственно. А нужно так, как стандартным инструментом, но через API. )
Название: Re: Привязка точки к круглой грани
Отправлено: Александр Ривилис от 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 и соответственно получается линия, а не точка.
Название: Re: Привязка точки к круглой грани
Отправлено: Elfilagas от 22-11-2018, 12:03:48
Да, это то что надо, спасибо.
Название: Re: Привязка точки к круглой грани
Отправлено: Александр Ривилис от 22-11-2018, 12:04:46
Да, это то что надо, спасибо.
Снова интуиция сработала. ;)