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

ADN Club => Inventor API => Тема начата: Елена от 09-02-2016, 19:15:29

Название: Редактирование 3D эскиза
Отправлено: Елена от 09-02-2016, 19:15:29
Здравствуйте.  Я новичок в API Inventor. Подскажите пожалуйста, как можно и возможно ли вообще редактировать размеры готового 3d эскиза детали? Есть некая деталь, например цилиндр со сквозным отверстием посередине. Нужно изменить радиус цилиндра, радиус отверстия, высоту цилиндра. В общем случае есть некая сложная деталь и необходимо изменять некоторые ее размеры, при этом не меняя остальные. Как это можно сделать с помощью API (желательно с примером на VB)?
Название: Re: Редактирование 3D эскиза
Отправлено: mikazakov от 09-02-2016, 19:31:54
как можно и возможно ли вообще редактировать размеры готового 3d эскиза детали? Есть некая деталь, например цилиндр со сквозным отверстием посередине. Нужно изменить радиус цилиндра, радиус отверстия, высоту цилиндра.
А Елена, ваше начальство продолжает над вами проводить социальные эксперименты :))). То что вы пишите это прямиком в iPart или iFeature, без всякого API.
Дак все таки API или iPart будем мурыжить?
Название: Re: Редактирование 3D эскиза
Отправлено: Елена от 09-02-2016, 19:33:33
Дак все таки API или iPart будем мурыжить
К сожалению API. (:
Название: Re: Редактирование 3D эскиза
Отправлено: mikazakov от 09-02-2016, 20:00:35
К сожалению API. (:
Скажите Елена почему к сожалению? Там все просто делается через iPart. Или это не начальство предприятия глумится, а злые преподы?
Название: Re: Редактирование 3D эскиза
Отправлено: Елена от 09-02-2016, 20:21:24
Скажите Елена почему к сожалению? Там все просто делается через iPart. Или это не начальство предприятия глумится, а злые преподы?
У нас стоит 2014 инвентор. Есть 5 3d чертежей, среди которых как совсем простые типа прямоугольного бруска, так и сложные детали двигателя в виде усеченного сектора (не знаю, как назвать) с довольно сложной геометрией (много различных по форме и размеру отверстий). Всей этой байде требуется менять размеры, определенные, не все. Детали рисовались в инвенторе вручную (не мной, инженером, он не программист). Теперь начальство поставило задачу, некоторые размеры этих деталей менять, для чего требует написать и использовать специальную програмулину (пишу на VB, т.к. много примеров, я не инженер). Им эта програмулина нужна для отчета целиком вместе с кодом по какому-то конкурсу. С меня попросили сделать все через АПИ под 2014й инвентор.
Название: Re: Редактирование 3D эскиза
Отправлено: mikazakov от 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.  
т.е. все размеры попадают в параметры, их там нужно ловить и модифицировать.
Есть так же пользовательская таблица паарметров, где юзер их все видит и может изменять.
Но девушка знайте, инвентор внутри мереет все в сантиметрах
Название: Re: Редактирование 3D эскиза
Отправлено: Алексей Романов от 11-02-2016, 14:06:20
Изменять параметры проще всего через iLogic (VB.NET) и VBA (VB), обе среды разработки кода встроены в Инвентор. Можно написать AddIn (VB.NET, C# и т.п.), использую сторонние проги типа Microsoft Visual Studio и ей подобные...
В какой среде Вы планируете писать код и как его запускать?
Извиняюсь, если не в тему...
Название: Re: Редактирование 3D эскиза
Отправлено: Елена от 18-02-2016, 22:04:52
mikazakov, Спасибо огромное за помощь. Прошу прощения, что сразу не отписалась. По итогам обдумываний и обсуждений было принято решение не маяться дурью, а использовать таки правила iLogic в сочетании с VB. Теперь у меня есть эталонные детали и сборки, снабженные правилами для корректных изменений размеров внутри себя. Из VB (начальству таки нужен он) я меняю только один пользовательский параметр в каждом эскизе, а правила делают все остальное. Потом я сохраняю результат в новый файл в новое место. Просто красота! Кода меньше в разы.

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

Вопрос решила, нашла, как это делается.
Остался последний вопрос:
У сборки тоже есть свои параметры, как их можно поменять?
Название: Re: Редактирование 3D эскиза
Отправлено: Елена от 18-02-2016, 22:08:15
Изменять параметры проще всего через iLogic (VB.NET) и VBA (VB), обе среды разработки кода встроены в Инвентор. Можно написать AddIn (VB.NET, C# и т.п.), использую сторонние проги типа Microsoft Visual Studio и ей подобные...
В какой среде Вы планируете писать код и как его запускать?
Извиняюсь, если не в тему...
Алексей, да в итоге использую iLogic для изменения параметров. Внутрь эскиза передаю только один пользовательский параметр. Дальше все делают правила. Код пишу на VB.Net.
Название: Re: Редактирование 3D эскиза
Отправлено: mikazakov от 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
Название: Re: Редактирование 3D эскиза
Отправлено: Елена от 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 сборки, так что работает довольно быстро и проблем с отладкой тоже особо нет - легко отловить косяки.
На сайте не была, вот сейчас зашла. Очень интересно. Показала коллеге, тоже сидит читает.
Название: Re: Редактирование 3D эскиза
Отправлено: mikazakov от 19-02-2016, 07:36:08
Очень интересно. Показала коллеге, тоже сидит читает.
На самом деле сделать AddIn не очень сложно, раньше на VB6 были проблемы с отладкой. А сейчас AddIn отлаживается не сложнее, чем EXE-файл.
Название: Re: Редактирование 3D эскиза
Отправлено: mikazakov от 19-02-2016, 07:39:36
Через ReferencedFileDescriptor
ReferencedFileDescriptor, да припоминаю, но в нем ограничение, что подмена ссылки может быть только на копию файла с таким же InternalName, иначи эрор эксептион. А вот не на копию подмену ссылки сделать нельзя, там только Replace в сборке или ApprenticeServer юзать, в нем можно любые ссылки менять, но это отдельная тема.
Название: Re: Редактирование 3D эскиза
Отправлено: Елена от 19-02-2016, 07:48:21
ReferencedFileDescriptor, да припоминаю, но в нем ограничение, что подмена ссылки может быть только на копию файла с таким же InternalName, иначи эрор эксептион. А вот не на копию подмену ссылки сделать нельзя, там только Replace в сборке или ApprenticeServer юзать, в нем можно любые ссылки менять, но это отдельная тема.
У меня там по сути просто пересохранение в новое место с новыми именами, InternalName не меняется так что мне пока хватило. В дальнейшем да, учту это ограничение, спасибо.

Но так и не нашла, как поменять параметр в самой сборке, ее собственный юзер_параметр, а не параметр составляющих ее эскизов. Подскажите, есть ли возможность это сделать?
Название: Re: Редактирование 3D эскиза
Отправлено: mikazakov от 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 "удобен" :)
Название: Re: Редактирование 3D эскиза
Отправлено: Елена от 19-02-2016, 08:21:17
не забудь, что все в сантиметрах
вообще там среди пользовательских параметров есть текстовые и с выпадным меню, такие параметры на самом деле под iLogic заточены, там к ним "удобно" обращаться.
Если конечно iLogic "удобен" :)

Большое спасибо! Да, я помню про сантиметры, приходится все пересчитывать и проверять по десять раз. Надо мне увеличивать скилл в Инвенторе, а то начальство уже и второй этап замыслило (:
Название: Re: Редактирование 3D эскиза
Отправлено: mikazakov от 19-02-2016, 11:16:17
Надо мне увеличивать скилл в Инвенторе
А в самом VB.NET скилы большие? А то добрых книжек по VB.NET нету. Я по C# обычно справочник юзаю и если нужно в VB.NET перегоняю.
VB.NET и C# в принципе одинаковые.
Название: Re: Редактирование 3D эскиза
Отправлено: R.I.Chernov от 29-03-2016, 12:35:54
Не видел этой темы, сейчас перечитал её, решил поделиться опытом, может чем-то поможет вам:
Я использовал правила ilogic для перестроения адаптивным лестниц, стремянок, перил и т.п, короче моделей icopy. В общем сам iLogic нужен был для пересчета количества ступеней, стоек и тп при изменении размеров модели, на которую они были завязаны. Возможно я не так организовал выполнение правил, но когда сборка содержит , например, 20 таких элементов с одним небольшим правилом внутри себя, то при активации этих правил сборка начинает жутко тупить, вплоть до зависания. Но сразу скажу, что в сборке изначально порядка 50 тыс деталей. Ну вобщем для себя я решил, что везде, где можно обойтись без iLogic, надо обходится без него. Уж очень он проигрывает в скорости. Мы проводили тест: перебор сборки, содержащей 1000 деталей, iLogic и VBA перебирали её порядка 3 минут, а C# выполняет тот же код за 2 секунды. Хотя в защиту iLogic скажу , что на ютубе можно найти ролик с AU2014 , где итальянец показывал огромную сборку, полностью управляемую iLogic-Ом.
Вы обсуждали выше управление параметрами, я вот половину преобразований делаю создавая пользовательские параметры и обращаясь к ним по имени. Проблема с переводом в сантиметры решается написанием процедуры, куда просто аргументом посылается параметр ( если он метрический), и отдельно пишется процедура для значений безразмерных( ну в смысле в одной процедуре значение меняется в 10раз, а в другой нет). Это особенно удобно, если параметры внутри инвертора и внутри программы сделать одноименными. Надеюсь, вы найдёте что-то полезное в вышеизложенном.
Название: Re: Редактирование 3D эскиза
Отправлено: mikazakov от 29-03-2016, 13:01:03
Проблема с переводом в сантиметры решается написанием процедуры,
Лучше юзать готовое, а не писать процедуры. В объекте Document есть объект UnitsOfMeasure. там всяко разно можно конвертировать и даже заранее проверять выражения на корректность с учетом введенных единиц измерение.

iLogic и VBA перебирали её порядка 3 минут
На то они и интерпритаторы, что бы тормозить.

где итальянец показывал огромную сборку, полностью управляемую iLogic-Ом.
Маньяк однако
Название: Re: Редактирование 3D эскиза
Отправлено: R.I.Chernov от 29-03-2016, 13:25:33
Маньяк однако
Мне тоже так показалось :) Причем насколько я помню, он сделал это в одиночку за пол года.
Вот это видео, если интересно: https://youtu.be/wGU-gLcgHEg?t=1s (https://youtu.be/wGU-gLcgHEg?t=1s)
Название: Re: Редактирование 3D эскиза
Отправлено: mikazakov от 29-03-2016, 13:54:47
Вот это видео
Процик Xeon 2 Гигагерца, видюха K5000 c 1500 кудо-процессоров.... чтоб я так жил...
Хотя для таких вещей такого уровня существует Inventor ETO. Инфы правда по нему мало, но немного можно найти на YouTube.
iLogic -это все таки уровень более мелкий, чем Inventor ETO. Отладка в iLogic больше 20 строк без поллитры не разберешся.
Inventor ETO интегрируется в Visual Studio со всеми прелестями отладки Visual Studio, функционал у него шире чем iLogic.
Доступ к Inventor API тоже проще.

Мне жаль этого итальянца, но него видимо было много свободного времени что бы собирать такие бандуры на iLogic.
Название: Re: Редактирование 3D эскиза
Отправлено: R.I.Chernov от 29-03-2016, 14:25:16
Процик Xeon 2 Гигагерца, видюха K5000 c 1500 кудо-процессоров.... чтоб я так жил...
Ну да, ну у него, как я понял, в главном УД 900К деталей.
На AU2015 был один доклад, не знаю правда, есть ли он на ютубе, в общем там делились опытом, в плане производительности. Помимо прочего, там приводились данные, что в отличие от прочих CAD систем, в инвенторе профессиональные карты nvidia работают хуже чем игровые. Поиск в интернете подтвердил эту информацию. Ну в общем игровые карты вдвое дешевле работают вроде как наравне с такими локомотивами, как quadro 4-5k. Но честно скажу, практически мы еще не пробовали применять игровые карты, только собираемся.
Название: Re: Редактирование 3D эскиза
Отправлено: R.I.Chernov от 29-03-2016, 14:28:36
Хотя для таких вещей такого уровня существует Inventor ETO. Инфы правда по нему мало, но немного можно найти на YouTube.
Изучал вопрос, пришел к выводу что ETO не выход. Ее задача сродне iLogic - упростить процесс написания кода для тех. кто в этом не сильно разбирается. Но, на мой взгляд, цена слишком баснословна и не оправдывает себя. Хотя, опять таки, все это субъективно. На AU2014 парни вступали, предлагали услуги своей фирмы, вроде бы компания "Пойнт" (не сочтите рекламой :) ) Ну в общем они показывали, как с помощью ETO сделать емкость, работающую под давлением. Вполне мило выглядело.

Update: вот видео, если интересно https://youtu.be/_BdU-jzjSI0?t=1s (https://youtu.be/_BdU-jzjSI0?t=1s)
Название: Re: Редактирование 3D эскиза
Отправлено: mikazakov от 29-03-2016, 14:37:50
Офф топы пошли:)
что в отличие от прочих CAD систем, в инвенторе профессиональные карты nvidia работают хуже чем игровые.
Я бы так сказал, до инвентора 2015 (или 2014 не помню уже) на nvidia квадро в сравнении с игровыми nvidia  не заметно было какого то выигрыша. Потом вроде как сделали поддержку мультипроцессорности для кудо-процессоров на профессиональных видюхах. Действительно эффект появился. Почти самая дешевая квадро-кеплер имеет около 200 кудо-процессоров (у меня такая). а такие как квадро 5к там рост цены не пропорционален производительности.
Правда с новыми версиями производительность имеет тенденцию инвентора не увеличиваться.
Конечно нужно самому брать конкретные видюхи и тестить.
Радеоны для инвентора вообще говно, кроме глюков на на них под инвентор я ничего не видел.
Филат вот вообще юзает свободные ядра центрального процессора без видюхи. Ну у филата кантора богатая процики по последнему писку моды.
Название: Re: Редактирование 3D эскиза
Отправлено: mikazakov от 29-03-2016, 14:40:16
вроде бы компания "Пойнт"
Слышал про такую, видео на youtube где со стеллажами видел на Inventor ETO.
Название: Re: Редактирование 3D эскиза
Отправлено: R.I.Chernov от 29-03-2016, 14:45:15
Ну у филата кантора богатая процики по последнему писку моды
В том докладе, который я упоминал (к сожалению не смог его найти на ютубе), говорилось что вторым фактором, влияющим на производительность, является как раз процессор, если быть точнее максимальный размер его ядра. Что вроде как инвентор не умеет использовать несколько ядер. Так что современные дорогие процессоры - то что надо для нормальной работы. Ну правда у нас всегда проблема с оформлением общих видов чертежей. Там загрузка видюхи 100 процентов, и процессор уже вряд ли поможет.
П.С. в сообщении выше я добавил ссылку на доклад про ETO.
Название: Re: Редактирование 3D эскиза
Отправлено: mikazakov от 29-03-2016, 16:39:16
Ну правда у нас всегда проблема с оформлением общих видов чертежей. Там загрузка видюхи 100 процентов, и процессор уже вряд ли поможет.
При создании чертежей Инвентор как раз умеет юзать все процессоры на компе, Инвентор мультипроцессорный местами. Логично предположить, что в первую очередь делают рефакторинг узких мест по производительности. А вот автокад тот действительно был "одногоршковый" до 2014 точно.