Module OD Dim T As String = "설정치" Public Sub Setup_Zone9() '//존정보설정 DSET1.tbl_zone.Rows.Clear() If DSET1.tbl_zone.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_zone.Rows.Add(New String() {"0", "(없음)"}) ''1번쨰데이터 (- 9개의 존은 실내존, 북측존, 북동측존, 북서측존, 동측존, 서측존, 남서측존, 남동측존, 남측존, 간접존으로 생성한다) Dim DR1 As DS.tbl_zoneRow = DSET1.tbl_zone.Newtbl_zoneRow '//실내존 DR1.code = "0001" DR1.설명 = "실내존" DR1.침기율 = "0" DR1.프로필 = "" DSET1.tbl_zone.Addtbl_zoneRow(DR1) Dim 층고 As Decimal Try 층고 = DSET1.tbl_Desc.Rows(0)("층고") Catch ex As Exception 층고 = 0 End Try Dim 층수 As Decimal Try 층수 = DSET1.tbl_Desc.Rows(0)("builds2") Catch ex As Exception 층수 = 0 End Try Dim 연면적 As Decimal Try 연면적 = DSET1.tbl_Desc.Rows(0)("buildm23") Catch ex As Exception 연면적 = 0 End Try Dim 천장고 As Decimal Try 천장고 = DSET1.tbl_Desc.Rows(0)("천장고") Catch ex As Exception 천장고 = 0 End Try 'Dim 조명밀도 As Decimal 'Try ' 조명밀도 = 25 'DSET1.tbl_elect.Rows(0)("조명밀도") 'Catch ex As Exception ' 조명밀도 = 0 'End Try Dim 면적의총합 As Decimal = 0 For Each Drz As DS.tbl_zoneRow In DSET1.tbl_zone.Rows '//모든존에 같은 값들은 이곳에다가. Drz.열교가산치 = "내단열" Drz.열저장능력 = "90" '' 실내단말기가 있을경우, 냉난방방식은 냉난방, 공조기기 있으면 냉난방공조는 환기, 외기부하처리여부는 예 //공조기기 없으면 냉난방공조는 기능없음, 외기부하처리여부는 아니오 '' 실내단말기가 없고 공조기기가 있을 경우는 냉난방방식은 기능없음, 냉난방공조는 냉난방, 외기부하처리여부는 아니오 If DSET1.tbl_danmal.Select("code <> '0'").Length > 0 Then Drz.냉난방방식 = "냉난방" If DSET1.tbl_kongjo.Select("code <> '0'").Length > 0 Then Drz.냉난방공조 = "환기" Drz.외기부하처리여부 = "예" Else Drz.냉난방공조 = "기능없음" '//쓰폐이쓰 21102 Drz.외기부하처리여부 = "아니오" End If Else If DSET1.tbl_kongjo.Select("code <> '0'").Length > 0 Then Drz.냉난방방식 = "기능없음" Drz.냉난방공조 = "냉난방" Drz.외기부하처리여부 = "아니오" Else Drz.냉난방방식 = "냉난방" Drz.냉난방공조 = "기능없음" '//쓰폐이쓰 211023 Drz.외기부하처리여부 = "아니오" End If End If Drz.조명부하산출방법 = "입력치" Drz.조명방식 = "없음" Drz.인공광원 = "없음" Drz.프로필 = "0002" '' 면적이 가장 큰 대표 용도가 공동주택, 숙박시설, 의료시설은 야간 및 주말운전방식은 정상가동, 기타 시설은 가동정지 Drz.야간운전방식 = "가동정지" Drz.주말운전방식 = "가동정지" '//시설용도로 그룹을 내서 면접의 합산을 구한다. Dim Grp시설용도 As New Dictionary(Of String, Single) Dim TotalArea As Single = 0 For Each dr As DS.tbl_typeRow In DSET1.tbl_type.Rows If Program = EProgram.총량평가 Then TotalArea += dr.면적 Else TotalArea += dr.세대면적 * dr.세대수 End If If Grp시설용도.ContainsKey(dr.시설용도) Then Dim 기존값 As Single = Grp시설용도.Item(dr.시설용도) If Program = EProgram.총량평가 Then Grp시설용도.Item(dr.시설용도) = 기존값 + dr.면적 Else Grp시설용도.Item(dr.시설용도) = 기존값 + dr.세대면적 * dr.세대수 End If Else If Program = EProgram.총량평가 Then Grp시설용도.Add(dr.시설용도, dr.면적) Else Grp시설용도.Add(dr.시설용도, dr.세대면적 * dr.세대수) End If End If Next '//empty data (code = 0) Dim drprof As DS.tbl_profile_odRow = DSET1.tbl_profile_od.Select("code = '0'")(0) If Program = EProgram.총량평가 Then '//가장큰 용도찾기 Dim 큰용도 As String = "" Dim 큰용도면적 As Single = 0 For Each grpRow As System.Collections.Generic.KeyValuePair(Of String, Single) In Grp시설용도 If grpRow.Value > 큰용도면적 Then 큰용도면적 = grpRow.Value 큰용도 = grpRow.Key End If Next If Not String.IsNullOrEmpty(큰용도) Then Dim mxprof As DS.tbl_profile_odRow = DSET1.tbl_profile_od.Select("code = '" + 큰용도 + "'")(0) drprof.사용시작시간 = mxprof.사용시작시간 drprof.사용종료시간 = mxprof.사용종료시간 drprof.운전시작시간 = mxprof.운전시작시간 drprof.운전종료시간 = mxprof.운전종료시간 drprof.난방설정온도 = mxprof.난방설정온도 drprof.냉방설정온도 = mxprof.냉방설정온도 drprof.야간최저허용온도 = mxprof.야간최저허용온도 drprof.주말최저허용온도 = mxprof.주말최저허용온도 drprof.일일사용시간 = 0 drprof.일일운전시간 = 0 drprof.일일급탕요구량 = 0 drprof.최소도입외기량 = 0 drprof.사람 = 0 drprof.작업보조기기 = 0 drprof.운전시간난방 = 0 drprof.day01 = 0 drprof.day02 = 0 drprof.day03 = 0 drprof.day04 = 0 drprof.day05 = 0 drprof.day06 = 0 drprof.day07 = 0 drprof.day08 = 0 drprof.day09 = 0 drprof.day10 = 0 drprof.day11 = 0 drprof.day12 = 0 For Each grpRow As System.Collections.Generic.KeyValuePair(Of String, Single) In Grp시설용도 Dim multirate As Single = grpRow.Value / TotalArea Dim oneprof As DS.tbl_profile_odRow = DSET1.tbl_profile_od.Select("code = '" + grpRow.Key + "'")(0) drprof.일일사용시간 += TOSG(T, oneprof.일일사용시간) * multirate drprof.일일운전시간 += TOSG(T, oneprof.일일운전시간) * multirate drprof.일일급탕요구량 += TOSG(T, oneprof.일일급탕요구량) * multirate drprof.최소도입외기량 += TOSG(T, oneprof.최소도입외기량) * multirate drprof.사람 += TOSG(T, oneprof.사람) * multirate drprof.작업보조기기 += TOSG(T, oneprof.작업보조기기) * multirate drprof.운전시간난방 += TOSG(T, oneprof.운전시간난방) * multirate drprof.day01 += TOSG(T, oneprof.day01) * multirate drprof.day02 += TOSG(T, oneprof.day02) * multirate drprof.day03 += TOSG(T, oneprof.day03) * multirate drprof.day04 += TOSG(T, oneprof.day04) * multirate drprof.day05 += TOSG(T, oneprof.day05) * multirate drprof.day06 += TOSG(T, oneprof.day06) * multirate drprof.day07 += TOSG(T, oneprof.day07) * multirate drprof.day08 += TOSG(T, oneprof.day08) * multirate drprof.day09 += TOSG(T, oneprof.day09) * multirate drprof.day10 += TOSG(T, oneprof.day10) * multirate drprof.day11 += TOSG(T, oneprof.day11) * multirate drprof.day12 += TOSG(T, oneprof.day12) * multirate Next Else MsgBox("해당 용도를 입력하세요") End If Else '//친환경 프로파일은 5000번 사용함 1706280040 Dim dr5000() As DS.tbl_profile_odRow = DSET1.tbl_profile_od.Select("code = '5000'") If dr5000.Length > 0 Then For Each Col As System.Data.DataColumn In DSET1.tbl_profile_od.Columns If Col.ColumnName.ToUpper() = "CODE" Then Continue For drprof(Col.ColumnName) = dr5000(0)(Col.ColumnName) Next Else MsgBox("프로필(친환경) 자료없음") End If End If drprof.AcceptChanges() Dim 입력면면적 As Decimal = 0 Select Case Drz.설명 Case "실내존" For Each Dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("(건축부위방식 = '외벽' or 건축부위방식='외부창') and (방위='수평' or 방위='일사없음')") Dr면.존분류 = Drz.code Next 입력면면적 = 0 Case "북측존" For Each Dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("(건축부위방식 = '외벽' or 건축부위방식='외부창') and 방위='북'") If IsNumeric(Dr면.건축부위면적) Then 입력면면적 += Dr면.건축부위면적 Dr면.존분류 = Drz.code Next Case "북동측존" For Each Dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("(건축부위방식 = '외벽' or 건축부위방식='외부창') and 방위='북동'") If IsNumeric(Dr면.건축부위면적) Then 입력면면적 += Dr면.건축부위면적 Dr면.존분류 = Drz.code Next Case "북서측존" For Each Dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("(건축부위방식 = '외벽' or 건축부위방식='외부창') and 방위='북서'") If IsNumeric(Dr면.건축부위면적) Then 입력면면적 += Dr면.건축부위면적 Dr면.존분류 = Drz.code Next Case "동측존" For Each Dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("(건축부위방식 = '외벽' or 건축부위방식='외부창') and 방위='동'") If IsNumeric(Dr면.건축부위면적) Then 입력면면적 += Dr면.건축부위면적 Dr면.존분류 = Drz.code Next Case "서측존" For Each Dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("(건축부위방식 = '외벽' or 건축부위방식='외부창') and 방위='서'") If IsNumeric(Dr면.건축부위면적) Then 입력면면적 += Dr면.건축부위면적 Dr면.존분류 = Drz.code Next Case "남동측존" For Each Dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("(건축부위방식 = '외벽' or 건축부위방식='외부창') and 방위='남동'") If IsNumeric(Dr면.건축부위면적) Then 입력면면적 += Dr면.건축부위면적 Dr면.존분류 = Drz.code Next Case "남서측존" For Each Dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("(건축부위방식 = '외벽' or 건축부위방식='외부창') and 방위='남서'") If IsNumeric(Dr면.건축부위면적) Then 입력면면적 += Dr면.건축부위면적 Dr면.존분류 = Drz.code Next Case "남측존" For Each Dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("(건축부위방식 = '외벽' or 건축부위방식='외부창') and 방위='남'") If IsNumeric(Dr면.건축부위면적) Then 입력면면적 += Dr면.건축부위면적 Dr면.존분류 = Drz.code Next Case "간접존" For Each Dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식 = '내벽' or 건축부위방식='내부창'") If IsNumeric(Dr면.건축부위면적) Then 입력면면적 += Dr면.건축부위면적 Dr면.존분류 = Drz.code Next End Select If 층수 <> 0 AndAlso 층고 <> 0 Then If (입력면면적 / (층고 * 층수)) - 5 >= 0 Then Drz.면적 = ((입력면면적 / (층고 * 층수)) - 2.5) * 5 * 층수 Else Drz.면적 = (입력면면적 / (층고 * 층수)) / 2 * 5 * 층수 End If Else Drz.면적 = 0 End If If Drz.설명 <> "실내존" Then 면적의총합 += Drz.면적 Drz.순실체적 = Drz.면적 * 천장고 End If ' Drz.조명에너지부하율입력치 = 조명밀도 Next If 연면적 - 면적의총합 > 0 Then DSET1.tbl_zone.Rows(1)("면적") = 연면적 - 면적의총합 '//실내존의면적 DSET1.tbl_zone.Rows(1)("순실체적") = (연면적 - 면적의총합) * 천장고 Else DSET1.tbl_zone.Rows(1)("면적") = 0 DSET1.tbl_zone.Rows(1)("순실체적") = 0 End If '/////////////////////////////////////////////////////////////////////////// ' 2017. 05.14 수정 '/////////////////////////////////////////////////////////////////////////// Dim dr존0 As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code<>'0'", "code")(0) Dim drDesc As DS.tbl_DescRow = DSET1.tbl_Desc.Rows(0) dr존0.면적 = 0 '//층별개요(신규추가됨) For Each DRType As DS.tbl_typeRow In DSET1.tbl_type.Select("code<>'0'", "code") ' DSET1.tbl_zone.Rows.Count '(3) If Program = EProgram.총량평가 Then dr존0.면적 = TOSG(T, dr존0.면적) + DRType.면적 dr존0.침기율 = 1.5 Else dr존0.면적 = TOSG(T, dr존0.면적) + DRType.세대면적 * DRType.세대수 dr존0.침기율 = 6 End If Next '//천장고 Dim 순실체적 As Double = TOSG(T, dr존0.면적) * TOSG(T, drDesc.천장고) dr존0.순실체적 = 순실체적 dr존0.열교가산치 = "내단열" dr존0.열저장능력 = "90" If Program = EProgram.총량평가 Then dr존0.야간운전방식 = "가동정지" '숙박, 의료, 주택이 주용도인 경우 정상가동 dr존0.주말운전방식 = "가동정지" '숙박, 의료, 주택이 주용도인 경우 정상가동 dr존0.냉난방방식 = "기능없음" dr존0.냉난방공조 = "냉난방" dr존0.외기부하처리여부 = "아니오" '=============2017.12.25 추가 Else dr존0.야간운전방식 = "정상가동" '숙박, 의료, 주택이 주용도인 경우 정상가동 dr존0.주말운전방식 = "정상가동" '숙박, 의료, 주택이 주용도인 경우 정상가동 dr존0.냉난방방식 = "냉난방" dr존0.냉난방공조 = "환기" dr존0.외기부하처리여부 = "아니오" '=============2017.12.25 추가 End If '//조명전력합 Dim 조명면적합 As Double = 0 Dim 조명전력합 As Double = 0 For Each dr As DS.tbl_typeRow In DSET1.tbl_type.Select("code<>'0'", "code") If Program = EProgram.총량평가 Then 조명면적합 += TOSG(T, dr.면적) Else 조명면적합 += TOSG(T, dr.세대면적 * dr.세대수) End If Next For Each dr조명 As DS.tbl_lightRow In DSET1.tbl_light.Select("code<>'0'", "code") '조명면적합 += TOSG(T, dr조명.조명면적) 조명전력합 = 조명전력합 + (TOSG(T, dr조명.조명전력) * TOSG(T, dr조명.대수)) Next If 조명면적합 = 0 Then Log.AppendLine("조명면적합 = 0") dr존0.조명에너지부하율입력치 = 0 Else dr존0.조명에너지부하율입력치 = 조명전력합 / 조명면적합 End If dr존0.EndEdit() DSET1.AcceptChanges() '// End Sub End Module