В предыдущей версии квартирографии не было общей площади без учета летних помещений.
Да бы это исправить , вносим общий параметр для помещений "Площадь квартиры Общая 2"
Далее меняем нашу квартирографию в Dynamo:
1) Копируем все то что было в предыдущей версии и удаляем ноды по переписи всех параметров кроме Площадь квартиры Общая
2) Колдуем надо нодами , подчищаем ненужное
Да бы это исправить , вносим общий параметр для помещений "Площадь квартиры Общая 2"
Далее меняем нашу квартирографию в Dynamo:
1) Копируем все то что было в предыдущей версии и удаляем ноды по переписи всех параметров кроме Площадь квартиры Общая
2) Колдуем надо нодами , подчищаем ненужное
3) Получаем нечто такое
4) Меняем скрипт в Pythone у скопированной и подчищенной части на следующее :
import clr
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
elif uroom.Parameter[parAptTip].AsInteger()==4:#Тип помещения 4
koeff = 0
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
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
elif uroom.Parameter[parAptTip].AsInteger()==4:#Тип помещения 4
koeff = 0
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
5) в ревите у марки скачанной с блога ревит мастер "Марка квартиры 1" меняем среднюю метку на новый параметр " Площадь квартиры Общая 2"
радуемся жизни)