Создание сборки в API

Автор Тема: Создание сборки в API  (Прочитано 6922 раз)

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

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

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Создание сборки в API
« : 10-01-2017, 21:46:35 »
Сложное задание, буду очень признательна за любую помощь

Тема: Создание круглого стола. Изменение диаметра (скролл). Зависимость количества ножек от диаметра.

Что сделать:
1.Создание эскиза и выдавливание деталей
2 Реализация сборки
3 Задание зависимостей
4 Создание интерфейса для задания параметров для детали

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Создание сборки в API
« Ответ #1 : 11-01-2017, 06:26:17 »
Для каких целей такая затея?

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

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Re: Создание сборки в API
« Ответ #2 : 11-01-2017, 13:14:55 »
mikazakov, для учебы

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Создание сборки в API
« Ответ #3 : 11-01-2017, 19:55:22 »
mikazakov, для учебы
ну вот тогда начинайте с азов, первым делом открываете хэлп по API и начинаете читать.
Инвентор создавался еще с середины 90-ых тогда популярны были COM-технологии, с той поры API инвентора тянется в том несколько "допотопном" виде,
с VBA и прочими выкрутасами. Придется определится с языком программирования, из современных vb.net или C#. Микрософт рекомендует знать несколько языков.
С++ тоже не плохо, но это для ценителей.

Так что дерзайте, читайте пробуйте, вопросы конкретные будут задавайте порешаем.
Вот мой ресурс, где есть инфа как работать с API инвентора "по взрослому" с созданием настоящих надстроек и кнопок на панелях интерфейса:
http://mihakazakov.wixsite.com/inventor-api/publications
Это уже не какие то там макросы на языках-интерпритаторах: VBA и прочих Питонах.

Оффлайн R.I.Chernov

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Создание сборки в API
« Ответ #4 : 12-01-2017, 13:45:32 »
Тема: Создание круглого стола. Изменение диаметра (скролл). Зависимость количества ножек от диаметра.
Добрый день, хотел спросить, а вы уверены, что вам требуется именно создавать? Дело в том, что мой опыт работы конструктором говорит о том, что создание какого-либо узла "с нуля" на практике, в большинстве случаев,  бесполезно. Вероятно есть области машиностроения, или какие-то иные, где это может пригодиться, но все же я считаю это исключением из общей массы задач. И отсюда возникает вопрос, зачем вам учиться делать то, что в принципе не будет востребовано? Более удобным мне кажется использование параметрических заготовок, управляемых программой. Вы поинтересуйтесь у педагогов, быть может их устроит, что в начале работы ваша программа будет подгружать ранее заготовленный шаблон с необходимыми эскизами и т.п, и с ним уже работать?
« Последнее редактирование: 12-01-2017, 21:57:03 от R.I.Chernov »
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Создание сборки в API
« Ответ #5 : 12-01-2017, 19:53:15 »
Дело в том, что мой опыт работы конструктором говорит о том, что создание какого-либо узла "с нуля" на практике, в большинстве случаев,  бесполезно.
Ну батенька, там видимо и преподы далеки от  практики, как это часто бывает. Собственная практика показывала, что с к.т.н.-ами обычно "кашу не сваришь". Апеллировать к здравому смыслу здесь бесполезно.

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

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Re: Создание сборки в API
« Ответ #6 : 12-01-2017, 20:18:48 »
Застопорилась на том, как создать отверстие, чтобы из него потом сделать массив. Перебираю поверхности в поисках нецилиндрической:

 Dim RotationFaceOfAxis As Inventor.Face

        For Each RotationFaceOfAxis In oDocDef.Features.ExtrudeFeatures(1).Faces
            If RotationFaceOfAxis.SurfaceType = Inventor.SurfaceTypeEnum.kCylinderSurface Then Exit For
        Next
        If RotationFaceOfAxis.SurfaceType <> Inventor.SurfaceTypeEnum.kCylinderSurface Then Return

Далее не могу найти синтаксис по созданию hole средствами API

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Создание сборки в API
« Ответ #7 : 12-01-2017, 20:26:11 »
Далее не могу найти синтаксис по созданию hole средствами API
Стоит только развернуть содержание и ... о чудо вот и примеры про отверстие (см. скрин)...
А вообще определить нужную поверхность программно, весьма не тривиальная задача может оказаться.
можно юзера попросить помочь, есть совсем простой инструментишко:

Код - Visual Basic [Выбрать]
  1. Public Sub GetSingleSelection()
  2.     ' Get a feature selection from the user
  3.    Dim oObject As Object
  4.     Set oObject = ThisApplication.CommandManager.Pick(kPartFeatureFilter, "Pick a feature")
  5.  
  6.     MsgBox "Picked: " & oObject.Name
  7. End Sub
  8.  
  9.  
  10.  

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

  • ADN OPEN
  • Сообщений: 5
  • Карма: 0
Re: Создание сборки в API
« Ответ #8 : 12-01-2017, 20:57:44 »
Все получилось, осталась одна небольшая проблемка: из-за того, что стол круглый, в центр тоже ставится ножка. Можно ли как-то это обойти?

 Dim oEdge As Inventor.Edge
        For Each oFace As Inventor.Face In oDetail.SurfaceBodies(1).Faces
            If oFace.SurfaceType = Inventor.SurfaceTypeEnum.kCylinderSurface Then
                For Each oEdge In oFace.Edges
                    If oEdge.GeometryType = Inventor.CurveTypeEnum.kCircleCurve Then

                        ''Другой компонент по новому вектору
                        Dim sFileName As String = "C:\Inventor\Nozhka.ipt"
                        Dim oCylinder1 As Inventor.ComponentOccurrence = oAssyDoc.ComponentDefinition.Occurrences.Add(sFileName, oPositionMatrix)

                        For Each oCylFace As Inventor.Face In oCylinder1.SurfaceBodies(1).Faces
                            If oFace.SurfaceType = Inventor.SurfaceTypeEnum.kCylinderSurface Then
                                Dim oConstr As Inventor.AssemblyConstraint = oAssyDoc.ComponentDefinition.Constraints.AddMateConstraint(oFace, oCylFace, 0, Inventor.InferredTypeEnum.kInferredLine, Inventor.InferredTypeEnum.kInferredLine)
                                Exit For
                            End If
                        Next

                        Exit For
                    End If
                Next
            End If
        Next

« Последнее редактирование: 12-01-2017, 22:33:58 от Liubava »

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Создание сборки в API
« Ответ #9 : 13-01-2017, 07:36:50 »
Можно ли как-то это обойти?
Ну как то нужно дать понять что это отверстие не нужно.
Например, при создании отверстия в детали добавить атрибут с меткой, что сюда ничего вставлять не нужно. У большинства объектов в инвенторе есть свойство AttributeSets. Работу с атрибутами тоже можно найти в хэлпе.
 Есть такое свойство у объектов типа Face, называется CreatedByFeature , там описание операции которая поверхность создала, там и атрибуты есть. Если их заранее заполнить, то можно потом сфильтровать.
Или наоботор вставлять только туда где нужный атрибут есть.

Оффлайн R.I.Chernov

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Создание сборки в API
« Ответ #10 : 13-01-2017, 14:19:29 »
Dim oConstr As Inventor.AssemblyConstraint =
Хочу вам предложить отказаться от зависимостей. Намного проще делать тела "базовыми" и помещать их в нужное место пространства. И, если потребуется, точно также перемещать их в новое место.

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

В программировании я новичок...но ненадолго! ;)