Так, давайте на вскидку прикинем алгоритм. У нас есть 1)щит и 2)устройство. Нужно оптимальным образом соединить щит со всеми устройствами,для начала,-одной группы. Проанализировать сцену,найти пути вдоль стен к щиту и выбрать среди них кратчайший на уровне GDL-пока, как мне кажется,- утопия. По-этому тут нужно чуть поучаствовать и добавить еще один элемент, - назовем его `прокладка по стене`. Его задача - указать путь от дальнего устройства до щита. По сути, это объект с функциями полилинии (координаты углов)+добавим уровень проложения Z.
Итак, имеем 1)щит, 2)устройство, 3)прокладка по стене и ,чтоб все это соединить, используем макрос `провод`(для него хватит указать XYZ_1 и XYZ_2, кол-во проводов num_pr:
1)щит;
-стандартный объект библиотеки;размещение задается пользователем, +прописывает в файл el_seti.txt координаты размещения щита;
2)устройство;
-стандартный объект библиотеки(розетка/переключатель,светильник,вывод и т.д.);размещение задается пользователем, +прописывает в файл el_seti.txt координаты размещения объекта ;
3)прокладка по стене;
-стандартный объект библиотеки;размещение задается пользователем, считывает из файла el_seti.txt координаты размещения щита и устройств;ближняя крайняя точка объекта к щиту будет принадлежать щиту, дальняя соответственно крайнему удалённому устройству;
рассмотрим простой вариант, при котором все проекции точек XYZ устройств лежат на проекции отрезков прокладки по стене, т.е. устройства-это розетки и переключатели(уровень розеток 300мм., переключателей 900мм.) и уровень прокладки кабеля 2400мм.; объект `прокладка по стене` загружает массив с координатами устройств и сортирует их относительно позиции удаленности от щитовой. Объект соединяет по вертикали устройства с уровнем проводки, используя макрос `провод` с кол-вом проводов num_pr = 1(конфигурацию розетка под выключателем не используем-пока). Дальше объект создает массивы с координатами отрезков между устройствами,вычиленных на основе координат точек устройств и соединяет опять же макрос `провод`(от первого(дальнего) до второго - 1 провод(num_pr = 1), от второго до 3-го - 2провода(num_pr = 2) и т.д
Собственно, выносная надпись, - тот же макрос, как и `провод` показывающий суммы длин, принадлежность к группе,что-то еще -не могу сказать, так как не проектировал электрику настолько детально.
Если что напутал,- просто поздновато уже. Но, кажется, вполне реализуемо.