Определить присоединенные трубы

Автор Тема: Определить присоединенные трубы  (Прочитано 2752 раз)

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

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

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Добрый день!

Задача: есть измененная или созданная труба (получаю ее в методе ObjectOverrule.Close() и там же изменяю ее). И нужно определить трубы присоединенные в начальной и конечной точках (рассматривается простой вариант без ответвлений)
я храню точки всех созданных и измененных труб, по общим точкам собственно и нахожу присоединенные трубы (чтоб не открывать колодцы->их трубы и тд, ибо они в этот момент открыты могут быть для записи)

в целом работает,
НО вот ПРОБЛЕМА: при вставке колодца в середину трубы (т е разделение этой трубы) существующая труба свою конечную точку меняет на точку нового колодца, а новая труба ожидается, что будет начинаться в точке нового колодца и заканчивается в конечной точке старой (существующей) трубы, НО на деле она создается с точками идентичными существующей трубы (уже измененной), т е получается, что старая и новая труба в одинаковом положении, следовательно, некорректно определяются соседние трубы, точнее не определяются вовсе
потом же эта новая труба меняет точки на ожидаемые(
как бы сделать чтоб отловить эту трубу с актуальными точками?
или может можно иначе(проще) определить присоединенные трубы

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Определить присоединенные трубы
« Ответ #1 : 19-02-2019, 12:36:51 »
НО на деле она создается с точками идентичными существующей трубы (уже измененной)
потом же эта новая труба меняет точки на ожидаемые(
Ну наверное нужно обрабатывать тогда, когда "новая труба меняет точки на ожидаемые".
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: Определить присоединенные трубы
« Ответ #2 : 19-02-2019, 12:48:32 »
ну это понятно.. пытаюсь это реализовать..
просто нужно же знать будет ли она менять точки или нет... т е можно ее уже обрабатывать или еще нужно подождать?

upd:
единственное что я придумал это, если существует труба с такими же точками, следовательно, это тот самый случай, убираю трубу в отдельную коллекцию и жду пока ее точки изменять, там и обрабатываю

Отмечено как Решение simson43 25-02-2019, 10:19:36

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Определить присоединенные трубы
« Ответ #3 : 19-02-2019, 13:07:36 »
Ну наверное нужно обрабатывать тогда, когда "новая труба меняет точки на ожидаемые".
Вот именно!
Я уже говорил, в каких событиях я обрабатываю данные об изменениях объектов Civil 3D:
Цитировать
В итоге, сейчас я только смотрю данные открываемых и закрываемых объектов. Собираю их в коллекцию и потом уже обрабатываю, когда приложение переходит в состояние "ожидаю действий от пользователя" или "бездействую". Есть соответствующие этому события Editor.EnteringQuiescentState и Application.Idle.

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: Определить присоединенные трубы
« Ответ #4 : 25-02-2019, 10:19:34 »
Я уже говорил, в каких событиях я обрабатываю данные об изменениях объектов Civil 3D:
Цитировать (выделенное)
В итоге, сейчас я только смотрю данные открываемых и закрываемых объектов. Собираю их в коллекцию и потом уже обрабатываю, когда приложение переходит в состояние "ожидаю действий от пользователя" или "бездействую". Есть соответствующие этому события Editor.EnteringQuiescentState и Application.Idle.

Похоже так и придется поступить, не удалось обойти все нюансы в Close(), только новые костыли появляются