Изменение исполнения параметрической модели, C#

Автор Тема: Изменение исполнения параметрической модели, C#  (Прочитано 4081 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • Сообщений: 17
  • Карма: 0
Всем доброго времени суток! Я пишу плагин, осуществляющий параметрическю сборку.
Ниже представлен код вставки параметрической детали в сборку.
Код - C# [Выбрать]
  1.  string proc = "C:/Users/mrily/OneDrive/Рабочий стол/Диплом/28919 прокладка.ipt";
  2.             ThisApplication.CommandManager.PostPrivateEvent(Inventor.PrivateEventTypeEnum.kFileNameEvent, proc);
  3.             ComponentOccurrence Model_proc = oAssDoc.ComponentDefinition.Occurrences.Add(proc, oPositionMatrix);
  4.             Inventor.ControlDefinition ctrlDeffff = ThisApplication.CommandManager.ControlDefinitions["AssemblyPlaceComponentCmd"];
  5.             ctrlDefff.Execute();
  6.  
У меня получилось менять исполнение у параметрической детали открытой отдельным файлом.
Код - C# [Выбрать]
  1. PartDocument PartDoc = ThisApplication.ActiveDocument as Inventor.PartDocument;
  2. PartComponentDefinition PartCompDef;
  3. PartCompDef = PartDoc.ComponentDefinition as PartComponentDefinition;
  4. Parameters Params = PartCompDef.Parameters;
  5.  
  6. iPartFactory partFactory = PartCompDef.iPartFactory;
  7. public void changeIsp(iPartFactory partFactory, string nameIsp)
  8. {
  9. iPartTableRows rows = partFactory.TableRows;
  10. Console.WriteLine("iPart");
  11. foreach (iPartTableRow row in rows)
  12. {
  13. if (row[1].Value == nameIsp)
  14. {
  15. partFactory.DefaultRow = row;
  16. }
  17. Console.WriteLine(row[1].Value);
  18. }
  19. Console.WriteLine("iPart end");
  20. }
  21.  
Но не получается обратиться к детали в  файле сборки. Кто-нибудь знает как можно менять исполнение параметрической детали в сборе?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
AssemblyComponentDefinition.Occurrences(1).ChangeRowOfiPartMember( NewRow As Variant, [CustomInput] As Variant )

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

  • ADN OPEN
  • Сообщений: 17
  • Карма: 0
Что значит единица в Occurrences(1)? При такой записи выдается ошибка о том, что данный член не может использоваться как метод.
И как в таком случае обратиться к модели?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
glebShev,
Так как это C#, то вместо круглых скобок используй квадратные.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение glebShev 09-04-2021, 23:53:38

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Что значит единица в Occurrences(1)? При такой записи выдается ошибка о том, что данный член не может использоваться как метод.
И как в таком случае обратиться к модели?
Я же просто путь по объектной модели написал.  Occurrences(1) -это первый компонент в коллекции компонентов в сборке, в вашем случае это индекс не обязательно равен единице, там должен быть номер вашего иПарта.
Более менее опытный программист меня бы понял, если совсем не понятно, я могу макрос сделать с простеньким примером.

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

  • ADN OPEN
  • Сообщений: 17
  • Карма: 0
Разобрался, спасибо!