Сообщество программистов Autodesk в СНГ

ADN Club => Civil 3D API => Тема начата: simson43 от 19-02-2019, 11:58:31

Название: Определить присоединенные трубы
Отправлено: simson43 от 19-02-2019, 11:58:31
Добрый день!

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

в целом работает,
НО вот ПРОБЛЕМА: при вставке колодца в середину трубы (т е разделение этой трубы) существующая труба свою конечную точку меняет на точку нового колодца, а новая труба ожидается, что будет начинаться в точке нового колодца и заканчивается в конечной точке старой (существующей) трубы, НО на деле она создается с точками идентичными существующей трубы (уже измененной), т е получается, что старая и новая труба в одинаковом положении, следовательно, некорректно определяются соседние трубы, точнее не определяются вовсе
потом же эта новая труба меняет точки на ожидаемые(
как бы сделать чтоб отловить эту трубу с актуальными точками?
или может можно иначе(проще) определить присоединенные трубы
Название: Re: Определить присоединенные трубы
Отправлено: Александр Ривилис от 19-02-2019, 12:36:51
НО на деле она создается с точками идентичными существующей трубы (уже измененной)
потом же эта новая труба меняет точки на ожидаемые(
Ну наверное нужно обрабатывать тогда, когда "новая труба меняет точки на ожидаемые".
Название: Re: Определить присоединенные трубы
Отправлено: simson43 от 19-02-2019, 12:48:32
ну это понятно.. пытаюсь это реализовать..
просто нужно же знать будет ли она менять точки или нет... т е можно ее уже обрабатывать или еще нужно подождать?

upd:
единственное что я придумал это, если существует труба с такими же точками, следовательно, это тот самый случай, убираю трубу в отдельную коллекцию и жду пока ее точки изменять, там и обрабатываю
Название: Re: Определить присоединенные трубы
Отправлено: Дмитрий Загорулькин от 19-02-2019, 13:07:36
Ну наверное нужно обрабатывать тогда, когда "новая труба меняет точки на ожидаемые".
Вот именно!
Я уже говорил, в каких событиях я обрабатываю данные об изменениях объектов Civil 3D:
Цитировать
В итоге, сейчас я только смотрю данные открываемых и закрываемых объектов. Собираю их в коллекцию и потом уже обрабатываю, когда приложение переходит в состояние "ожидаю действий от пользователя" или "бездействую". Есть соответствующие этому события Editor.EnteringQuiescentState и Application.Idle.
Название: Re: Определить присоединенные трубы
Отправлено: simson43 от 25-02-2019, 10:19:34
Я уже говорил, в каких событиях я обрабатываю данные об изменениях объектов Civil 3D:
Цитировать (выделенное)
В итоге, сейчас я только смотрю данные открываемых и закрываемых объектов. Собираю их в коллекцию и потом уже обрабатываю, когда приложение переходит в состояние "ожидаю действий от пользователя" или "бездействую". Есть соответствующие этому события Editor.EnteringQuiescentState и Application.Idle.

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