доброго всем дня. Уже более года назад пробовал изучать эту тему, ничего не нашел. Сейчас приходится опять возвращаться к этой теме. Буду рад любым, даже своеобразным советам.
Суть вопроса: Revit позволяет настроить RoutingPreference у труб (duct, pipe). Далее пользователь рисует этими трубами чертеж и вставляются нужные фиттинги.
Чтобы хотелось получить:
1) задавать более расширенные RoutingPreference - например "Elbow == 90gr" и "Elbow != 90gr" (для них использовать разные типы), и т.п.
2) отловить момент когда Revit вставляет/меняет фиттинги, и проанализировав что он захотел мне вставить/подменить либо поменять параметры, либо вовсе изменить тип. (тут вопрос отчасти решается через Updater, но хотелось бы более ближе подобраться к механизму "routing" в Revit и делать анализ именно в момент когда Revit только подумал что надо что то вставить
).
3) в момент когда Revit хочет вставить такие типы как elbow - он поворачивает фиттинг как ему хочется. Отчасти это понятно - location находится на месте пересечения линий коннекторов. Коннекторы не имеют такие идентификаторы как "in"/"out". Хотелось бы какой то однозначности. то есть имеем 2 коннектора и я точно знаю что от трубы из которой "тяну" должен быть именно первый коннектор, а дальше уже второй. подобная ситуация с tee, cross
В общем пока думаю над мыслью реализовывать свой механизм раутинга. А именно:
1) назначаем свой RoutingPreference
2) выбираем конкретную трубы
3) отслеживая позиции щелчков мыши, высчитываем точки начала и конца труб. (с этим конечно пока вопрос но думаю это можно сделать)
4) соединяем точки выбранной трубой
5) на месте стыка вставляем подходящие фиттинги, определенные в нашем RoutingPreference (п.1)
Уход от стандартного "routing" это большое безобразие: даже если получится реализовать адекватный механизм рисования, у нас не получится исключить стандартный "routing" при модификации каких либо элементов в ране - например 2 трубы соединенных elbow. Сдвигая одну из них в сторону revit будет заново ставить elbow по своему алгоритму.
P.S.: Задача нетривиальная. Надеюсь более менее понятно описал суть вопроса. Прошу высказывать любые мнения, даже странная идея может привести к адекватному решению.