Как осуществить объединение сетей по именам?

Автор Тема: Как осуществить объединение сетей по именам?  (Прочитано 20924 раз)

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

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

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Добрый день, коллеги.

Подскажите, как можно осуществить объединение сетей между собой по имени? Или хоть каким-то более доступным способом.

Заранее благодарю.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Есть подходящий метод для перемещения объектов из сети в другую сеть: http://docs.autodesk.com/CIV3D/2018/ENU/API_Reference_Guide/html/90ba51f0-38b7-09c2-6285-c093f9a61271.htm
Проверку имени сети и другие условия нужно будет описать отдельно.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Есть подходящий метод для перемещения объектов из сети в другую сеть: http://docs.autodesk.com/CIV3D/2018/ENU/API_Reference_Guide/html/90ba51f0-38b7-09c2-6285-c093f9a61271.htm
Проверку имени сети и другие условия нужно будет описать отдельно.

Дмитрий спасибо.
Правильно ли я понимаю работу метода?:
1. Необходимо найти все трубы и колодцы (их ObjectId) одной сети, собрав их в коллекцию ObjectIdCollection.
2. Перенести их с помощью данного метода в другую сеть с его ObjectId.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Да, как-то так.
Трубы и колодцы особо искать не нужно - есть специальные методы у сети GetPipeIds, GetStructureIds.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
рубы и колодцы особо искать не нужно - есть специальные методы у сети GetPipeIds, GetStructureIds.

Вот ведь поспешил я, я создал новую тему по данному вопросу :) Думаю, лишним не будет.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Ну я не буду там второй раз отвечать, ОК? :)

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Есть подходящий метод для перемещения объектов из сети в другую сеть: http://docs.autodesk.com/CIV3D/2018/ENU/API_Reference_Guide/html/90ba51f0-38b7-09c2-6285-c093f9a61271.htm

Part does not belong to the network.

Что бы это могло означать? Может быть я их как-то неправильно построил на основе полилинии? :) Я не силён в Civil-е.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Ну я не буду там второй раз отвечать, ОК?

Конечно же :)

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Part does not belong to the network.

Что бы это могло означать? Я не силён в Civil-е.
Элемент не принадлежит сети. Это если в ObjectIdCollection оказался какой-то ObjectId элемента не из этой сети.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Элемент не принадлежит сети. Это если в ObjectIdCollection оказался какой-то ObjectId элемента не из этой сети.

То есть нужна ещё и проверка: принадлежит ли ObjectId указанной сети? Я просто думал, что раз я использую GetPipeIds для указанной сети, то это означает, что все эти ObjectId принадлежат этой сети. Я не прав в своих размышлениях?

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Ну смотря как получены эти ObjectId.
Может быть я их как-то неправильно построил на основе полилинии?
Может быть. Надо код смотреть.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Я просто думал, что раз я использую GetPipeIds для указанной сети, то это означает, что все эти ObjectId принадлежат этой сети. Я не прав в своих размышлениях?
Прав. Такой ошибки не должно быть.
А транзакция закрывалась после создания новых объектов сети?

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Может быть. Надо код смотреть.

Покажу его уже завтра. Пора домой :)

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
А транзакция закрывалась после создания новых объектов сети?

С учётом того, что я использовал Using... End Using, наверное да :) Так и не получилось у меня включить режим отладки через acad.exe. Завтра точно решу эту проблему.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
С учётом того, что я использовал Using... End Using, наверное да :)
Этого недостаточно. Нужно еще и подтвердить транзакцию, т.е. вызвать Transaction.Commit()
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение