При добавлении в сеть напорные трубы не получают информацию об этой сети.

Автор Тема: При добавлении в сеть напорные трубы не получают информацию об этой сети.  (Прочитано 18049 раз)

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

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

  • ADN Club
  • **
  • Сообщений: 79
  • Карма: 26
Но мне кажется, что это тупиковый путь.
Жаль. Идея была заменить ссылку на исходную водопроводную сеть ссылкой на новую для перемещаемых элементов.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Жаль. Идея была заменить ссылку на исходную водопроводную сеть ссылкой на новую для перемещаемых элементов.
Я эту идею понял сразу. И она у меня витала в голове еще тогда, когда ты первый раз написал про ReferenceFiler.
Ну попробуй на всякий случай, так как никакого другого способа я не вижу. Но нужно будет переопределить абсолютно все методы и четко отследить порядок вывода и ввода данных. Чем черт не шутит...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Andant 27-10-2017, 15:22:06

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

  • ADN Club
  • **
  • Сообщений: 79
  • Карма: 26
Удалось сделать проще - нашел метод SwapReferences, подготовил для него карту и успешно заменил ссылку на сеть.
Таким образом можно менять и стиль и типоразмер без создания новых объектов!!!

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Если это действительно работает, то это просто гениальное решение!  :)

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

  • ADN Club
  • **
  • Сообщений: 79
  • Карма: 26
Если это действительно работает
Работает! Только карту надо заполнять на все ссылки, иначе значения обнуляются.
Код - C# [Выбрать]
  1. IdMapping mp = new IdMapping();
  2. mp.Add(new IdPair(pip.LayerId, pip.LayerId, true, false, true));
  3. mp.Add(new IdPair(pip.LinetypeId, pip.LinetypeId, true, false, true));
  4. mp.Add(new IdPair(pip.MaterialId, pip.MaterialId, true, false, true));
  5. mp.Add(new IdPair(partListId, partListId, true, false, true));             // Получаем с помощью ReferenceFiler
  6. mp.Add(new IdPair(partDefId, partDefId, true, false, true));               // Получаем с помощью ReferenceFiler
  7. mp.Add(new IdPair(oldNetId, newNetId, true, false, true));                 // Реально меняются значения только здесь
  8. mp.Add(new IdPair(pip.StyleId, pip.StyleId, true, false, true));
  9.  
  10. pip.SwapReferences(mp);

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Это действительно красивое решение проблемы, мои поздравления!

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

  • ADN Club
  • **
  • Сообщений: 79
  • Карма: 26
мои поздравления!
Спасибо!  :) Вы с Александром подсказали нужное направление.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
мои поздравления!
Спасибо!  :) Вы с Александром подсказали нужное направление.
Прими и мои поздравления! Про этот метод я совершенно забыл. Про SwapIdWith и HandOverTo помнил, а про SwapReferences забыл. Склероз...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • **
  • Сообщений: 79
  • Карма: 26