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

ADN Club => Inventor API => Тема начата: R.I.Chernov от 08-08-2016, 01:41:09

Название: Получение пути к файлу подавленного вхождения.
Отправлено: R.I.Chernov от 08-08-2016, 01:41:09
Доброго времени суток, уважаемые форумчане! Ищу вашей помощи в решении такой вот задачи:
В сборке есть подавленная деталь / сборка. Мне требуется узнать путь к файлу детали / сборки (свойство Document.FullFileName), для того, чтобы использовать его в ComponentOccurrences.Add(). Единственный способ, который я нашел, это снять подавление, считать свойство и снова подавить вхождение. Но это нудно, неудобно и тратит кучу времени (так как операций таких много). Быть может кому известен более простой способ узнать путь к файлу на компьютере для подавленного вхождения?
Название: Re: Получение пути к файлу подавленного вхождения.
Отправлено: mikazakov от 08-08-2016, 06:27:51
Мне требуется узнать путь к файлу детали
Document.File.ReferencedFileDescriptors
Там все то нужно.

Есть еще немного по ближе
Document.ReferencedFileDescriptors
Но эта ссылка на объект скрыта, видимо потому что оно устаревшее и не рекомендуется к использованию.
Название: Re: Получение пути к файлу подавленного вхождения.
Отправлено: R.I.Chernov от 08-08-2016, 11:44:09
Document.File.ReferencedFileDescriptors
Там все то нужно.
Спасибо, Михаил! Но у меня такой вопрос, правильно ли я понял, что обращаться к членам коллекции можно только по индексу?
Название: Re: Получение пути к файлу подавленного вхождения.
Отправлено: mikazakov от 08-08-2016, 12:12:51
Хэлп сообщает:
Input Variant value that specifies the FileDescriptor to return. This can be either a numeric value indicating the index of the item in the collection or it can be a string indicating the full file name. If an out of range index or a name of a non-existent FileDescriptor is provided, an error will occur.
Ну обращение либо по индексу либо по полному имени.
Название: Re: Получение пути к файлу подавленного вхождения.
Отправлено: R.I.Chernov от 08-08-2016, 12:53:19
Ну обращение либо по индексу либо по полному имени.
По полному имени обращаться не вариант, я его, по сути, и ищу. Но обращение по индексу тоже неудобно. Покопался сейчас, сложилось впечатление, что члены коллекции расположены по алфавиту, т.е. если ты добавишь какую-то деталь, чье имя по алфавиту раньше всех остальных в сборке, то файл детали становится первым в коллекции File.ReferencedFileDescriptors(), все остальные индексы плывут. В общем вопрос остался открытым. :(
Название: Re: Получение пути к файлу подавленного вхождения.
Отправлено: mikazakov от 08-08-2016, 13:48:50
По полному имени обращаться не вариант, я его, по сути, и ищу. Но обращение по индексу тоже неудобно.
Да на вас, батенька, не угодить
Название: Re: Получение пути к файлу подавленного вхождения.
Отправлено: R.I.Chernov от 08-08-2016, 13:57:10
По полному имени обращаться не вариант, я его, по сути, и ищу. Но обращение по индексу тоже неудобно.
Да на вас, батенька, не угодить

Ну вот не правда! Просто данный способ не выполняет моей задачи. В любом случае я очень благодарен вам за помощь!
Название: Re: Получение пути к файлу подавленного вхождения.
Отправлено: Алексей Романов от 08-08-2016, 14:42:53
требуется узнать путь к файлу детали / сборки (свойство Document.FullFileName),
Может чего не понимаю, это разве не работает?
Код - Visual Basic [Выбрать]
  1. Dim oAsmCompDef As AssemblyComponentDefinition
  2. Set oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition
  3. Dim occ As ComponentOccurrence
  4. For Each occ In oAsmCompDef.Occurrences
  5.     If occ.Suppressed = True Then
  6.         MsgBox occ.ReferencedDocumentDescriptor.ReferencedFileDescriptor.FullFileName
  7.     End If
  8. Next
Название: Re: Получение пути к файлу подавленного вхождения.
Отправлено: R.I.Chernov от 08-08-2016, 15:27:40
Может чего не понимаю, это разве не работает?
Нет, это как раз то, что мне было нужно. Я просто не додумался до такого кода. А именно, что можно преобразовать Document.File.ReferencedFileDescriptors.Item() в Occurrence.ReferencedDocumentDescriptor.ReferencedFileDescriptor.
Я еще плохо понимаю работу элементов "Referenced..."
Большое спасибо, Михаил!
Название: Re: Получение пути к файлу подавленного вхождения.
Отправлено: Александр Ривилис от 08-08-2016, 17:04:50
Большое спасибо, Михаил!
А почему Михаил, когда Алексей Романов ??? :D
Название: Re: Получение пути к файлу подавленного вхождения.
Отправлено: R.I.Chernov от 08-08-2016, 20:54:22
почему Михаил, когда Алексей Романов 
:) прошу "понять и простить" ! Общались с Михаилом до этого, из-за того и ошибся!+1 к карме все равно поставил куда надо! :) спасибо, Алексей! Спасибо, Михаил! Спасибо, Александр! Всем спасибо!