Добрый день! Наткнулся на одну проблемку, не знаю, может кто сталкивался, сначала предыстория:
Решаю задачу с копированием кабельных лотков и их соеденителей( чтобы в последствии поменять типоразмер и сделать их “кабелем”)
Алгоритм для вертикальных соеденительных: Выделяются отдельно соеденители. Затем берётся их местоположение и через нод Element.CopyByVector (пакет Clockwork) делается копия. Потом уже меняю координаты нового элемента относительно старого с приростом по Z всегда 50(высота лотка), а по Х взависимости от угла наклона соединительного элемента(50 * тангенс половины угла).
Проблема вот в чём: что иногда новый элемент должен смещаться влево, иногда вправо(на скрине должен влево). Добавил проверку на пересечение элементов, если пересекается премещал бы элемент в противоположную сторону. Но получается проверяет он оригинал и новый элемент до того как у него поменяется расположение, так как на выходе нода SetLocation мы не получаем элемента. Можно как-то получить на выходе этого нода элемент? или может быть как-то по иному сделать?
P.S. могу более подробно описать алгоритм если нужно. Но там вроде не сложно. Прилагаю файл тестовый и саму программу.
https://yadi.sk/d/6w5C9EDs3MgMZp – скрипт
https://yadi.sk/d/NSXgchh43MgMvf – тестовый файл.