Редактирование 3D эскиза

Автор Тема: Редактирование 3D эскиза  (Прочитано 17971 раз)

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

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

  • ADN OPEN
  • Сообщений: 12
  • Карма: 0
Редактирование 3D эскиза
« : 09-02-2016, 19:15:29 »
Здравствуйте.  Я новичок в API Inventor. Подскажите пожалуйста, как можно и возможно ли вообще редактировать размеры готового 3d эскиза детали? Есть некая деталь, например цилиндр со сквозным отверстием посередине. Нужно изменить радиус цилиндра, радиус отверстия, высоту цилиндра. В общем случае есть некая сложная деталь и необходимо изменять некоторые ее размеры, при этом не меняя остальные. Как это можно сделать с помощью API (желательно с примером на VB)?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Редактирование 3D эскиза
« Ответ #1 : 09-02-2016, 19:31:54 »
как можно и возможно ли вообще редактировать размеры готового 3d эскиза детали? Есть некая деталь, например цилиндр со сквозным отверстием посередине. Нужно изменить радиус цилиндра, радиус отверстия, высоту цилиндра.
А Елена, ваше начальство продолжает над вами проводить социальные эксперименты :))). То что вы пишите это прямиком в iPart или iFeature, без всякого API.
Дак все таки API или iPart будем мурыжить?

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

  • ADN OPEN
  • Сообщений: 12
  • Карма: 0
Re: Редактирование 3D эскиза
« Ответ #2 : 09-02-2016, 19:33:33 »
Дак все таки API или iPart будем мурыжить
К сожалению API. (:

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Редактирование 3D эскиза
« Ответ #3 : 09-02-2016, 20:00:35 »
К сожалению API. (:
Скажите Елена почему к сожалению? Там все просто делается через iPart. Или это не начальство предприятия глумится, а злые преподы?

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

  • ADN OPEN
  • Сообщений: 12
  • Карма: 0
Re: Редактирование 3D эскиза
« Ответ #4 : 09-02-2016, 20:21:24 »
Скажите Елена почему к сожалению? Там все просто делается через iPart. Или это не начальство предприятия глумится, а злые преподы?
У нас стоит 2014 инвентор. Есть 5 3d чертежей, среди которых как совсем простые типа прямоугольного бруска, так и сложные детали двигателя в виде усеченного сектора (не знаю, как назвать) с довольно сложной геометрией (много различных по форме и размеру отверстий). Всей этой байде требуется менять размеры, определенные, не все. Детали рисовались в инвенторе вручную (не мной, инженером, он не программист). Теперь начальство поставило задачу, некоторые размеры этих деталей менять, для чего требует написать и использовать специальную програмулину (пишу на VB, т.к. много примеров, я не инженер). Им эта програмулина нужна для отчета целиком вместе с кодом по какому-то конкурсу. С меня попросили сделать все через АПИ под 2014й инвентор.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Редактирование 3D эскиза
« Ответ #5 : 10-02-2016, 07:06:31 »
С меня попросили сделать все через АПИ под 2014й инвентор.
Чудны дела твои.... еще и программу на конкурс.... я думал у меня в руководстве одни дебилы, ан нет.
Для работы кода откройте деталь, сделайте эскиз, в нем прямоугольник , образмерте его и запустите  код.
Код - Visual Basic [Выбрать]
  1.     Sub Main()
  2.         Dim InvApp As Application = DirectCast(System.Runtime.InteropServices.Marshal.GetActiveObject("Inventor.Application"), Application)
  3.  
  4.         Dim PartDoc As PartDocument = DirectCast(InvApp.ActiveDocument, PartDocument)
  5.  
  6.         Dim Params As Parameters = PartDoc.ComponentDefinition.Parameters
  7.  
  8.         Params.ModelParameters(1).Value = 10
  9.  
  10.         PartDoc.Update()
  11.     End Sub
  12.  
т.е. все размеры попадают в параметры, их там нужно ловить и модифицировать.
Есть так же пользовательская таблица паарметров, где юзер их все видит и может изменять.
Но девушка знайте, инвентор внутри мереет все в сантиметрах

Оффлайн Алексей Романов

  • ADN Club
  • **
  • Сообщений: 87
  • Карма: 20
Re: Редактирование 3D эскиза
« Ответ #6 : 11-02-2016, 14:06:20 »
Изменять параметры проще всего через iLogic (VB.NET) и VBA (VB), обе среды разработки кода встроены в Инвентор. Можно написать AddIn (VB.NET, C# и т.п.), использую сторонние проги типа Microsoft Visual Studio и ей подобные...
В какой среде Вы планируете писать код и как его запускать?
Извиняюсь, если не в тему...

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

  • ADN OPEN
  • Сообщений: 12
  • Карма: 0
Re: Редактирование 3D эскиза
« Ответ #7 : 18-02-2016, 22:04:52 »
mikazakov, Спасибо огромное за помощь. Прошу прощения, что сразу не отписалась. По итогам обдумываний и обсуждений было принято решение не маяться дурью, а использовать таки правила iLogic в сочетании с VB. Теперь у меня есть эталонные детали и сборки, снабженные правилами для корректных изменений размеров внутри себя. Из VB (начальству таки нужен он) я меняю только один пользовательский параметр в каждом эскизе, а правила делают все остальное. Потом я сохраняю результат в новый файл в новое место. Просто красота! Кода меньше в разы.

Есть вопрос: вот у меня два эскиза. Из них делается сборка. Эскизы я поменяла и сохранила. Открываю следом эталонную сборку и хочу сохранить ее в новое место с новым именем, и в ней надо поменять ссылки на ее компоненты со старых эталонных на новые, запиленные только что. В Инвенторе нашла Спецификации, где это можно вроде сделать ручками. А можно ли как-то достучаться программно и поменять? прошу прощения, если вопрос глупый. Наша некие BOM, которые вроде за это отвечают, но не нашла внятного описания, как через это можно поменять ссылку на компонент в сборке.

Вопрос решила, нашла, как это делается.
Остался последний вопрос:
У сборки тоже есть свои параметры, как их можно поменять?
« Последнее редактирование: 18-02-2016, 23:15:33 от Елена »

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

  • ADN OPEN
  • Сообщений: 12
  • Карма: 0
Re: Редактирование 3D эскиза
« Ответ #8 : 18-02-2016, 22:08:15 »
Изменять параметры проще всего через iLogic (VB.NET) и VBA (VB), обе среды разработки кода встроены в Инвентор. Можно написать AddIn (VB.NET, C# и т.п.), использую сторонние проги типа Microsoft Visual Studio и ей подобные...
В какой среде Вы планируете писать код и как его запускать?
Извиняюсь, если не в тему...
Алексей, да в итоге использую iLogic для изменения параметров. Внутрь эскиза передаю только один пользовательский параметр. Дальше все делают правила. Код пишу на VB.Net.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Редактирование 3D эскиза
« Ответ #9 : 19-02-2016, 06:57:51 »
как через это можно поменять ссылку на компонент в сборке.
Вопрос решила, нашла, как это делается.
Я так понимаю сделала через ComponentOccurrence.Replace?
да iLogic изначально и позиционировался как более продвинутый конфигуратор для моделей и деталей, по сравнению с иПартами и иЭсембли.
iLogic для мелких задач может быть удобен.
Однако в iLogic нет отладки, поэтому это палка о двух концах, пока количество кода не больше 10-20 строк еще как то можно разобраться, а потом труба.
Народ практикует так: изначально код пишут на VB.NET, тестируют его, а потом пихают в iLogic.

Честно скажу после опыта с автомакросами, как то я с опаской отношусь к таким изобретениям типа iLogic.
В свое время, когда мне нужно было сдавать черетжи, а у меня модель на 700 деталях вставала колом, причем так что даже винда сдыхала. Выяснилось что виноваты автомакросы из VBA.
У автодеска был ответ, мол виноват микрософт, сиди вычищай ручками.
Автомакросы функционально это что то похожее на iLogic, там тоже можно было привязать выполнения кода к 5 событиям, кажется.
iLogic - интерпретатор, он должен работать по медленнее, чем AddIn. Мне неизвестно на сколько iLogic ухудшит производительность инвентора на 5000 деталей, я не тестил.
Но iLogic однозначно быстрее чем программа на VB.NET которая работает в отдельном EXE-процессе.
Идеально конечно же AddIn.
На моем сайте то, кстати были?
http://mihakazakov.wix.com/inventor-api#!publications/cee5

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

  • ADN OPEN
  • Сообщений: 12
  • Карма: 0
Re: Редактирование 3D эскиза
« Ответ #10 : 19-02-2016, 07:15:13 »
Я так понимаю сделала через ComponentOccurrence.Replace?
да iLogic изначально и позиционировался как более продвинутый конфигуратор для моделей и деталей, по сравнению с иПартами и иЭсембли.
iLogic для мелких задач может быть удобен.
Однако в iLogic нет отладки, поэтому это палка о двух концах, пока количество кода не больше 10-20 строк еще как то можно разобраться, а потом труба.
Народ практикует так: изначально код пишут на VB.NET, тестируют его, а потом пихают в iLogic.
На моем сайте то, кстати были?
http://mihakazakov.wix.com/inventor-api#!publications/cee5
Через ReferencedFileDescriptor
У меня там правила по пять строчек, не больше. Изначально все были на VB. Полный набор: пять чертежей и 4 сборки, так что работает довольно быстро и проблем с отладкой тоже особо нет - легко отловить косяки.
На сайте не была, вот сейчас зашла. Очень интересно. Показала коллеге, тоже сидит читает.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Редактирование 3D эскиза
« Ответ #11 : 19-02-2016, 07:36:08 »
Очень интересно. Показала коллеге, тоже сидит читает.
На самом деле сделать AddIn не очень сложно, раньше на VB6 были проблемы с отладкой. А сейчас AddIn отлаживается не сложнее, чем EXE-файл.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Редактирование 3D эскиза
« Ответ #12 : 19-02-2016, 07:39:36 »
Через ReferencedFileDescriptor
ReferencedFileDescriptor, да припоминаю, но в нем ограничение, что подмена ссылки может быть только на копию файла с таким же InternalName, иначи эрор эксептион. А вот не на копию подмену ссылки сделать нельзя, там только Replace в сборке или ApprenticeServer юзать, в нем можно любые ссылки менять, но это отдельная тема.

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

  • ADN OPEN
  • Сообщений: 12
  • Карма: 0
Re: Редактирование 3D эскиза
« Ответ #13 : 19-02-2016, 07:48:21 »
ReferencedFileDescriptor, да припоминаю, но в нем ограничение, что подмена ссылки может быть только на копию файла с таким же InternalName, иначи эрор эксептион. А вот не на копию подмену ссылки сделать нельзя, там только Replace в сборке или ApprenticeServer юзать, в нем можно любые ссылки менять, но это отдельная тема.
У меня там по сути просто пересохранение в новое место с новыми именами, InternalName не меняется так что мне пока хватило. В дальнейшем да, учту это ограничение, спасибо.

Но так и не нашла, как поменять параметр в самой сборке, ее собственный юзер_параметр, а не параметр составляющих ее эскизов. Подскажите, есть ли возможность это сделать?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Редактирование 3D эскиза
« Ответ #14 : 19-02-2016, 08:16:58 »
как поменять параметр в самой сборке, ее собственный юзер_параметр
на скорую руку на VBA, для работы нужен будет хотя бы один пользовательский параметр:
Код - Visual Basic [Выбрать]
  1. Sub tt()
  2. Dim doc As AssemblyDocument: Set doc = ThisApplication.ActiveDocument
  3. Dim CompDef As AssemblyComponentDefinition: Set CompDef = doc.ComponentDefinition
  4. CompDef.Parameters.UserParameters(1).Value = 33
  5.  
  6. End Sub
  7.  

не забудь, что все в сантиметрах
вообще там среди пользовательских параметров есть текстовые и с выпадным меню, такие параметры на самом деле под iLogic заточены, там к ним "удобно" обращаться.
Если конечно iLogic "удобен" :)