На днях наш коллега-ревитчик Дмитрий Дмитриев из г. Барнаула на основе видеоурока Алексея Лобанова дополнил скрипт для Dynamo возможностью расчета площадей квартир с учетом коэффициентов (для балконов и лоджий).
Файл с примером Скачать
Марки квартир Скачать
Инструкция по применению
Итак, вы работаете в своем проекте и у вас уже установлен Dynamo. Чтобы дополнение работало, в первую очередь необходимо из файла с примером скопировать в ваш проект параметры проекта:
Для более наглядного представления можно создать цветовую схему, которая будет закрашивать помещения, в зависимости от номера квартиры:
Далее, необходимо назначить помещениям тип (параметр "Тип помещения), для этого была принята следующая условная классификация:
Значение параметра "1" - жилое, "2" - нежилое, "3" - лоджия, "4" - балкон, "5" - общее.
В зависимости от значения этого параметра Dynamo будет считать показатели по квартирам, например, в жилую площадь попадут только помещения типа "1", а помещения типов "3" и "4" будут включаться в общую площадь квартиры с понижающими коэффициентами 0,5 и 0,3 соответственно.
Типы помещений можно заполнить через спецификацию "Имя - Тип помещения", коэффициент площади заполнять не нужно, это сделает Dynamo:
Площади посчитались, осталось разместить марки квартир ("Архитектура"-> "Маркировать помещение"), предварительно загрузив их в свой проект.Типы помещений можно заполнить через спецификацию "Имя - Тип помещения", коэффициент площади заполнять не нужно, это сделает Dynamo:
Можно сделать это и на плане этажа, создав для удобства цветовую схему "Типы помещений".
Параметр "Тип помещения" должен быть заполнен обязательно, иначе Dynamo выдаст ошибку.
Запускаем Dynamo (Надстройки->Dynamo 0.7), открываем скрипт и нажимаем Run.
PS: в данном скрипте площади помещений округляются до двух знаков после запятой, что исключает довольно распространенный случай расхождения суммы площадей помещений и площади квартиры на сотые доли.
Если у Вас есть какие-то замечания или предложения, просьба писать в комментариях.
UPDATE: Ссылка обновлена на квартирографию для Revit 2016 и Dynamo 1.0
Добрый день. Спасибо за вашу квартирографию!
ОтветитьУдалитьВыполнил все по вашей инструкции, но получил не совсем корректный результат. Всем помещениям применен какой-то скрытый коэффициент 10.76. Я его определил поделив площадь с коэффициентом на реальную площадь помещения, при этом коэффициенты для балконов и комнат применены 0,3 и 1 соответственно. Предположил что ошибка может быть в моем файле, открыл ваш файл - Dim Подсчет площадей 16.rvt слегка подвигал стены и запустил расчет в динамо - результат тот же, показатели по квартирам увеличены на коэффициент 10.76
Возможно проблема в том что я использую 8-ой динамо?
Буду признателен за любую подсказку в решении проблемы
Спасибо
Установил динамо 7.4 и все заработало! :)
ОтветитьУдалитьДмитрий, спасибо, что сообщили)) Получается для 8-го динамо надо дописывать скрипт.
УдалитьДобрый день! Проверьте почему у меня не получается ((.
ОтветитьУдалитьВ окошке PythonScript:
Warning: IronPythonEvaluator.EvaluateIronPythonScript operation failed.
Traceback (most recent call last):
File "", line 70, in
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
Добрый день, Азамат! У всех помещений должны быть заполнены параметры "Номер квартиры" и "Тип помещения", и, чтобы не было неразмещенных помещений. Удобнее всего это сделать через спецификацию.
УдалитьЗдравствуйте. Подскажите пожалуйста почему в Dynamo 0.7.4 скрипт работает а в Dynamo 0.8.2 нет?
ОтветитьУдалитьЗдравствуйте! Скажите пожалуйста, будет ли допилен скрипт для ревит 2016 и динамо 0,8,0? Спасибо.
ОтветитьУдалитьЗдравствуйте. В Dynamo 0.8.2 скрипт выдает такую ошибку. В чем может быть проблема?
ОтветитьУдалитьWarning: IronPythonEvaluator.EvaluateIronPythonScript operation failed.
Traceback (most recent call last):
File "", line 22, in
TypeError: expected BuiltInParameter, got str
В строке 22 блока питона, проблемма с типом бутылкового параметра.
УдалитьДобрый день.Большое спасибо за скрипт! Есть пожелание: можно ли как-то выделить студии отдельно от однокомнатных квартир?
ОтветитьУдалитьДобрый день! Надо подумать)
Удалитьа собственно чем марка у студии отличается от 1комнатной?
УдалитьНа Динамо 0.8 действительно скрипт не работает, будем доделывать в ближайшее время)
ОтветитьУдалитьЖдем-не дождемся:)
Удалитьпереписал скрипт немного ) с этим текстом работать будет :
Удалитьimport clr
#Выполнено по уроку Алексея Лобанова:
#http://www.youtube.com/watch?v=CR9CTBNg6Mk
#Выполнил и доработал - Дмитриев Дмитрий, с вопросами и предложениями пишите - dimdiad@mail.ru
#Доработка скрипта - Мария
#Скрипт для Revit 2015 + Dinamo 0.7.3
#Сбор параметров из Revit: Площадь помещения, Тип помещения, Номер квартиры
#Расчет в динамо:
#"Площадь квартиры Общая";
#"Площадь квартиры Жилая";
#"Число комнат";
#"Категория помещения";
#"Коэффициент площади";
#"Площадь с коэффициентом";
#г. Барнаул 2014.11.22
apartNumbers = [] #Массив номеров квартир
aparts = [] #Массив квартир
roomsAreaCoeff = []
roomsAreaMultipliedByCoeff = []
roomsArea = []
#Переменная списка комнат
outRooms=[] #Массив списка комнат на выход
rooms = IN[0]
parAptNumber = IN[1] # № КВАРТИРЫ
parAptTip = IN[2] #Это Тип помещения
roundCount = IN[3] #Это Округление площади
for room in rooms:
uroom = UnwrapElement(room) #Находим нативный элемент комнаты Ревита
aptNum = uroom.Parameter[parAptNumber].AsString()
area = round(uroom.Area*0.0929026438919894,roundCount) #
karea = area #Area multiplied by coefficient
if area:
contains = apartNumbers.IndexOf(aptNum)
koeff = 1
if uroom.Parameter[parAptTip].AsInteger()==5: #Тип помещения 3
koeff = 0
elif uroom.Parameter[parAptTip].AsInteger()==3: #Тип помещения 3
koeff = 0.5
elif uroom.Parameter[parAptTip].AsInteger()==4:#Тип помещения 4
koeff = 0.3
if contains>-1:
if uroom.Parameter[parAptTip].AsInteger()==1: #Тип помещения 1
aparts[contains][0]+=1 #По индексу квартиры добавляем еще одну комнату
aparts[contains][2]+=area #Прибавляем площадь к Жилой площади квартиры
karea = round(koeff *area,roundCount)
aparts[contains][1]+=karea #Прибавляем площадь к Общей площади квартиры
else:
apartNumbers.append(aptNum)
aptRoomsCount = 0
uarea=0
if uroom.Parameter[parAptTip].AsInteger() == 1:
aptRoomsCount = 1
uarea = area
karea = round(koeff *area,roundCount)
aparts.append([aptRoomsCount,karea,uarea])
roomsAreaCoeff.append(koeff);
roomsAreaMultipliedByCoeff.append(karea)
roomsArea.append(area)
for room in rooms:
uroom = UnwrapElement(room)
aptNum = uroom.Parameter[parAptNumber].AsString()
aptPos = apartNumbers.IndexOf(aptNum)
indx = rooms.IndexOf(room)
if aptPos>-1 and uroom.Area:
apt = aparts[aptPos]
outRooms.append([room,aptNum+"_"+str(uroom.Parameter[parAptTip].AsInteger()),
apt[0],apt[1],apt[2],roomsAreaCoeff[indx],roomsAreaMultipliedByCoeff[indx],roomsArea[indx]])
OUT = outRooms
Warning: IronPythonEvaluator.EvaluateIronPythonScript operation failed.
УдалитьFile "", line 37
uroom = UnwrapElement(room) #Находим нативный элемент комнаты Ревита
^
SyntaxError: expected an indented block
выдает
В связке Revit 2015 + Dynamo 0.8.1 покопавшись (благодаря Владу Хон), пришел к тому, что просто достаточно в исходном скрипте (из "Dim Подсчет площадей 16.dyn") во втором блоке "for room in rooms:" удалить деление на 0.09290304 у всех значений. Тогда вроде все работает :)
УдалитьДля Revit 2016 + Dynamo 0.8.1 этот же скрипт выдает ошибку, так-что осталось адаптировать для 2016.
:(. Revit2016 не при делах?. Только начал изучать Dynamo и сразу нужно изучать Phyton? Разве нельзя както проще. Взять параматры у комнат и...
УдалитьПредупреждение:IronPythonEvaluator.EvaluateIronPythonScript операция не выполнена.
УдалитьFile "", line 37
uroom = UnwrapElement(room) #Находим нативный элемент комнаты Ревита
^
SyntaxError: expected an indented block
на динамо 1.0.0.1180 ревит 2016.
ёлки-палки, неужели нигде нет списка изменённых команд от версии к версии ревита (или это в динамо проблема?), чтобы отследить и внести правки?
самая нужная функция сцепление параметров отсутствует в ревите, это вообще косячище разработчиков или задумка для будущ версий, динамо сможет объединить не сколько параметров???
ОтветитьУдалитьМожет.
УдалитьТема ещё живая? Для динамо 9.0 запилили скрипт? А, то что-то не могу найти где скачать 8-ю версию, на офсайте только 9.0
ОтветитьУдалитьНашёл. Не буду даже восьмую скачивать, скачаю 0.7.4 Ссыль на билд кому надо если что http://dynamobuilds.com/
УдалитьА то картография 3.0 платная, а мне сейчас надо. Барыги банчат )))
УдалитьА на 14 ревит файла нет? А то нет возможности ставить 15, нужно подобное на 14 :(
ОтветитьУдалитьСлушайте скрипт просто прелесть!!! спасибо огромное!!)
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьДля 9 Динамо. Первая часть скрипта.
ОтветитьУдалитьПричины обновления:
1. Оператор if не выдаёт -1 при неудачном сравнении. Из-за этого невозможно проверить, задействована ли комната или нет. Удаляем лишние комнаты вручную.
2. Не работает IndexOf. Заменен на index
for room in rooms:
uroom = UnwrapElement(room)
aptNum = uroom.Parameter[parAptNumber].AsString()
area = round(uroom.Parameter["Fläche"].AsDouble()*0.09290304,2)
if aptNum not in apartNumbers: #проверка, есть ли имя квартиры в списке квартир
#Если нет, то создаём имя комнаты в конце списка
apartNumbers.append(aptNum)
#задаём параметры комнат
if uroom.Parameter[parIsUse].AsInteger(): #Если жилая
aptRoomsCount = 1
uarea = area
else: #если не жилая
aptRoomsCount = 0
uarea = 0
aparts.append([aptRoomsCount,area,uarea]) #формируем список-информацию о квартире
else: #имя квартиры уже создано в списке
count = apartNumbers.index(aptNum) #Проверка, на каком месте
if uroom.Parameter[parIsUse].AsInteger(): #Если жилая
aparts[count][0] += 1 #добавление счётчика жилых комнат
aparts[count][2] += area #добавление жилой площади
aparts[count][1] += area #Добавление общей площади
добрый день! не работал раньше ни с многоэтажным жильём, ни с динамо. сейчас скачиваю, опробую ваши скрипты. пока вам вопрос - существует т.н. "шахматка", таблица-спецификация, в которой совмещены поэтажно и посекционно квартиры с номерами квартир по подъезду и копией марки квартиры (кол-во комнат+площади). позволяет ли ваш скрипт создать эту шахматку? или есть какой-то другой способ? (ну кроме ручного, разумеется))
ОтветитьУдалитьхмм... не работает скрипт. динамо 1.0.0.1180 ревит 2016. ошибки в скрипте. возможно, там какие-то команды изменились в новом билде, но как это отследить? не знаю, может, списки изменений есть, или что-то подобное, чтобы разобраться?
УдалитьОкай. Проблема решена для динамо 1.0. По ссылке файл динамо, можно пользоваться.
ОтветитьУдалитьDim Подсчет площадей 2016.dyn - найден на просторах ВК, но выводные параметры были несвязаны
Dim Подсчет площадей 2016 - связанные ноды.dyn - соответственно связаны, готово к употреблению
https://drive.google.com/folderview?id=0BxOxcFPzI2TGbDBXU2U0LWw0TDA&usp=sharing
Спасибо огромное!!! Revit 15 и Динамо стоял 0.7, а тут скачала 1.2, и слетала вся квартирография, все площади увеличились чуть ли не в сто раз, работаю с многоэтажками и очень запаниковала, но благодаря комментам и ссылкам все проблемы решились)
ОтветитьУдалитьДобрый день. Отличный скрипт, но не всегда работает. Почему-то в стандартном шаблоне все работает, а в шаблоне моей фирмы выдает такую ошибку -
ОтветитьУдалитьWarning: IronPythonEvaluator.EvaluateIronPythonScript operation failed.
Traceback (most recent call last):
File "", line 66, in
NameError: name 'koeff' is not defined
Подскажите, из-за чего это может быть?) Я так понимаю проблема с коэффициентом каким-то...
Ипортируйте в проект данные из проекта который идет как шаблон.
УдалитьВам пишут ошибку что нет параметра koeff
а если проект в шаблоне сделан? все перепроверила несколько раз, ревит 2018 динамо 1
УдалитьА ошибка какая?
УдалитьАналогичная ошибка NameError: name 'koeff' is not defined проект сделан в шаблоне АР
ОтветитьУдалитьДобрый день! Сделано все по инструкции, коэффициенты проставились, площади не посчитались в таблице, ошибку не выдает. Как вбить площади в таблицу?
ОтветитьУдалитьrevit 2017 русская версия. Данный скрипт у кого-нибудь работал в этой версии?
ОтветитьУдалитьВсе получилось.
ОтветитьУдалитьЗдравствуйте. Помогите не работпет данный скрипт на ревите 2015. пишет проблемы (Предупреждение:IronPythonEvaluator.EvaluateIronPythonScript операция не выполнена.
ОтветитьУдалитьTraceback (most recent call last):
File "", line 29, in
IndexError: index out of range: 13