Маркировка электрооборудования с помощью Dynamo

При маркировке элементов из категории "Электрооборудование", к которой относятся все электрические щиты, я столкнулся с тем, что нельзя добавить в марку номер цепи. В марках для категорий "Электрические приборы" и "Осветительные приборы" для этого существует параметр "Номер цепи". Если нужно указать номер группы для элементов из категории "Электрооборудование", то это можно сделать через Dynamo.

Скачать материалы

1. Запускаем Dynamo (Управление - Визуальное программирование - Dynamo) и открываем файл "Маркировка электрощита.dyn". 

2. Загружаем (обновляем) пакет BIMelectro в Dynamo (Пакеты - Поиск пакета...). В открывшемся окне вводим BIMelectro, выбираем пакет и устанавливаем.

3. Рассмотрим рабочее пространство.
  • Document.Current - получаем доступ к текущему документу;
  • Document.ActiveView - получаем доступ к активному виду;
  • Categories - выбираем категорию, в элементы из которой будем записывать номер группы;
  • SelectByCategoryAndView - выбираем все элементы по категории и виду;
  • ParameterName - имя параметра, куда будет записан номер цепи;
  • Refresh - обновление входных данных;
  • SetElectricalSystemNameToElement - узел, которые записывает номер цепи в заданные элементы.
Dynamo устроен так, что повторный запуск возможен только при изменении входных данных. Поэтому, если программа не запускается, нужно поменять значение в узле "Refresh". 

4. Итак, проверяем результаты в свойствах электрического щита. В данном примере номер цепи для простоты записывается в параметр "Марка".

5. Осталось проставить марки. Загружаем в проект семейство "Марка щита с номером группы.rfa" и маркируем щиты.

6. При изменении номера группы повторно запустите программу в Dynamo.

Комментарии

  1. Не нашел год, когда была написана статья, поэтому не знаю, актуально или нет, но у вас в скрипте ошибка. Он работает исходя из предположения, что питающая группа находится последней в списке .MEPModel.ElectricalSystems, но на практике это не всегда так. Даже если б это было так, у вас в коде лишний таб в строчке 51 перед return, и функция не возвращает последний элемент.
    Но на практике (не знаю почему), питающая группа не всегда оказывается в конце списка (это кстати пожно увидеть в диспетчере систем, такая панель в нем обозначается не значком "папка" а значком "электропанель").
    Чтоб заработало, надо просмотреть списки .MEPModel.ElectricalSystems и .MEPModel.AssignedElectricalSystems. Во втором списке находятся отходящие цепи, соответственно, из первого списка их нужно исключить.
    Я сделал это так:
    def GetSupplyCircuit(elem):
    AllSystems=elem.MEPModel.ElectricalSystems
    OutgoingSystems=elem.MEPModel.AssignedElectricalSystems
    oslist=[]

    if AllSystems==None:
    return "Нет цепей"
    else:
    for ogs in OutgoingSystems:
    oslist.append(ogs.get_Parameter(BuiltInParameter.ID_PARAM).AsElementId())
    for als in AllSystems:
    if als.get_Parameter(BuiltInParameter.ID_PARAM).AsElementId() not in oslist:
    return als

    ОтветитьУдалить

Отправка комментария