364 lines
18 KiB
VB.net
364 lines
18 KiB
VB.net
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
|