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

ADN Club => Inventor API => Тема начата: Витя от 25-07-2019, 13:30:39

Название: Совмещение или заподлицо в зависимостях сборки
Отправлено: Витя от 25-07-2019, 13:30:39
Здраствуйте, не получается поменять взаимное расположение деталей во взаимосвязи сборки, и не понимаю как работают "bias point".
Надо создать сборочную взаимосвязь детали с базовой плоскостью. В коде тренировался с двумя одинаковыми деталями, не вышло.
И вдобавок выяснил что из=за более старой версии надо строить сопряжение с помощью addmateconstraint, а не addmateconstraint2.
Код - Visual Basic [Выбрать]
  1. Private Sub CommandButton1_Click()
  2. Dim oAsmDoc As AssemblyDocument
  3. Dim oAsmDocDef As AssemblyComponentDefinition
  4. Dim oMateConstraint As MateConstraint
  5. Set oAsmDoc = ThisApplication.ActiveDocumentSet
  6. oAsmDocDef = oAsmDoc.ComponentDefinition
  7. Dim oPick1 As FaceProxyDim oPick2 As FaceProxy
  8. Set oPick1 = ThisApplication.CommandManager.Pick(kAllPlanarEntities, "выберите1")
  9. Set oPick2 = ThisApplication.CommandManager.Pick(kAllPlanarEntities, "выберите2")        
  10. Dim oPoint1 As WorkPoint        Dim oPointProxy1 As WorkPointProxy        
  11. Set oPoint1 = oAsmDocDef.Occurrences.Item(1).Definition.Document.ComponentDefinition.WorkPoints.Item("РабТочка1")        
  12. Call oAsmDocDef.Occurrences.Item(1).CreateGeometryProxy(oPoint1, oPointProxy1)    
  13. Dim oPoint2 As WorkPoint    Dim oPointProxy2 As WorkPointProxy    
  14. Set oPoint2 = oAsmDocDef.Occurrences.Item(2).Definition.Document.ComponentDefinition.WorkPoints.Item("РабТочка1")    
  15. Call oAsmDocDef.Occurrences.Item(2).CreateGeometryProxy(oPoint2, oPointProxy2)
  16. Set oMateConstraint = oAsmDocDef.Constraints.AddMateConstraint2(oPick1, oPick2, 0,
  17. _kNoInference, kNoInference, kAlignedSolutionType, oPointProxy1.NativeObject.Point, oPointProxy2.NativeObject.Point)
  18. End Sub
  19.  
Название: Re: Solution type в зависиостях сборки
Отправлено: mikazakov от 25-07-2019, 16:53:50
не понимаю как работают "bias point"
В хэлпе написано, что так как когда мы накладываем зависимость типа мэйт, например совмещаем две детали по плоскостям, то результат совмещения по плоскостям имеет бесконечное множество решений. И чтоб программист мог определить где примерно будут детали после совмещения как раз и можно задать bias point. По умолчанию инвентор использует точки по середине габаритных размеров модели.

И вдобавок выяснил что из=за более старой версии надо строить сопряжение с помощью addmateconstraint, а не addmateconstraint2.
Ну addmateconstraint2 доступен с 2019 версии

Надо создать сборочную взаимосвязь детали с базовой плоскостью.

А пример из хэлпа не подходит?

Код - Visual Basic [Выбрать]
  1. Public Sub MateConstraintOfWorkPlanes()
  2.     Dim oAsmCompDef As AssemblyComponentDefinition
  3.     Set oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition
  4.  
  5.     ' Get references to the two occurrences to constrain.
  6.    ' This arbitrarily gets the first and second occurrence.
  7.    Dim oOcc1 As ComponentOccurrence
  8.     Set oOcc1 = oAsmCompDef.Occurrences.Item(1)
  9.  
  10.     Dim oOcc2 As ComponentOccurrence
  11.     Set oOcc2 = oAsmCompDef.Occurrences.Item(2)
  12.  
  13.     ' Get the XY plane from each occurrence.  This goes to the
  14.    ' component definition of the part to get this information.
  15.    ' This is the same as accessing the part document directly.
  16.    ' The work plane obtained is in the context of the part,
  17.    ' not the assembly.
  18.    Dim oPartPlane1 As WorkPlane
  19.     Set oPartPlane1 = oOcc1.Definition.WorkPlanes.Item(3)
  20.  
  21.     Dim oPartPlane2 As WorkPlane
  22.     Set oPartPlane2 = oOcc2.Definition.WorkPlanes.Item(3)
  23.  
  24.     ' Because we need the work plane in the context of the assembly
  25.    ' we need to create proxies for the work planes.  The proxies
  26.    ' represent the work planes in the context of the assembly.
  27.    Dim oAsmPlane1 As WorkPlaneProxy
  28.     Call oOcc1.CreateGeometryProxy(oPartPlane1, oAsmPlane1)
  29.  
  30.     Dim oAsmPlane2 As WorkPlaneProxy
  31.     Call oOcc2.CreateGeometryProxy(oPartPlane2, oAsmPlane2)
  32.  
  33.     ' Create the constraint using the work plane proxies.
  34.    Call oAsmCompDef.Constraints.AddMateConstraint(oAsmPlane1, oAsmPlane2, 0)
  35. End Sub


Название: Re: Solution type в зависиостях сборки
Отправлено: Витя от 26-07-2019, 08:10:10
Спасибо, но мне как раз таки нужен контроль над совместной ориентацией этих объектов, а сборочные взаимосвязи без них я могу сделать. И не понятно как редактировать зависимости, ведь большинство их свойств только для чтения как к примеру SolutionType.
Название: Re: Совмещение или заподлицо в зависимостях сборки
Отправлено: Витя от 26-07-2019, 10:11:29
Пока решил заменив MateConstraint на FlushConstraint и получил "заподлицо", поправьте пожалуйста, если не прав.
Название: Re: Совмещение или заподлицо в зависимостях сборки
Отправлено: mikazakov от 26-07-2019, 13:02:03
Пока решил заменив MateConstraint на FlushConstraint и получил "заподлицо", поправьте пожалуйста, если не прав.
В английской версии инвентора, в пользовательском интерфейсе, наложение зависимости "заподлицо" как раз и называется Flash
Название: Re: Совмещение или заподлицо в зависимостях сборки
Отправлено: Витя от 26-07-2019, 13:24:01
Спасибо