Получение пути к файлу подавленного вхождения.

Автор Тема: Получение пути к файлу подавленного вхождения.  (Прочитано 7509 раз)

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

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

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Доброго времени суток, уважаемые форумчане! Ищу вашей помощи в решении такой вот задачи:
В сборке есть подавленная деталь / сборка. Мне требуется узнать путь к файлу детали / сборки (свойство Document.FullFileName), для того, чтобы использовать его в ComponentOccurrences.Add(). Единственный способ, который я нашел, это снять подавление, считать свойство и снова подавить вхождение. Но это нудно, неудобно и тратит кучу времени (так как операций таких много). Быть может кому известен более простой способ узнать путь к файлу на компьютере для подавленного вхождения?
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Мне требуется узнать путь к файлу детали
Document.File.ReferencedFileDescriptors
Там все то нужно.

Есть еще немного по ближе
Document.ReferencedFileDescriptors
Но эта ссылка на объект скрыта, видимо потому что оно устаревшее и не рекомендуется к использованию.

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Document.File.ReferencedFileDescriptors
Там все то нужно.
Спасибо, Михаил! Но у меня такой вопрос, правильно ли я понял, что обращаться к членам коллекции можно только по индексу?
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Хэлп сообщает:
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.
Ну обращение либо по индексу либо по полному имени.

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Ну обращение либо по индексу либо по полному имени.
По полному имени обращаться не вариант, я его, по сути, и ищу. Но обращение по индексу тоже неудобно. Покопался сейчас, сложилось впечатление, что члены коллекции расположены по алфавиту, т.е. если ты добавишь какую-то деталь, чье имя по алфавиту раньше всех остальных в сборке, то файл детали становится первым в коллекции File.ReferencedFileDescriptors(), все остальные индексы плывут. В общем вопрос остался открытым. :(
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
По полному имени обращаться не вариант, я его, по сути, и ищу. Но обращение по индексу тоже неудобно.
Да на вас, батенька, не угодить

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
По полному имени обращаться не вариант, я его, по сути, и ищу. Но обращение по индексу тоже неудобно.
Да на вас, батенька, не угодить

Ну вот не правда! Просто данный способ не выполняет моей задачи. В любом случае я очень благодарен вам за помощь!
В программировании я новичок...но ненадолго! ;)

Отмечено как Решение R.I.Chernov 08-08-2016, 15:12:59

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

  • ADN Club
  • **
  • Сообщений: 87
  • Карма: 20
требуется узнать путь к файлу детали / сборки (свойство 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

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Может чего не понимаю, это разве не работает?
Нет, это как раз то, что мне было нужно. Я просто не додумался до такого кода. А именно, что можно преобразовать Document.File.ReferencedFileDescriptors.Item() в Occurrence.ReferencedDocumentDescriptor.ReferencedFileDescriptor.
Я еще плохо понимаю работу элементов "Referenced..."
Большое спасибо, Михаил!
В программировании я новичок...но ненадолго! ;)

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Большое спасибо, Михаил!
А почему Михаил, когда Алексей Романов ??? :D
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
почему Михаил, когда Алексей Романов 
:) прошу "понять и простить" ! Общались с Михаилом до этого, из-за того и ошибся!+1 к карме все равно поставил куда надо! :) спасибо, Алексей! Спасибо, Михаил! Спасибо, Александр! Всем спасибо!
В программировании я новичок...но ненадолго! ;)