Files
ECO2-OD/ArinWarev1/Module/OD.vb
raytrace f9b8998cb1 *오타정정
*그래프에 씨오2 항목 추가
2021-10-23 23:31:49 +09:00

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