понедельник, 17 августа 2015 г.

Квартирография с 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

 5) в ревите у марки скачанной с блога ревит мастер "Марка квартиры 1" меняем среднюю метку на новый параметр " Площадь квартиры Общая 2" 




радуемся жизни)



Комментариев нет:

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