Как определить, находится ли вхождение в интересующей папке браузера?

Автор Тема: Как определить, находится ли вхождение в интересующей папке браузера?  (Прочитано 4435 раз)

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

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

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

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Доброго времени суток уважаемые форумчане, ищу вашей помощи в решении указанного в теме вопроса:
У меня идет перебор вхождений с сортировкой (размещением) их по папкам браузера. Можно ли узнать, в какой папке находится вхождение, чтобы, если он уже в "нужной", можно было бы пропустить операцию его "перемещения"?
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Доброго времени суток уважаемые форумчане, ищу вашей помощи в решении указанного в теме вопроса:
У меня идет перебор вхождений с сортировкой (размещением) их по папкам браузера. Можно ли узнать, в какой папке находится вхождение, чтобы, если он уже в "нужной", можно было бы пропустить операцию его "перемещения"?
Ну я думаю нужно смотреть самый верхний объект браузера, там есть метод:
BrowserPane.GetBrowserNodeFromObject( NativeObject As Object ) As BrowserNode
Если где то подчиненные узлы сдержат зависимый объект то должно дать ссылку на этот объект

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

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Спасибо, Михаил, за совет. Буду искать.
В программировании я новичок...но ненадолго! ;)

Отмечено как Решение R.I.Chernov 12-12-2017, 20:20:34

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

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
BrowserPane.GetBrowserNodeFromObject( NativeObject As Object ) As BrowserNode
В общем этот метод мне был ране известен и не сильно помог. А вот идея насчет "подчинения" натолкнула меня на новый критерий поиска, за что еще раз спасибо.
Решением является использование свойства BrowserNode.Parent, которое возвращает BrowserNode родительского объекта, т.е. стоящего на уровень выше в браузере (возвращает ошибку для BrowserNode верхней сборки).

В итоге у меня получился такой вот код:
   
Код - C# [Выбрать]
  1.  
  2.     // oDoc - ссылка на активную сборку
  3.     // oсс - ссылка на интеесующее нас вхождение
  4.     // oBFolder - интересующая нас папка браузера
  5.  
  6.     Inventor.BrowserNode bn = oDoc.BrowserPanes["AmBrowserArrangement"].GetBrowserNodeFromObject(oсс);
  7.     if (!bn.Parent.Equals(oBFolder.BrowserNode)) oBFolder.Add(bn);

П.С. Надеюсь данный код будет кому-то еще полезен. Хотя, честно признаюсь, что результат оказался хуже ожидания. Проводил тест для сборки из 450 деталей: без проверки операция делается за 4-5 секунд, с проверкой за 0.5. Компьютер мощный, на более слабых, возможно, разница будет более заметной. В любом случае, экономия времени не сильно впечатляет конечно :) Ну за год-другой "отобьется" день, который я потратил на поиск данного кода.
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Проводил тест для сборки из 450 деталей: без проверки операция делается за 4-5 секунд, с проверкой за 0.5.
Этот тест был на Addin или на внешнем exe-файле

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

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Этот тест был на Addin или на внешнем exe-файле
Мне стыдно признаться, но я до сих пор не до конца представляю себе, что такое Add-in :(
В общем я замерял в отладчике. Сейчас скомпилировал exe файл, чтобы в  Messagebox замер с таймеров выводил - те же цифры получились: от 4 до 5 секунд в первом случае и 0.5 - 0,7 во втором.
П.С. Для сравнения: аналогичная проверка свойства ComponentOccurrence.Grounded экономит 40 секунд, ну в смысле если у 450 ранее "заграунденых" деталей просто проверить корректность свойства, а не снова выставить его.
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Сейчас скомпилировал exe файл
ну а какую скорость вы после этого батенька хотите? Вы работаете в другом адресном пространстве и данные перепихиваете из одного процесса в другой.
На AddIn на два порядка быстрее все обрабатывается, если не больше

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

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
ну а какую скорость вы после этого батенька хотите?
Ну я же указал, что ранее разговор был о 40 секундах, то есть разница на порядок. А эти две задачи по сложности обработки мне казались в целом похожими.
П.С. Сейчас еще раз замерил с "Grounded", вышло всего десять секунд выгоды. Короче то ли я раньше, где-то накосячил, то ли пример посложнее был.
В программировании я новичок...но ненадолго! ;)

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

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
На AddIn на два порядка быстрее все обрабатывается
Разница скорости в два порядка очень соблазнительно звучит. :) Михаил, подскажите пожалуйста, насколько большая разница написании exe и Add-in? По ложность, времени , или какому-то другому критерию можете оценить? (если это конечно возможно). Хочется понять, сколько времени надо потратить, чтобы перейти от одного к другому.
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Михаил, подскажите пожалуйста, насколько большая разница написании exe и Add-in?
разница в 20 строчек кода. Просто нужно немного времени потратить что бы разобраться, на моем сайте же есть мануал на русском.

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

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

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
надеюсь со второго раза успешнее получится.
Ну как бы переход из количества в качество никто не отменял  :)

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

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Ну как бы переход из количества в качество никто не отменял
Иначе до сих пор бы использовал VBA :)
В программировании я новичок...но ненадолго! ;)