Маркировка электрооборудования с помощью Dynamo
При маркировке элементов из категории "Электрооборудование", к которой относятся все электрические щиты, я столкнулся с тем, что нельзя добавить в марку номер цепи. В марках для категорий "Электрические приборы" и "Осветительные приборы" для этого существует параметр "Номер цепи". Если нужно указать номер группы для элементов из категории "Электрооборудование", то это можно сделать через Dynamo.
Скачать материалы
2. Загружаем (обновляем) пакет BIMelectro в Dynamo (Пакеты - Поиск пакета...). В открывшемся окне вводим BIMelectro, выбираем пакет и устанавливаем.
3. Рассмотрим рабочее пространство.
- Document.Current - получаем доступ к текущему документу;
- Document.ActiveView - получаем доступ к активному виду;
- Categories - выбираем категорию, в элементы из которой будем записывать номер группы;
- SelectByCategoryAndView - выбираем все элементы по категории и виду;
- ParameterName - имя параметра, куда будет записан номер цепи;
- Refresh - обновление входных данных;
- SetElectricalSystemNameToElement - узел, которые записывает номер цепи в заданные элементы.
Dynamo устроен так, что повторный запуск возможен только при изменении входных данных. Поэтому, если программа не запускается, нужно поменять значение в узле "Refresh".
4. Итак, проверяем результаты в свойствах электрического щита. В данном примере номер цепи для простоты записывается в параметр "Марка".
5. Осталось проставить марки. Загружаем в проект семейство "Марка щита с номером группы.rfa" и маркируем щиты.
Не нашел год, когда была написана статья, поэтому не знаю, актуально или нет, но у вас в скрипте ошибка. Он работает исходя из предположения, что питающая группа находится последней в списке .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